public localsPerformOn ( |
||
target | ||
locals | ||
return |
public IoObject onDoCStringWithLabel(IoObject target, string code, string label) { IoMessage msg = new IoMessage(); msg = msg.clone(this) as IoMessage; msg = msg.newFromTextLabel(this, code, label); return(msg.localsPerformOn(target, target)); }
public static IoObject slotDo(IoObject target, IoObject locals, IoObject message) { IoMessage m = message as IoMessage; if (m.args.Count != 0) { IoMessage argMessage = m.rawArgAt(0); argMessage.localsPerformOn(target, target); } return(target); }
public static IoObject slotDoMessage(IoObject self, IoObject locals, IoObject m) { IoMessage msg = m as IoMessage; IoMessage aMessage = msg.localsMessageArgAt(locals, 0) as IoMessage; IoObject context = self; if (msg.args.Count >= 2) { context = msg.localsValueArgAt(locals, 1); } return(aMessage.localsPerformOn(context, self)); }
public IoObject localsValueArgAt(IoObject locals, int i) { IoMessage m = i < args.Count ? args[i] as IoMessage : null; //m.async = async; if (m != null) { if (m.cachedResult != null && m.next == null) { return(m.cachedResult); } return(m.localsPerformOn(locals, locals)); } return(this.state.ioNil); }
public static IoObject slotAsyncCall(IoObject target, IoObject locals, IoObject message) { IoMessage msg = message as IoMessage; IoMessage aMessage = msg.rawArgAt(0); IoObject context = target; if (msg.args.Count >= 2) { context = msg.localsValueArgAt(locals, 1); } IoBlock o = target.rawGetSlot(aMessage.messageName) as IoBlock; if (o != null) { IoMessage mmm = o.containedMessage; mmm.async = true; IoContext ctx = new IoContext(); ctx.target = context; ctx.locals = target; ctx.message = mmm; mmm.async = true; IoState state = target.state; IoObject future = IoObject.createObject(state); IEnumerator <IoObject> e = IoMessage.asyncCall(ctx, future); state.contextList.Add(e); return(future); } else { IoCFunction cf = target.rawGetSlot(aMessage.messageName) as IoCFunction; if (cf != null) { cf.async = true; return(cf.activate(target, locals, aMessage, null)); } } return(aMessage.localsPerformOn(target, locals)); }
public IoObject onDoCStringWithLabel(IoObject target, string code, string label) { IoMessage msg = new IoMessage(); msg = msg.clone(this) as IoMessage; msg = msg.newFromTextLabel(this, code, label); return msg.localsPerformOn(target, target); }