Пример #1
0
    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;
    }
Пример #2
0
 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 << ",";
         }
     }
 }