protected internal override void VisitCastClass(CastClass node, object data) { StackTypes stack = data as StackTypes; Verifier.ProcessCastClass(stack, new TypeEx(node.Type,true) ); AddTask(node.Next,stack); }
protected internal virtual void VisitCastClass(CastClass node, object data) { throw new NodeNotSupportedException(node); }
protected override void VisitCastClass(CastClass upNode, object o) { }
protected override void VisitCastClass(CastClass upNode, object o) { State state = o as State; BTValue val1 = state.Stack.Pop() as BTValue; BTValue val2; if (val1 is ReferenceBTValue) val2 = (val1 as ReferenceBTValue).ToStack(upNode.Type); else val2 = val1; state.Stack.Push(val2); Annotation.SetNodeBTType(upNode, val2.BTType); }
protected internal override void VisitCastClass(CastClass node, object data) { if(node.ThrowException) generator.Emit(OpCodes.Castclass, node.Type); else generator.Emit(OpCodes.Isinst, node.Type); AddTask(node.Next,null); }