internal override void Walk(EmitContext ec) { if (ec.Resolving) { if (recv != null) { recv.Walk(ec); } if (args != null) { args.Walk(ec); } } if (ec.Emitting) { RNArray a = (RNArray)args; // rcver if (recv != null) { recv.Walk(ec); } else { ec.EmitSelf(); } // name ec.EmitString(mid); // args int len = a != null ? a.alen : 0; ec.EmitNewArgArray(len); EmitArgsArray(ec, a); // block if (block != null) { ec.EmitCreateBlock(block); } else { ec.EmitNull(); } ec.EmitSend(); } }
internal override void Walk(EmitContext ec) { if (ec.Resolving) { if (stts != null) { stts.Walk(ec); } } if (ec.Emitting) { // rcver ec.EmitBlockArg(); // thread ec.EmitLoadThread(); // args RNArray a = stts as RNArray; int len = a != null ? a.alen : (stts != null ? 1 : 0); ec.EmitNewArgArray(len); if (a != null) { RNCall.EmitArgsArray(ec, a); } else if (stts != null) { RNCall.EmitStoreArg(ec, 0, stts); } // block ec.EmitNull(); ec.EmitYield(); } }
internal override void Walk(EmitContext ec) { if(ec.Resolving) if(stts != null) stts.Walk(ec); if(ec.Emitting) { // rcver ec.EmitBlockArg(); // thread ec.EmitLoadThread(); // args RNArray a = stts as RNArray; int len = a != null ? a.alen : (stts != null ? 1 : 0); ec.EmitNewArgArray(len); if(a != null) { RNCall.EmitArgsArray(ec, a); } else if(stts != null) { RNCall.EmitStoreArg(ec, 0, stts); } // block ec.EmitNull(); ec.EmitYield(); } }
internal override void Walk(EmitContext ec) { if(ec.Resolving) { if(recv != null) recv.Walk(ec); if(args != null) args.Walk(ec); } if(ec.Emitting) { RNArray a = (RNArray)args; // rcver if(recv != null) { recv.Walk(ec); } else { ec.EmitSelf(); } // name ec.EmitString(mid); // args int len = a != null ? a.alen : 0; ec.EmitNewArgArray(len); EmitArgsArray(ec, a); // block if(block != null) { ec.EmitCreateBlock(block); } else { ec.EmitNull(); } ec.EmitSend(); } }