public override IoObject activate(IoObject sender, IoObject target, IoObject locals, IoMessage m, IoObject slotContext)
{
IoState state = sender.state;
IoBlock self = sender as IoBlock;
IoObjectArrayList argNames = self.argNames;
IoObject scope = self.scope;
IoObject blockLocals = state.localsProto.clone(state);
IoObject result = null;
IoObject callObject = null;
blockLocals.isLocals = true;
if (scope == null)
scope = target;
blockLocals.createSlots();
callObject = IoCall.with(state, locals, target, m, slotContext, self, null/*state.currentCoroutine*/);
IoSeqObjectHashtable bslots = blockLocals.slots;
bslots["call"] = callObject;
bslots["self"] = scope;
bslots["updateSlot"] = state.localsUpdateSlotCFunc;
if (argNames != null)
for (int i = 0; i < argNames.Count; i++)
{
IoSeq name = argNames[i] as IoSeq;
IoObject arg = m.localsValueArgAt(locals, i);
blockLocals.slots[name] = arg;
}
if (self.containedMessage != null)
{
result = self.containedMessage.localsPerformOn(blockLocals, blockLocals);
}
if (self.passStops == IoCallStatus.MESSAGE_STOP_STATUS_NORMAL)
{
}
return result;
}