Each type of node is assigned a different id to make it easily possible to do a switch over all nodes.
The computational type of the underlying value.
true
if this variable and the given variable use the same location.
Compared to equals
this test does not consider the computational type.
true
if the expression is GUARANTEED to have no externally observable effect if it is
not executed.
true
if the expression is GUARANTEED to have no externally observable effect if it is
not executed. Sideeffect free instructions can be removed if the result of the evaluation
of the expression is not used. For those expressions, which may result in an exception it
has to be guaranteed that the exception is NEVER thrown. For example, a div instruction
is sideeffect free if it is (statically) known that the divisor is always not equal to zero;
otherwise, even if the result value is not used, the expression is not (potentially) side
effect free.
true
if the expression is GUARENTEED to have no side effect other than
wasting some CPU cycles if it is not executed.
A human readable name of the local variable.
A human readable name of the local variable.
Creates a new variable that has the same identifier etc.
Creates a new variable that has the same identifier etc. but an updated computational type.
This operation is not supported for local variables!
The id determines the name of the local variable and is equivalent to "the position of the value on the operand stack" or "-1-(the accessed register)". If the id is Int.MinValue then the variable is an intermediate variable that was artificially generated.