__MCScriptUnreachable__("unexpected definition kind for fetch");
break;
}
#ifdef DEBUG_EXECUTION
MCLog("Fetch value %p from definition %@ into register %u", t_value, MCScriptGetNameOfDefinitionInModule(t_instance->module, t_definition), ctxt.GetArgument(0));
#endif
ctxt.CheckedStoreRegister(ctxt.GetArgument(0),
t_value);
}
};
structMCScriptBytecodeOp_Store
{
// store <src-reg>, <index>
//
// Store the value from <src-reg> into the variable definition <index>.
MC_SCRIPT_DEFINE_BYTECODE(Store, "store", "rv")
staticvoidValidate(MCScriptValidateContext& ctxt)
{
ctxt.CheckArity(2);
ctxt.CheckRegister(ctxt.GetArgument(0));
ctxt.CheckVariable(ctxt.GetArgument(1));
}
staticvoidExecute(MCScriptExecuteContext& ctxt)
{
// Resolve the import definition chain for the specified definition.
MCScriptInstanceRef t_instance = nil;
MCScriptDefinition *t_definition = nil;
ctxt.ResolveDefinition(ctxt.GetArgument(1),
t_instance,
t_definition);
MCValueRef t_value =
ctxt.CheckedFetchRegister(ctxt.GetArgument(0));
#ifdef DEBUG_EXECUTION
MCLog("Store value %p from register %u into definition %@", t_value, ctxt.GetArgument(0), MCScriptGetNameOfDefinitionInModule(t_instance->module, t_definition));