void OSR::unboxSlot(FrameState* frameState, MethodEnv* env, Atom *interpFramePointer, FramePtr jitFramePointer, uint8_t* jitFrameTags, int index) { const FrameValue& value = frameState->value(index); Atom atom = interpFramePointer[index]; AvmAssert(isValidAtom(value, atom)); // Unbox the value and store in jit vars[]. AvmAssert(isValidAtom(value, atom)); Atom* addr = (Atom *) ((char *) jitFramePointer + (index << VARSHIFT(env->method))); Traits* type = value.traits; BaseExecMgr::unbox1(atom, type, addr); // Also update the jit's SlotStorageType byte in tags[]. BuiltinType tag = Traits::getBuiltinType(type); SlotStorageType sst = valueStorageType(tag); jitFrameTags[index] = (uint8_t) sst; #ifdef AVMPLUS_VERBOSE if (env->method->pool()->isVerbose(VB_interp)) { env->core()->console << "osr-unbox " << index << " type=" << type << " notnull=" << frameState->value(index).notNull << " value=" << asAtom(atom) << "\n"; } #endif (void)env; }
void Debugger::traceArgumentsString(PrintWriter& prw) { DebugStackFrame* frame = (DebugStackFrame*)frameAt(0); int count; Atom* arr; if (frame && frame->arguments(arr, count)) { for(int i=0; i<count; i++) { prw << asAtom(arr[i]); if (i+1 < count) prw << ","; } } }