ASM Bytecode Generation to unwrap Expressions of adv-expr API #94

Merged
CommanderTvis merged 44 commits from adv-expr into adv-expr 2020-06-13 21:07:15 +03:00
4 changed files with 72 additions and 71 deletions
Showing only changes of commit d3d348620a - Show all commits

View File

@ -1,12 +1,13 @@
package scientifik.kmath.asm
import scientifik.kmath.asm.internal.AsmGenerationContext
import scientifik.kmath.ast.MST
import scientifik.kmath.ast.evaluate
import scientifik.kmath.expressions.Expression
import scientifik.kmath.operations.*
@PublishedApi
internal fun buildName(expression: AsmExpression<*>, collision: Int = 0): String {
internal fun buildName(expression: AsmNode<*>, collision: Int = 0): String {
val name = "scientifik.kmath.expressions.generated.AsmCompiledExpression_${expression.hashCode()}_$collision"
try {
@ -19,15 +20,16 @@ internal fun buildName(expression: AsmExpression<*>, collision: Int = 0): String
}
@PublishedApi
internal inline fun <reified T> AsmExpression<T>.compile(algebra: Algebra<T>): Expression<T> {
val ctx = AsmGenerationContext(T::class.java, algebra, buildName(this))
internal inline fun <reified T> AsmNode<T>.compile(algebra: Algebra<T>): Expression<T> {
val ctx =
AsmGenerationContext(T::class.java, algebra, buildName(this))
compile(ctx)
return ctx.generate()
}
inline fun <reified T, A : NumericAlgebra<T>, E : AsmExpressionAlgebra<T, A>> A.asm(
expressionAlgebra: E,
block: E.() -> AsmExpression<T>
block: E.() -> AsmNode<T>
): Expression<T> = expressionAlgebra.block().compile(expressionAlgebra.algebra)
inline fun <reified T, A : NumericAlgebra<T>, E : AsmExpressionAlgebra<T, A>> A.asm(
@ -35,19 +37,19 @@ inline fun <reified T, A : NumericAlgebra<T>, E : AsmExpressionAlgebra<T, A>> A.
ast: MST
): Expression<T> = asm(expressionAlgebra) { evaluate(ast) }
inline fun <reified T, A> A.asmSpace(block: AsmExpressionSpace<T, A>.() -> AsmExpression<T>): Expression<T> where A : NumericAlgebra<T>, A : Space<T> =
inline fun <reified T, A> A.asmSpace(block: AsmExpressionSpace<T, A>.() -> AsmNode<T>): Expression<T> where A : NumericAlgebra<T>, A : Space<T> =
AsmExpressionSpace(this).let { it.block().compile(it.algebra) }
inline fun <reified T, A> A.asmSpace(ast: MST): Expression<T> where A : NumericAlgebra<T>, A : Space<T> =
asmSpace { evaluate(ast) }
inline fun <reified T, A> A.asmRing(block: AsmExpressionRing<T, A>.() -> AsmExpression<T>): Expression<T> where A : NumericAlgebra<T>, A : Ring<T> =
inline fun <reified T, A> A.asmRing(block: AsmExpressionRing<T, A>.() -> AsmNode<T>): Expression<T> where A : NumericAlgebra<T>, A : Ring<T> =
AsmExpressionRing(this).let { it.block().compile(it.algebra) }
inline fun <reified T, A> A.asmRing(ast: MST): Expression<T> where A : NumericAlgebra<T>, A : Ring<T> =
asmRing { evaluate(ast) }
inline fun <reified T, A> A.asmField(block: AsmExpressionField<T, A>.() -> AsmExpression<T>): Expression<T> where A : NumericAlgebra<T>, A : Field<T> =
inline fun <reified T, A> A.asmField(block: AsmExpressionField<T, A>.() -> AsmNode<T>): Expression<T> where A : NumericAlgebra<T>, A : Field<T> =
AsmExpressionField(this).let { it.block().compile(it.algebra) }
inline fun <reified T, A> A.asmField(ast: MST): Expression<T> where A : NumericAlgebra<T>, A : Field<T> =

View File

@ -1,5 +1,6 @@
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
package scientifik.kmath.asm
import scientifik.kmath.asm.internal.AsmGenerationContext
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
import scientifik.kmath.asm.internal.hasSpecific
import scientifik.kmath.asm.internal.optimize
import scientifik.kmath.asm.internal.tryInvokeSpecific
@ -12,25 +13,26 @@ import scientifik.kmath.operations.*
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
*
* @param T the type the stored function returns.
*/
interface AsmExpression<T> {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
abstract class AsmNode<T> internal constructor() {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
/**
* Tries to evaluate this function without its variables. This method is intended for optimization.
*
* @return `null` if the function depends on its variables, the value if the function is a constant.
*/
fun tryEvaluate(): T? = null
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
internal open fun tryEvaluate(): T? = null
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
/**
* Compiles this declaration.
*
* @param gen the target [AsmGenerationContext].
*/
fun compile(gen: AsmGenerationContext<T>)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
@PublishedApi
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
internal abstract fun compile(gen: AsmGenerationContext<T>)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
}
internal class AsmUnaryOperation<T>(private val context: Algebra<T>, private val name: String, expr: AsmExpression<T>) :
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
AsmExpression<T> {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
private val expr: AsmExpression<T> = expr.optimize()
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
internal class AsmUnaryOperation<T>(private val context: Algebra<T>, private val name: String, expr: AsmNode<T>) :
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
AsmNode<T>() {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
private val expr: AsmNode<T> = expr.optimize()
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun tryEvaluate(): T? = context { unaryOperation(name, expr.tryEvaluate() ?: return@context null) }
override fun compile(gen: AsmGenerationContext<T>) {
@ -57,11 +59,11 @@ internal class AsmUnaryOperation<T>(private val context: Algebra<T>, private val
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
internal class AsmBinaryOperation<T>(
private val context: Algebra<T>,
private val name: String,
first: AsmExpression<T>,
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
second: AsmExpression<T>
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
) : AsmExpression<T> {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
private val first: AsmExpression<T> = first.optimize()
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
private val second: AsmExpression<T> = second.optimize()
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
first: AsmNode<T>,
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
second: AsmNode<T>
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
) : AsmNode<T>() {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
private val first: AsmNode<T> = first.optimize()
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
private val second: AsmNode<T> = second.optimize()
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun tryEvaluate(): T? = context {
binaryOperation(
@ -95,23 +97,22 @@ internal class AsmBinaryOperation<T>(
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
}
internal class AsmVariableExpression<T>(private val name: String, private val default: T? = null) :
AsmExpression<T> {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
AsmNode<T>() {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun compile(gen: AsmGenerationContext<T>): Unit = gen.visitLoadFromVariables(name, default)
}
internal class AsmConstantExpression<T>(private val value: T) :
AsmExpression<T> {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
AsmNode<T>() {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun tryEvaluate(): T = value
override fun compile(gen: AsmGenerationContext<T>): Unit = gen.visitLoadFromConstants(value)
}
internal class AsmConstProductExpression<T>(
private val context: Space<T>,
expr: AsmExpression<T>,
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
expr: AsmNode<T>,
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
private val const: Number
) :
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
AsmExpression<T> {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
private val expr: AsmExpression<T> = expr.optimize()
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
) : AsmNode<T>() {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
private val expr: AsmNode<T> = expr.optimize()
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun tryEvaluate(): T? = context { (expr.tryEvaluate() ?: return@context null) * const }
@ -131,7 +132,7 @@ internal class AsmConstProductExpression<T>(
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
}
internal class AsmNumberExpression<T>(private val context: NumericAlgebra<T>, private val value: Number) :
AsmExpression<T> {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
AsmNode<T>() {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun tryEvaluate(): T? = context.number(value)
override fun compile(gen: AsmGenerationContext<T>): Unit = gen.visitNumberConstant(value)
@ -145,10 +146,10 @@ internal abstract class FunctionalCompiledExpression<T> internal constructor(
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
}
/**
* A context class for [AsmExpression] construction.
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
* A context class for [AsmNode] construction.
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
*/
interface AsmExpressionAlgebra<T, A : NumericAlgebra<T>> : NumericAlgebra<AsmExpression<T>>,
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
ExpressionAlgebra<T, AsmExpression<T>> {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
interface AsmExpressionAlgebra<T, A : NumericAlgebra<T>> : NumericAlgebra<AsmNode<T>>,
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
ExpressionAlgebra<T, AsmNode<T>> {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
/**
* The algebra to provide for AsmExpressions built.
*/
@ -157,108 +158,108 @@ interface AsmExpressionAlgebra<T, A : NumericAlgebra<T>> : NumericAlgebra<AsmExp
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
/**
* Builds an AsmExpression to wrap a number.
*/
override fun number(value: Number): AsmExpression<T> = AsmNumberExpression(algebra, value)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun number(value: Number): AsmNode<T> = AsmNumberExpression(algebra, value)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
/**
* Builds an AsmExpression of constant expression which does not depend on arguments.
*/
override fun const(value: T): AsmExpression<T> = AsmConstantExpression(value)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun const(value: T): AsmNode<T> = AsmConstantExpression(value)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
/**
* Builds an AsmExpression to access a variable.
*/
override fun variable(name: String, default: T?): AsmExpression<T> = AsmVariableExpression(name, default)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun variable(name: String, default: T?): AsmNode<T> = AsmVariableExpression(name, default)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
/**
* Builds an AsmExpression of dynamic call of binary operation [operation] on [left] and [right].
*/
override fun binaryOperation(operation: String, left: AsmExpression<T>, right: AsmExpression<T>): AsmExpression<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun binaryOperation(operation: String, left: AsmNode<T>, right: AsmNode<T>): AsmNode<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
AsmBinaryOperation(algebra, operation, left, right)
/**
* Builds an AsmExpression of dynamic call of unary operation with name [operation] on [arg].
*/
override fun unaryOperation(operation: String, arg: AsmExpression<T>): AsmExpression<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun unaryOperation(operation: String, arg: AsmNode<T>): AsmNode<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
AsmUnaryOperation(algebra, operation, arg)
}
/**
* A context class for [AsmExpression] construction for [Space] algebras.
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
* A context class for [AsmNode] construction for [Space] algebras.
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
*/
open class AsmExpressionSpace<T, A>(override val algebra: A) : AsmExpressionAlgebra<T, A>,
Space<AsmExpression<T>> where A : Space<T>, A : NumericAlgebra<T> {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override val zero: AsmExpression<T>
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
Space<AsmNode<T>> where A : Space<T>, A : NumericAlgebra<T> {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override val zero: AsmNode<T>
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
get() = const(algebra.zero)
/**
* Builds an AsmExpression of addition of two another expressions.
*/
override fun add(a: AsmExpression<T>, b: AsmExpression<T>): AsmExpression<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun add(a: AsmNode<T>, b: AsmNode<T>): AsmNode<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
AsmBinaryOperation(algebra, SpaceOperations.PLUS_OPERATION, a, b)
/**
* Builds an AsmExpression of multiplication of expression by number.
*/
override fun multiply(a: AsmExpression<T>, k: Number): AsmExpression<T> = AsmConstProductExpression(algebra, a, k)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun multiply(a: AsmNode<T>, k: Number): AsmNode<T> = AsmConstProductExpression(algebra, a, k)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
operator fun AsmExpression<T>.plus(arg: T): AsmExpression<T> = this + const(arg)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
operator fun AsmExpression<T>.minus(arg: T): AsmExpression<T> = this - const(arg)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
operator fun T.plus(arg: AsmExpression<T>): AsmExpression<T> = arg + this
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
operator fun T.minus(arg: AsmExpression<T>): AsmExpression<T> = arg - this
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
operator fun AsmNode<T>.plus(arg: T): AsmNode<T> = this + const(arg)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
operator fun AsmNode<T>.minus(arg: T): AsmNode<T> = this - const(arg)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
operator fun T.plus(arg: AsmNode<T>): AsmNode<T> = arg + this
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
operator fun T.minus(arg: AsmNode<T>): AsmNode<T> = arg - this
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun unaryOperation(operation: String, arg: AsmExpression<T>): AsmExpression<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun unaryOperation(operation: String, arg: AsmNode<T>): AsmNode<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
super<AsmExpressionAlgebra>.unaryOperation(operation, arg)
override fun binaryOperation(operation: String, left: AsmExpression<T>, right: AsmExpression<T>): AsmExpression<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun binaryOperation(operation: String, left: AsmNode<T>, right: AsmNode<T>): AsmNode<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
super<AsmExpressionAlgebra>.binaryOperation(operation, left, right)
}
/**
* A context class for [AsmExpression] construction for [Ring] algebras.
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
* A context class for [AsmNode] construction for [Ring] algebras.
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
*/
open class AsmExpressionRing<T, A>(override val algebra: A) : AsmExpressionSpace<T, A>(algebra),
Ring<AsmExpression<T>> where A : Ring<T>, A : NumericAlgebra<T> {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override val one: AsmExpression<T>
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
Ring<AsmNode<T>> where A : Ring<T>, A : NumericAlgebra<T> {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override val one: AsmNode<T>
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
get() = const(algebra.one)
/**
* Builds an AsmExpression of multiplication of two expressions.
*/
override fun multiply(a: AsmExpression<T>, b: AsmExpression<T>): AsmExpression<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun multiply(a: AsmNode<T>, b: AsmNode<T>): AsmNode<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
AsmBinaryOperation(algebra, RingOperations.TIMES_OPERATION, a, b)
operator fun AsmExpression<T>.times(arg: T): AsmExpression<T> = this * const(arg)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
operator fun T.times(arg: AsmExpression<T>): AsmExpression<T> = arg * this
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
operator fun AsmNode<T>.times(arg: T): AsmNode<T> = this * const(arg)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
operator fun T.times(arg: AsmNode<T>): AsmNode<T> = arg * this
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun unaryOperation(operation: String, arg: AsmExpression<T>): AsmExpression<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun unaryOperation(operation: String, arg: AsmNode<T>): AsmNode<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
super<AsmExpressionSpace>.unaryOperation(operation, arg)
override fun binaryOperation(operation: String, left: AsmExpression<T>, right: AsmExpression<T>): AsmExpression<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun binaryOperation(operation: String, left: AsmNode<T>, right: AsmNode<T>): AsmNode<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
super<AsmExpressionSpace>.binaryOperation(operation, left, right)
override fun number(value: Number): AsmExpression<T> = super<AsmExpressionSpace>.number(value)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun number(value: Number): AsmNode<T> = super<AsmExpressionSpace>.number(value)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
}
/**
* A context class for [AsmExpression] construction for [Field] algebras.
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
* A context class for [AsmNode] construction for [Field] algebras.
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
*/
open class AsmExpressionField<T, A>(override val algebra: A) :
AsmExpressionRing<T, A>(algebra),
Field<AsmExpression<T>> where A : Field<T>, A : NumericAlgebra<T> {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
Field<AsmNode<T>> where A : Field<T>, A : NumericAlgebra<T> {
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
/**
* Builds an AsmExpression of division an expression by another one.
*/
override fun divide(a: AsmExpression<T>, b: AsmExpression<T>): AsmExpression<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun divide(a: AsmNode<T>, b: AsmNode<T>): AsmNode<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
AsmBinaryOperation(algebra, FieldOperations.DIV_OPERATION, a, b)
operator fun AsmExpression<T>.div(arg: T): AsmExpression<T> = this / const(arg)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
operator fun T.div(arg: AsmExpression<T>): AsmExpression<T> = arg / this
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
operator fun AsmNode<T>.div(arg: T): AsmNode<T> = this / const(arg)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
operator fun T.div(arg: AsmNode<T>): AsmNode<T> = arg / this
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun unaryOperation(operation: String, arg: AsmExpression<T>): AsmExpression<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun unaryOperation(operation: String, arg: AsmNode<T>): AsmNode<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
super<AsmExpressionRing>.unaryOperation(operation, arg)
override fun binaryOperation(operation: String, left: AsmExpression<T>, right: AsmExpression<T>): AsmExpression<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun binaryOperation(operation: String, left: AsmNode<T>, right: AsmNode<T>): AsmNode<T> =
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
super<AsmExpressionRing>.binaryOperation(operation, left, right)
override fun number(value: Number): AsmExpression<T> = super<AsmExpressionRing>.number(value)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
override fun number(value: Number): AsmNode<T> = super<AsmExpressionRing>.number(value)
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
}

altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 19:27:11 +03:00 (Migrated from github.com)
Review

Add documentation since the interface is public.

Add documentation since the interface is public.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
altavir commented 2020-06-13 20:02:04 +03:00 (Migrated from github.com)
Review

does it make sense to do invoke without operator? It seems that it should be renamed to compile. Those method need to be documented as well.

does it make sense to do invoke without `operator`? It seems that it should be renamed to `compile`. Those method need to be documented as well.
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:12 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
CommanderTvis commented 2020-06-13 20:03:14 +03:00 (Migrated from github.com)
Review

OK

OK
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.
altavir commented 2020-06-13 20:05:35 +03:00 (Migrated from github.com)
Review

It seems like compile is a better name.

It seems like `compile` is a better name.

View File

@ -1,17 +1,15 @@
package scientifik.kmath.asm
package scientifik.kmath.asm.internal
import org.objectweb.asm.ClassWriter
import org.objectweb.asm.Label
import org.objectweb.asm.MethodVisitor
import org.objectweb.asm.Opcodes
import scientifik.kmath.asm.AsmGenerationContext.ClassLoader
import scientifik.kmath.asm.internal.visitLdcOrDConstInsn
import scientifik.kmath.asm.internal.visitLdcOrFConstInsn
import scientifik.kmath.asm.internal.visitLdcOrIConstInsn
import scientifik.kmath.asm.FunctionalCompiledExpression
import scientifik.kmath.asm.internal.AsmGenerationContext.ClassLoader
import scientifik.kmath.operations.Algebra
/**
* AsmGenerationContext is a structure that abstracts building a class that unwraps [AsmExpression] to plain Java
* AsmGenerationContext is a structure that abstracts building a class that unwraps [AsmNode] to plain Java
* expression. This class uses [ClassLoader] for loading the generated class, then it is able to instantiate the new
* class.
*
@ -19,7 +17,8 @@ import scientifik.kmath.operations.Algebra
* @param algebra the algebra the applied AsmExpressions use.
* @param className the unique class name of new loaded class.
*/
class AsmGenerationContext<T> @PublishedApi internal constructor(
@PublishedApi
internal class AsmGenerationContext<T> @PublishedApi internal constructor(
private val classOfT: Class<*>,
private val algebra: Algebra<T>,
private val className: String

View File

@ -2,8 +2,7 @@ package scientifik.kmath.asm.internal
import org.objectweb.asm.Opcodes
import scientifik.kmath.asm.AsmConstantExpression
import scientifik.kmath.asm.AsmExpression
import scientifik.kmath.asm.AsmGenerationContext
import scientifik.kmath.asm.AsmNode
import scientifik.kmath.operations.Algebra
private val methodNameAdapters: Map<String, String> = mapOf("+" to "add", "*" to "multiply", "/" to "divide")
@ -44,7 +43,7 @@ internal fun <T> AsmGenerationContext<T>.tryInvokeSpecific(context: Algebra<T>,
}
@PublishedApi
internal fun <T> AsmExpression<T>.optimize(): AsmExpression<T> {
internal fun <T> AsmNode<T>.optimize(): AsmNode<T> {
val a = tryEvaluate()
return if (a == null) this else AsmConstantExpression(a)
}