public StackFieldExpr (Field field)
: base (field, Location.Null)
{
+ AutomaticallyReuse = true;
}
+ public bool AutomaticallyReuse { get; set; }
+
public bool IsAvailableForReuse {
get {
var field = (Field) spec.MemberDefinition;
return field.IsAvailableForReuse;
}
- set {
+ private set {
var field = (Field) spec.MemberDefinition;
field.IsAvailableForReuse = value;
}
{
base.AddressOf (ec, mode);
- if (mode == AddressOp.Load) {
+ if (mode == AddressOp.Load && AutomaticallyReuse) {
IsAvailableForReuse = true;
}
}
{
base.Emit (ec);
- PrepareCleanup (ec);
+ if (AutomaticallyReuse)
+ PrepareCleanup (ec);
}
public void EmitLoad (EmitContext ec)