Changeset 72442 in webkit


Ignore:
Timestamp:
Nov 19, 2010 2:40:12 PM (13 years ago)
Author:
oliver@apple.com
Message:

2010-11-19 Oliver Hunt <oliver@apple.com>

Reviewed by Geoffrey Garen.

Don't check for constant registers when we can guarantee that the register won't be in the constant pool
https://bugs.webkit.org/show_bug.cgi?id=49814

Add uncheckedR(int) to CallFrame, and replace all the uses of r() with uncheckedR()
when we can guarantee that the register is not referring to a constant.
This makes the interpreter about 0.5% faster, and makes the CallFrame initialisation
logic correct when we're using a faked callframe (as in the case of the globalExec).

  • bytecode/CodeBlock.cpp: (JSC::CodeBlock::createActivation):
  • debugger/DebuggerCallFrame.cpp: (JSC::DebuggerCallFrame::thisObject):
  • interpreter/CallFrame.h: (JSC::ExecState::uncheckedR):
  • interpreter/Interpreter.cpp: (JSC::Interpreter::resolve): (JSC::Interpreter::resolveSkip): (JSC::Interpreter::resolveGlobal): (JSC::Interpreter::resolveGlobalDynamic): (JSC::Interpreter::resolveBase): (JSC::Interpreter::resolveBaseAndProperty): (JSC::Interpreter::callEval): (JSC::Interpreter::unwindCallFrame): (JSC::Interpreter::throwException): (JSC::Interpreter::execute): (JSC::Interpreter::executeCall): (JSC::Interpreter::executeConstruct): (JSC::Interpreter::prepareForRepeatCall): (JSC::Interpreter::createExceptionScope): (JSC::Interpreter::privateExecute):
  • jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION):
  • runtime/JSActivation.cpp: (JSC::JSActivation::argumentsGetter):
Location:
trunk/JavaScriptCore
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r72425 r72442  
     12010-11-19  Oliver Hunt  <oliver@apple.com>
     2
     3        Reviewed by Geoffrey Garen.
     4
     5        Don't check for constant registers when we can guarantee that the register won't be in the constant pool
     6        https://bugs.webkit.org/show_bug.cgi?id=49814
     7
     8        Add uncheckedR(int) to CallFrame, and replace all the uses of r() with uncheckedR()
     9        when we can guarantee that the register is not referring to a constant.
     10        This makes the interpreter about 0.5% faster, and makes the CallFrame initialisation
     11        logic correct when we're using a faked callframe (as in the case of the globalExec).
     12
     13        * bytecode/CodeBlock.cpp:
     14        (JSC::CodeBlock::createActivation):
     15        * debugger/DebuggerCallFrame.cpp:
     16        (JSC::DebuggerCallFrame::thisObject):
     17        * interpreter/CallFrame.h:
     18        (JSC::ExecState::uncheckedR):
     19        * interpreter/Interpreter.cpp:
     20        (JSC::Interpreter::resolve):
     21        (JSC::Interpreter::resolveSkip):
     22        (JSC::Interpreter::resolveGlobal):
     23        (JSC::Interpreter::resolveGlobalDynamic):
     24        (JSC::Interpreter::resolveBase):
     25        (JSC::Interpreter::resolveBaseAndProperty):
     26        (JSC::Interpreter::callEval):
     27        (JSC::Interpreter::unwindCallFrame):
     28        (JSC::Interpreter::throwException):
     29        (JSC::Interpreter::execute):
     30        (JSC::Interpreter::executeCall):
     31        (JSC::Interpreter::executeConstruct):
     32        (JSC::Interpreter::prepareForRepeatCall):
     33        (JSC::Interpreter::createExceptionScope):
     34        (JSC::Interpreter::privateExecute):
     35        * jit/JITStubs.cpp:
     36        (JSC::DEFINE_STUB_FUNCTION):
     37        * runtime/JSActivation.cpp:
     38        (JSC::JSActivation::argumentsGetter):
     39
    1402010-11-19  Steve Falkenburg  <sfalken@apple.com>
    241
  • trunk/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r72127 r72442  
    24472447                        buildConfigurationList = 149C277108902AFE008A9EFC /* Build configuration list for PBXProject "JavaScriptCore" */;
    24482448                        compatibilityVersion = "Xcode 2.4";
     2449                        developmentRegion = English;
    24492450                        hasScannedForEncodings = 1;
    24502451                        knownRegions = (
  • trunk/JavaScriptCore/bytecode/CodeBlock.cpp

    r72360 r72442  
    17001700    ASSERT(codeType() == FunctionCode);
    17011701    ASSERT(needsFullScopeChain());
    1702     ASSERT(!callFrame->r(activationRegister()).jsValue());
     1702    ASSERT(!callFrame->uncheckedR(activationRegister()).jsValue());
    17031703    JSActivation* activation = new (callFrame) JSActivation(callFrame, static_cast<FunctionExecutable*>(ownerExecutable()));
    1704     callFrame->r(activationRegister()) = JSValue(activation);
     1704    callFrame->uncheckedR(activationRegister()) = JSValue(activation);
    17051705    callFrame->setScopeChain(callFrame->scopeChain()->copy()->push(activation));
    17061706}
  • trunk/JavaScriptCore/bytecode/CodeBlock.h

    r72411 r72442  
    681681    }
    682682
     683    inline Register& ExecState::uncheckedR(int index)
     684    {
     685        ASSERT(index < FirstConstantRegisterIndex);
     686        return this[index];
     687    }
     688   
    683689} // namespace JSC
    684690
  • trunk/JavaScriptCore/debugger/DebuggerCallFrame.cpp

    r70703 r72442  
    7777        return 0;
    7878
    79     JSValue thisValue = m_callFrame->r(codeBlock->thisRegister()).jsValue();
     79    JSValue thisValue = m_callFrame->uncheckedR(codeBlock->thisRegister()).jsValue();
    8080    if (!thisValue.isObject())
    8181        return 0;
  • trunk/JavaScriptCore/interpreter/CallFrame.h

    r70703 r72442  
    127127        // Read a register from the codeframe (or constant from the CodeBlock).
    128128        inline Register& r(int);
     129        // Read a register for a non-constant
     130        inline Register& uncheckedR(int);
    129131
    130132        // Access to arguments.
  • trunk/JavaScriptCore/interpreter/Interpreter.cpp

    r72360 r72442  
    111111            if (exceptionValue)
    112112                return false;
    113             callFrame->r(dst) = JSValue(result);
     113            callFrame->uncheckedR(dst) = JSValue(result);
    114114            return true;
    115115        }
     
    134134    ASSERT(skip || !checkTopLevel);
    135135    if (checkTopLevel && skip--) {
    136         if (callFrame->r(codeBlock->activationRegister()).jsValue())
     136        if (callFrame->uncheckedR(codeBlock->activationRegister()).jsValue())
    137137            ++iter;
    138138    }
     
    151151                return false;
    152152            ASSERT(result);
    153             callFrame->r(dst) = JSValue(result);
     153            callFrame->uncheckedR(dst) = JSValue(result);
    154154            return true;
    155155        }
     
    170170
    171171    if (structure == globalObject->structure()) {
    172         callFrame->r(dst) = JSValue(globalObject->getDirectOffset(offset));
     172        callFrame->uncheckedR(dst) = JSValue(globalObject->getDirectOffset(offset));
    173173        return true;
    174174    }
     
    184184            vPC[3] = globalObject->structure();
    185185            vPC[4] = slot.cachedOffset();
    186             callFrame->r(dst) = JSValue(result);
     186            callFrame->uncheckedR(dst) = JSValue(result);
    187187            return true;
    188188        }
     
    191191        if (exceptionValue)
    192192            return false;
    193         callFrame->r(dst) = JSValue(result);
     193        callFrame->uncheckedR(dst) = JSValue(result);
    194194        return true;
    195195    }
     
    217217    ASSERT(skip || !checkTopLevel);
    218218    if (checkTopLevel && skip--) {
    219         if (callFrame->r(codeBlock->activationRegister()).jsValue())
     219        if (callFrame->uncheckedR(codeBlock->activationRegister()).jsValue())
    220220            ++iter;
    221221    }
     
    232232                        return false;
    233233                    ASSERT(result);
    234                     callFrame->r(dst) = JSValue(result);
     234                    callFrame->uncheckedR(dst) = JSValue(result);
    235235                    return true;
    236236                }
     
    247247   
    248248    if (structure == globalObject->structure()) {
    249         callFrame->r(dst) = JSValue(globalObject->getDirectOffset(offset));
    250         ASSERT(callFrame->r(dst).jsValue());
     249        callFrame->uncheckedR(dst) = JSValue(globalObject->getDirectOffset(offset));
     250        ASSERT(callFrame->uncheckedR(dst).jsValue());
    251251        return true;
    252252    }
     
    263263            vPC[4] = slot.cachedOffset();
    264264            ASSERT(result);
    265             callFrame->r(dst) = JSValue(result);
     265            callFrame->uncheckedR(dst) = JSValue(result);
    266266            return true;
    267267        }
     
    271271            return false;
    272272        ASSERT(result);
    273         callFrame->r(dst) = JSValue(result);
     273        callFrame->uncheckedR(dst) = JSValue(result);
    274274        return true;
    275275    }
     
    287287    JSValue result = JSC::resolveBase(callFrame, ident, callFrame->scopeChain(), isStrictPut);
    288288    if (result) {
    289         callFrame->r(dst) = result;
    290         ASSERT(callFrame->r(dst).jsValue());
     289        callFrame->uncheckedR(dst) = result;
     290        ASSERT(callFrame->uncheckedR(dst).jsValue());
    291291    } else
    292292        callFrame->globalData().exception = createErrorForInvalidGlobalAssignment(callFrame, ident.ustring());
     
    318318            if (exceptionValue)
    319319                return false;
    320             callFrame->r(propDst) = JSValue(result);
    321             callFrame->r(baseDst) = JSValue(base);
     320            callFrame->uncheckedR(propDst) = JSValue(result);
     321            callFrame->uncheckedR(baseDst) = JSValue(base);
    322322            return true;
    323323        }
     
    417417        return throwError(callFrame, exceptionValue);
    418418
    419     return callFrame->globalData().interpreter->execute(eval.get(), callFrame, callFrame->r(codeBlock->thisRegister()).jsValue().toThisObject(callFrame), callFrame->registers() - registerFile->start() + registerOffset, scopeChain);
     419    return callFrame->globalData().interpreter->execute(eval.get(), callFrame, callFrame->uncheckedR(codeBlock->thisRegister()).jsValue().toThisObject(callFrame), callFrame->registers() - registerFile->start() + registerOffset, scopeChain);
    420420}
    421421
     
    561561    // If this call frame created an activation or an 'arguments' object, tear it off.
    562562    if (oldCodeBlock->codeType() == FunctionCode && oldCodeBlock->needsFullScopeChain()) {
    563         if (!callFrame->r(oldCodeBlock->activationRegister()).jsValue()) {
     563        if (!callFrame->uncheckedR(oldCodeBlock->activationRegister()).jsValue()) {
    564564            oldCodeBlock->createActivation(callFrame);
    565565            scopeChain = callFrame->scopeChain();
     
    569569        JSActivation* activation = asActivation(scopeChain->object);
    570570        activation->copyRegisters();
    571         if (JSValue arguments = callFrame->r(unmodifiedArgumentsRegister(oldCodeBlock->argumentsRegister())).jsValue()) {
     571        if (JSValue arguments = callFrame->uncheckedR(unmodifiedArgumentsRegister(oldCodeBlock->argumentsRegister())).jsValue()) {
    572572            if (!oldCodeBlock->isStrictMode())
    573573                asArguments(arguments)->setActivation(activation);
    574574        }
    575575    } else if (oldCodeBlock->usesArguments() && !oldCodeBlock->isStrictMode()) {
    576         if (JSValue arguments = callFrame->r(unmodifiedArgumentsRegister(oldCodeBlock->argumentsRegister())).jsValue())
     576        if (JSValue arguments = callFrame->uncheckedR(unmodifiedArgumentsRegister(oldCodeBlock->argumentsRegister())).jsValue())
    577577            asArguments(arguments)->copyRegisters();
    578578    }
     
    712712    int scopeDelta = 0;
    713713    if (!codeBlock->needsFullScopeChain() || codeBlock->codeType() != FunctionCode
    714         || callFrame->r(codeBlock->activationRegister()).jsValue())
     714        || callFrame->uncheckedR(codeBlock->activationRegister()).jsValue())
    715715        scopeDelta = depth(codeBlock, sc) - handler->scopeDepth;
    716716    ASSERT(scopeDelta >= 0);
     
    758758    ASSERT(codeBlock->m_numParameters == 1); // 1 parameter for 'this'.
    759759    newCallFrame->init(codeBlock, 0, scopeChain, CallFrame::noCaller(), codeBlock->m_numParameters, 0);
    760     newCallFrame->r(newCallFrame->hostThisRegister()) = JSValue(thisObj);
     760    newCallFrame->uncheckedR(newCallFrame->hostThisRegister()) = JSValue(thisObj);
    761761
    762762    if (codeBlock->needsFullScopeChain())
     
    811811    CallFrame* newCallFrame = CallFrame::create(oldEnd);
    812812    size_t dst = 0;
    813     newCallFrame->r(0) = thisValue;
     813    newCallFrame->uncheckedR(0) = thisValue;
    814814    ArgList::const_iterator end = args.end();
    815815    for (ArgList::const_iterator it = args.begin(); it != end; ++it)
    816         newCallFrame->r(++dst) = *it;
     816        newCallFrame->uncheckedR(++dst) = *it;
    817817
    818818    if (callType == CallTypeJS) {
     
    903903    ArgList::const_iterator end = args.end();
    904904    for (ArgList::const_iterator it = args.begin(); it != end; ++it)
    905         newCallFrame->r(++dst) = *it;
     905        newCallFrame->uncheckedR(++dst) = *it;
    906906
    907907    if (constructType == ConstructTypeJS) {
     
    10021002    size_t dst = 0;
    10031003    for (int i = 0; i < argc; ++i)
    1004         newCallFrame->r(++dst) = jsUndefined();
     1004        newCallFrame->uncheckedR(++dst) = jsUndefined();
    10051005   
    10061006    JSObject* error = FunctionExecutable->compileForCall(callFrame, scopeChain);
     
    11301130    ASSERT(codeBlock->m_numParameters == 1); // 1 parameter for 'this'.
    11311131    newCallFrame->init(codeBlock, 0, scopeChain, callFrame->addHostCallFrameFlag(), codeBlock->m_numParameters, 0);
    1132     newCallFrame->r(newCallFrame->hostThisRegister()) = JSValue(thisObj);
     1132    newCallFrame->uncheckedR(newCallFrame->hostThisRegister()) = JSValue(thisObj);
    11331133
    11341134    if (codeBlock->needsFullScopeChain())
     
    12051205    JSValue value = callFrame->r(vPC[3].u.operand).jsValue();
    12061206    JSObject* scope = new (callFrame) JSStaticScopeObject(callFrame, property, value, DontDelete);
    1207     callFrame->r(dst) = JSValue(scope);
     1207    callFrame->uncheckedR(dst) = JSValue(scope);
    12081208
    12091209    return callFrame->scopeChain()->push(scope);
     
    15281528        */
    15291529        int dst = vPC[1].u.operand;
    1530         callFrame->r(dst) = JSValue(constructEmptyObject(callFrame));
     1530        callFrame->uncheckedR(dst) = JSValue(constructEmptyObject(callFrame));
    15311531
    15321532        vPC += OPCODE_LENGTH(op_new_object);
     
    15451545        int argCount = vPC[3].u.operand;
    15461546        ArgList args(callFrame->registers() + firstArg, argCount);
    1547         callFrame->r(dst) = JSValue(constructArray(callFrame, args));
     1547        callFrame->uncheckedR(dst) = JSValue(constructArray(callFrame, args));
    15481548
    15491549        vPC += OPCODE_LENGTH(op_new_array);
     
    15591559        int dst = vPC[1].u.operand;
    15601560        int regExp = vPC[2].u.operand;
    1561         callFrame->r(dst) = JSValue(new (globalData) RegExpObject(callFrame->lexicalGlobalObject(), callFrame->scopeChain()->globalObject->regExpStructure(), codeBlock->regexp(regExp)));
     1561        callFrame->uncheckedR(dst) = JSValue(new (globalData) RegExpObject(callFrame->lexicalGlobalObject(), callFrame->scopeChain()->globalObject->regExpStructure(), codeBlock->regexp(regExp)));
    15621562
    15631563        vPC += OPCODE_LENGTH(op_new_regexp);
     
    15721572        int src = vPC[2].u.operand;
    15731573       
    1574         callFrame->r(dst) = callFrame->r(src);
     1574        callFrame->uncheckedR(dst) = callFrame->r(src);
    15751575
    15761576        vPC += OPCODE_LENGTH(op_mov);
     
    15881588        JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue();
    15891589        if (src1.isInt32() && src2.isInt32())
    1590             callFrame->r(dst) = jsBoolean(src1.asInt32() == src2.asInt32());
     1590            callFrame->uncheckedR(dst) = jsBoolean(src1.asInt32() == src2.asInt32());
    15911591        else {
    15921592            JSValue result = jsBoolean(JSValue::equalSlowCase(callFrame, src1, src2));
    15931593            CHECK_FOR_EXCEPTION();
    1594             callFrame->r(dst) = result;
     1594            callFrame->uncheckedR(dst) = result;
    15951595        }
    15961596
     
    16081608
    16091609        if (src.isUndefinedOrNull()) {
    1610             callFrame->r(dst) = jsBoolean(true);
     1610            callFrame->uncheckedR(dst) = jsBoolean(true);
    16111611            vPC += OPCODE_LENGTH(op_eq_null);
    16121612            NEXT_INSTRUCTION();
    16131613        }
    16141614       
    1615         callFrame->r(dst) = jsBoolean(src.isCell() && src.asCell()->structure()->typeInfo().masqueradesAsUndefined());
     1615        callFrame->uncheckedR(dst) = jsBoolean(src.isCell() && src.asCell()->structure()->typeInfo().masqueradesAsUndefined());
    16161616        vPC += OPCODE_LENGTH(op_eq_null);
    16171617        NEXT_INSTRUCTION();
     
    16281628        JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue();
    16291629        if (src1.isInt32() && src2.isInt32())
    1630             callFrame->r(dst) = jsBoolean(src1.asInt32() != src2.asInt32());
     1630            callFrame->uncheckedR(dst) = jsBoolean(src1.asInt32() != src2.asInt32());
    16311631        else {
    16321632            JSValue result = jsBoolean(!JSValue::equalSlowCase(callFrame, src1, src2));
    16331633            CHECK_FOR_EXCEPTION();
    1634             callFrame->r(dst) = result;
     1634            callFrame->uncheckedR(dst) = result;
    16351635        }
    16361636
     
    16481648
    16491649        if (src.isUndefinedOrNull()) {
    1650             callFrame->r(dst) = jsBoolean(false);
     1650            callFrame->uncheckedR(dst) = jsBoolean(false);
    16511651            vPC += OPCODE_LENGTH(op_neq_null);
    16521652            NEXT_INSTRUCTION();
    16531653        }
    16541654       
    1655         callFrame->r(dst) = jsBoolean(!src.isCell() || !src.asCell()->structure()->typeInfo().masqueradesAsUndefined());
     1655        callFrame->uncheckedR(dst) = jsBoolean(!src.isCell() || !src.asCell()->structure()->typeInfo().masqueradesAsUndefined());
    16561656        vPC += OPCODE_LENGTH(op_neq_null);
    16571657        NEXT_INSTRUCTION();
     
    16691669        bool result = JSValue::strictEqual(callFrame, src1, src2);
    16701670        CHECK_FOR_EXCEPTION();
    1671         callFrame->r(dst) = jsBoolean(result);
     1671        callFrame->uncheckedR(dst) = jsBoolean(result);
    16721672
    16731673        vPC += OPCODE_LENGTH(op_stricteq);
     
    16861686        bool result = !JSValue::strictEqual(callFrame, src1, src2);
    16871687        CHECK_FOR_EXCEPTION();
    1688         callFrame->r(dst) = jsBoolean(result);
     1688        callFrame->uncheckedR(dst) = jsBoolean(result);
    16891689
    16901690        vPC += OPCODE_LENGTH(op_nstricteq);
     
    17031703        JSValue result = jsBoolean(jsLess(callFrame, src1, src2));
    17041704        CHECK_FOR_EXCEPTION();
    1705         callFrame->r(dst) = result;
     1705        callFrame->uncheckedR(dst) = result;
    17061706
    17071707        vPC += OPCODE_LENGTH(op_less);
     
    17201720        JSValue result = jsBoolean(jsLessEq(callFrame, src1, src2));
    17211721        CHECK_FOR_EXCEPTION();
    1722         callFrame->r(dst) = result;
     1722        callFrame->uncheckedR(dst) = result;
    17231723
    17241724        vPC += OPCODE_LENGTH(op_lesseq);
     
    17341734        JSValue v = callFrame->r(srcDst).jsValue();
    17351735        if (v.isInt32() && v.asInt32() < INT_MAX)
    1736             callFrame->r(srcDst) = jsNumber(v.asInt32() + 1);
     1736            callFrame->uncheckedR(srcDst) = jsNumber(v.asInt32() + 1);
    17371737        else {
    17381738            JSValue result = jsNumber(v.toNumber(callFrame) + 1);
    17391739            CHECK_FOR_EXCEPTION();
    1740             callFrame->r(srcDst) = result;
     1740            callFrame->uncheckedR(srcDst) = result;
    17411741        }
    17421742
     
    17531753        JSValue v = callFrame->r(srcDst).jsValue();
    17541754        if (v.isInt32() && v.asInt32() > INT_MIN)
    1755             callFrame->r(srcDst) = jsNumber(v.asInt32() - 1);
     1755            callFrame->uncheckedR(srcDst) = jsNumber(v.asInt32() - 1);
    17561756        else {
    17571757            JSValue result = jsNumber(v.toNumber(callFrame) - 1);
    17581758            CHECK_FOR_EXCEPTION();
    1759             callFrame->r(srcDst) = result;
     1759            callFrame->uncheckedR(srcDst) = result;
    17601760        }
    17611761
     
    17741774        JSValue v = callFrame->r(srcDst).jsValue();
    17751775        if (v.isInt32() && v.asInt32() < INT_MAX) {
    1776             callFrame->r(srcDst) = jsNumber(v.asInt32() + 1);
    1777             callFrame->r(dst) = v;
     1776            callFrame->uncheckedR(srcDst) = jsNumber(v.asInt32() + 1);
     1777            callFrame->uncheckedR(dst) = v;
    17781778        } else {
    17791779            JSValue number = callFrame->r(srcDst).jsValue().toJSNumber(callFrame);
    17801780            CHECK_FOR_EXCEPTION();
    1781             callFrame->r(srcDst) = jsNumber(number.uncheckedGetNumber() + 1);
    1782             callFrame->r(dst) = number;
     1781            callFrame->uncheckedR(srcDst) = jsNumber(number.uncheckedGetNumber() + 1);
     1782            callFrame->uncheckedR(dst) = number;
    17831783        }
    17841784
     
    17971797        JSValue v = callFrame->r(srcDst).jsValue();
    17981798        if (v.isInt32() && v.asInt32() > INT_MIN) {
    1799             callFrame->r(srcDst) = jsNumber(v.asInt32() - 1);
    1800             callFrame->r(dst) = v;
     1799            callFrame->uncheckedR(srcDst) = jsNumber(v.asInt32() - 1);
     1800            callFrame->uncheckedR(dst) = v;
    18011801        } else {
    18021802            JSValue number = callFrame->r(srcDst).jsValue().toJSNumber(callFrame);
    18031803            CHECK_FOR_EXCEPTION();
    1804             callFrame->r(srcDst) = jsNumber(number.uncheckedGetNumber() - 1);
    1805             callFrame->r(dst) = number;
     1804            callFrame->uncheckedR(srcDst) = jsNumber(number.uncheckedGetNumber() - 1);
     1805            callFrame->uncheckedR(dst) = number;
    18061806        }
    18071807
     
    18211821
    18221822        if (LIKELY(srcVal.isNumber()))
    1823             callFrame->r(dst) = callFrame->r(src);
     1823            callFrame->uncheckedR(dst) = callFrame->r(src);
    18241824        else {
    18251825            JSValue result = srcVal.toJSNumber(callFrame);
    18261826            CHECK_FOR_EXCEPTION();
    1827             callFrame->r(dst) = result;
     1827            callFrame->uncheckedR(dst) = result;
    18281828        }
    18291829
     
    18401840        JSValue src = callFrame->r(vPC[2].u.operand).jsValue();
    18411841        if (src.isInt32() && (src.asInt32() & 0x7fffffff)) // non-zero and no overflow
    1842             callFrame->r(dst) = jsNumber(-src.asInt32());
     1842            callFrame->uncheckedR(dst) = jsNumber(-src.asInt32());
    18431843        else {
    18441844            JSValue result = jsNumber(-src.toNumber(callFrame));
    18451845            CHECK_FOR_EXCEPTION();
    1846             callFrame->r(dst) = result;
     1846            callFrame->uncheckedR(dst) = result;
    18471847        }
    18481848
     
    18611861        JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue();
    18621862        if (src1.isInt32() && src2.isInt32() && !(src1.asInt32() | (src2.asInt32() & 0xc0000000))) // no overflow
    1863             callFrame->r(dst) = jsNumber(src1.asInt32() + src2.asInt32());
     1863            callFrame->uncheckedR(dst) = jsNumber(src1.asInt32() + src2.asInt32());
    18641864        else {
    18651865            JSValue result = jsAdd(callFrame, src1, src2);
    18661866            CHECK_FOR_EXCEPTION();
    1867             callFrame->r(dst) = result;
     1867            callFrame->uncheckedR(dst) = result;
    18681868        }
    18691869        vPC += OPCODE_LENGTH(op_add);
     
    18801880        JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue();
    18811881        if (src1.isInt32() && src2.isInt32() && !(src1.asInt32() | src2.asInt32() >> 15)) // no overflow
    1882                 callFrame->r(dst) = jsNumber(src1.asInt32() * src2.asInt32());
     1882                callFrame->uncheckedR(dst) = jsNumber(src1.asInt32() * src2.asInt32());
    18831883        else {
    18841884            JSValue result = jsNumber(src1.toNumber(callFrame) * src2.toNumber(callFrame));
    18851885            CHECK_FOR_EXCEPTION();
    1886             callFrame->r(dst) = result;
     1886            callFrame->uncheckedR(dst) = result;
    18871887        }
    18881888
     
    19031903        JSValue result = jsNumber(dividend.toNumber(callFrame) / divisor.toNumber(callFrame));
    19041904        CHECK_FOR_EXCEPTION();
    1905         callFrame->r(dst) = result;
     1905        callFrame->uncheckedR(dst) = result;
    19061906
    19071907        vPC += OPCODE_LENGTH(op_div);
     
    19221922            JSValue result = jsNumber(dividend.asInt32() % divisor.asInt32());
    19231923            ASSERT(result);
    1924             callFrame->r(dst) = result;
     1924            callFrame->uncheckedR(dst) = result;
    19251925            vPC += OPCODE_LENGTH(op_mod);
    19261926            NEXT_INSTRUCTION();
     
    19331933        JSValue result = jsNumber(fmod(d1, d2));
    19341934        CHECK_FOR_EXCEPTION();
    1935         callFrame->r(dst) = result;
     1935        callFrame->uncheckedR(dst) = result;
    19361936        vPC += OPCODE_LENGTH(op_mod);
    19371937        NEXT_INSTRUCTION();
     
    19481948        JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue();
    19491949        if (src1.isInt32() && src2.isInt32() && !(src1.asInt32() | (src2.asInt32() & 0xc0000000))) // no overflow
    1950             callFrame->r(dst) = jsNumber(src1.asInt32() - src2.asInt32());
     1950            callFrame->uncheckedR(dst) = jsNumber(src1.asInt32() - src2.asInt32());
    19511951        else {
    19521952            JSValue result = jsNumber(src1.toNumber(callFrame) - src2.toNumber(callFrame));
    19531953            CHECK_FOR_EXCEPTION();
    1954             callFrame->r(dst) = result;
     1954            callFrame->uncheckedR(dst) = result;
    19551955        }
    19561956        vPC += OPCODE_LENGTH(op_sub);
     
    19691969
    19701970        if (val.isInt32() && shift.isInt32())
    1971             callFrame->r(dst) = jsNumber(val.asInt32() << (shift.asInt32() & 0x1f));
     1971            callFrame->uncheckedR(dst) = jsNumber(val.asInt32() << (shift.asInt32() & 0x1f));
    19721972        else {
    19731973            JSValue result = jsNumber((val.toInt32(callFrame)) << (shift.toUInt32(callFrame) & 0x1f));
    19741974            CHECK_FOR_EXCEPTION();
    1975             callFrame->r(dst) = result;
     1975            callFrame->uncheckedR(dst) = result;
    19761976        }
    19771977
     
    19911991
    19921992        if (val.isInt32() && shift.isInt32())
    1993             callFrame->r(dst) = jsNumber(val.asInt32() >> (shift.asInt32() & 0x1f));
     1993            callFrame->uncheckedR(dst) = jsNumber(val.asInt32() >> (shift.asInt32() & 0x1f));
    19941994        else {
    19951995            JSValue result = jsNumber((val.toInt32(callFrame)) >> (shift.toUInt32(callFrame) & 0x1f));
    19961996            CHECK_FOR_EXCEPTION();
    1997             callFrame->r(dst) = result;
     1997            callFrame->uncheckedR(dst) = result;
    19981998        }
    19991999
     
    20122012        JSValue shift = callFrame->r(vPC[3].u.operand).jsValue();
    20132013        if (val.isUInt32() && shift.isInt32())
    2014             callFrame->r(dst) = jsNumber(val.asInt32() >> (shift.asInt32() & 0x1f));
     2014            callFrame->uncheckedR(dst) = jsNumber(val.asInt32() >> (shift.asInt32() & 0x1f));
    20152015        else {
    20162016            JSValue result = jsNumber((val.toUInt32(callFrame)) >> (shift.toUInt32(callFrame) & 0x1f));
    20172017            CHECK_FOR_EXCEPTION();
    2018             callFrame->r(dst) = result;
     2018            callFrame->uncheckedR(dst) = result;
    20192019        }
    20202020
     
    20332033        JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue();
    20342034        if (src1.isInt32() && src2.isInt32())
    2035             callFrame->r(dst) = jsNumber(src1.asInt32() & src2.asInt32());
     2035            callFrame->uncheckedR(dst) = jsNumber(src1.asInt32() & src2.asInt32());
    20362036        else {
    20372037            JSValue result = jsNumber(src1.toInt32(callFrame) & src2.toInt32(callFrame));
    20382038            CHECK_FOR_EXCEPTION();
    2039             callFrame->r(dst) = result;
     2039            callFrame->uncheckedR(dst) = result;
    20402040        }
    20412041
     
    20542054        JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue();
    20552055        if (src1.isInt32() && src2.isInt32())
    2056             callFrame->r(dst) = jsNumber(src1.asInt32() ^ src2.asInt32());
     2056            callFrame->uncheckedR(dst) = jsNumber(src1.asInt32() ^ src2.asInt32());
    20572057        else {
    20582058            JSValue result = jsNumber(src1.toInt32(callFrame) ^ src2.toInt32(callFrame));
    20592059            CHECK_FOR_EXCEPTION();
    2060             callFrame->r(dst) = result;
     2060            callFrame->uncheckedR(dst) = result;
    20612061        }
    20622062
     
    20752075        JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue();
    20762076        if (src1.isInt32() && src2.isInt32())
    2077             callFrame->r(dst) = jsNumber(src1.asInt32() | src2.asInt32());
     2077            callFrame->uncheckedR(dst) = jsNumber(src1.asInt32() | src2.asInt32());
    20782078        else {
    20792079            JSValue result = jsNumber(src1.toInt32(callFrame) | src2.toInt32(callFrame));
    20802080            CHECK_FOR_EXCEPTION();
    2081             callFrame->r(dst) = result;
     2081            callFrame->uncheckedR(dst) = result;
    20822082        }
    20832083
     
    20942094        JSValue src = callFrame->r(vPC[2].u.operand).jsValue();
    20952095        if (src.isInt32())
    2096             callFrame->r(dst) = jsNumber(~src.asInt32());
     2096            callFrame->uncheckedR(dst) = jsNumber(~src.asInt32());
    20972097        else {
    20982098            JSValue result = jsNumber(~src.toInt32(callFrame));
    20992099            CHECK_FOR_EXCEPTION();
    2100             callFrame->r(dst) = result;
     2100            callFrame->uncheckedR(dst) = result;
    21012101        }
    21022102        vPC += OPCODE_LENGTH(op_bitnot);
     
    21132113        JSValue result = jsBoolean(!callFrame->r(src).jsValue().toBoolean(callFrame));
    21142114        CHECK_FOR_EXCEPTION();
    2115         callFrame->r(dst) = result;
     2115        callFrame->uncheckedR(dst) = result;
    21162116
    21172117        vPC += OPCODE_LENGTH(op_not);
     
    21592159        bool result = asObject(baseVal)->hasInstance(callFrame, callFrame->r(value).jsValue(), callFrame->r(baseProto).jsValue());
    21602160        CHECK_FOR_EXCEPTION();
    2161         callFrame->r(dst) = jsBoolean(result);
     2161        callFrame->uncheckedR(dst) = jsBoolean(result);
    21622162
    21632163        vPC += OPCODE_LENGTH(op_instanceof);
     
    21722172        int dst = vPC[1].u.operand;
    21732173        int src = vPC[2].u.operand;
    2174         callFrame->r(dst) = JSValue(jsTypeStringForValue(callFrame, callFrame->r(src).jsValue()));
     2174        callFrame->uncheckedR(dst) = JSValue(jsTypeStringForValue(callFrame, callFrame->r(src).jsValue()));
    21752175
    21762176        vPC += OPCODE_LENGTH(op_typeof);
     
    21872187        int src = vPC[2].u.operand;
    21882188        JSValue v = callFrame->r(src).jsValue();
    2189         callFrame->r(dst) = jsBoolean(v.isCell() ? v.asCell()->structure()->typeInfo().masqueradesAsUndefined() : v.isUndefined());
     2189        callFrame->uncheckedR(dst) = jsBoolean(v.isCell() ? v.asCell()->structure()->typeInfo().masqueradesAsUndefined() : v.isUndefined());
    21902190
    21912191        vPC += OPCODE_LENGTH(op_is_undefined);
     
    22012201        int dst = vPC[1].u.operand;
    22022202        int src = vPC[2].u.operand;
    2203         callFrame->r(dst) = jsBoolean(callFrame->r(src).jsValue().isBoolean());
     2203        callFrame->uncheckedR(dst) = jsBoolean(callFrame->r(src).jsValue().isBoolean());
    22042204
    22052205        vPC += OPCODE_LENGTH(op_is_boolean);
     
    22152215        int dst = vPC[1].u.operand;
    22162216        int src = vPC[2].u.operand;
    2217         callFrame->r(dst) = jsBoolean(callFrame->r(src).jsValue().isNumber());
     2217        callFrame->uncheckedR(dst) = jsBoolean(callFrame->r(src).jsValue().isNumber());
    22182218
    22192219        vPC += OPCODE_LENGTH(op_is_number);
     
    22292229        int dst = vPC[1].u.operand;
    22302230        int src = vPC[2].u.operand;
    2231         callFrame->r(dst) = jsBoolean(callFrame->r(src).jsValue().isString());
     2231        callFrame->uncheckedR(dst) = jsBoolean(callFrame->r(src).jsValue().isString());
    22322232
    22332233        vPC += OPCODE_LENGTH(op_is_string);
     
    22432243        int dst = vPC[1].u.operand;
    22442244        int src = vPC[2].u.operand;
    2245         callFrame->r(dst) = jsBoolean(jsIsObjectType(callFrame->r(src).jsValue()));
     2245        callFrame->uncheckedR(dst) = jsBoolean(jsIsObjectType(callFrame->r(src).jsValue()));
    22462246
    22472247        vPC += OPCODE_LENGTH(op_is_object);
     
    22572257        int dst = vPC[1].u.operand;
    22582258        int src = vPC[2].u.operand;
    2259         callFrame->r(dst) = jsBoolean(jsIsFunctionType(callFrame->r(src).jsValue()));
     2259        callFrame->uncheckedR(dst) = jsBoolean(jsIsFunctionType(callFrame->r(src).jsValue()));
    22602260
    22612261        vPC += OPCODE_LENGTH(op_is_function);
     
    22852285        uint32_t i;
    22862286        if (propName.getUInt32(i))
    2287             callFrame->r(dst) = jsBoolean(baseObj->hasProperty(callFrame, i));
     2287            callFrame->uncheckedR(dst) = jsBoolean(baseObj->hasProperty(callFrame, i));
    22882288        else {
    22892289            Identifier property(callFrame, propName.toString(callFrame));
    22902290            CHECK_FOR_EXCEPTION();
    2291             callFrame->r(dst) = jsBoolean(baseObj->hasProperty(callFrame, property));
     2291            callFrame->uncheckedR(dst) = jsBoolean(baseObj->hasProperty(callFrame, property));
    22922292        }
    22932293
     
    23652365        int index = vPC[2].u.operand;
    23662366
    2367         callFrame->r(dst) = scope->registerAt(index);
     2367        callFrame->uncheckedR(dst) = scope->registerAt(index);
    23682368        vPC += OPCODE_LENGTH(op_get_global_var);
    23692369        NEXT_INSTRUCTION();
     
    24102410        ASSERT((*iter)->isVariableObject());
    24112411        JSVariableObject* scope = static_cast<JSVariableObject*>(*iter);
    2412         callFrame->r(dst) = scope->registerAt(index);
     2412        callFrame->uncheckedR(dst) = scope->registerAt(index);
    24132413        ASSERT(callFrame->r(dst).jsValue());
    24142414        vPC += OPCODE_LENGTH(op_get_scoped_var);
     
    25132513        tryCacheGetByID(callFrame, codeBlock, vPC, baseValue, ident, slot);
    25142514
    2515         callFrame->r(dst) = result;
     2515        callFrame->uncheckedR(dst) = result;
    25162516        vPC += OPCODE_LENGTH(op_get_by_id);
    25172517        NEXT_INSTRUCTION();
     
    25382538
    25392539                ASSERT(baseObject->get(callFrame, codeBlock->identifier(vPC[3].u.operand)) == baseObject->getDirectOffset(offset));
    2540                 callFrame->r(dst) = JSValue(baseObject->getDirectOffset(offset));
     2540                callFrame->uncheckedR(dst) = JSValue(baseObject->getDirectOffset(offset));
    25412541
    25422542                vPC += OPCODE_LENGTH(op_get_by_id_self);
     
    25732573                    ASSERT(protoObject->get(callFrame, codeBlock->identifier(vPC[3].u.operand)) == protoObject->getDirectOffset(offset));
    25742574                    ASSERT(baseValue.get(callFrame, codeBlock->identifier(vPC[3].u.operand)) == protoObject->getDirectOffset(offset));
    2575                     callFrame->r(dst) = JSValue(protoObject->getDirectOffset(offset));
     2575                    callFrame->uncheckedR(dst) = JSValue(protoObject->getDirectOffset(offset));
    25762576
    25772577                    vPC += OPCODE_LENGTH(op_get_by_id_proto);
     
    26152615                        JSValue result = call(callFrame, getter, callType, callData, asObject(baseCell), ArgList());
    26162616                        CHECK_FOR_EXCEPTION();
    2617                         callFrame->r(dst) = result;
     2617                        callFrame->uncheckedR(dst) = result;
    26182618                    } else
    2619                         callFrame->r(dst) = jsUndefined();
     2619                        callFrame->uncheckedR(dst) = jsUndefined();
    26202620                    vPC += OPCODE_LENGTH(op_get_by_id_getter_proto);
    26212621                    NEXT_INSTRUCTION();
     
    26592659                    JSValue result = getter(callFrame, protoObject, ident);
    26602660                    CHECK_FOR_EXCEPTION();
    2661                     callFrame->r(dst) = result;
     2661                    callFrame->uncheckedR(dst) = result;
    26622662                    vPC += OPCODE_LENGTH(op_get_by_id_custom_proto);
    26632663                    NEXT_INSTRUCTION();
     
    27442744                        ASSERT(baseObject->get(callFrame, codeBlock->identifier(vPC[3].u.operand)) == baseObject->getDirectOffset(offset));
    27452745                        ASSERT(baseValue.get(callFrame, codeBlock->identifier(vPC[3].u.operand)) == baseObject->getDirectOffset(offset));
    2746                         callFrame->r(dst) = JSValue(baseObject->getDirectOffset(offset));
     2746                        callFrame->uncheckedR(dst) = JSValue(baseObject->getDirectOffset(offset));
    27472747
    27482748                        vPC += OPCODE_LENGTH(op_get_by_id_chain);
     
    27882788                    JSValue result = call(callFrame, getter, callType, callData, baseObject, ArgList());
    27892789                    CHECK_FOR_EXCEPTION();
    2790                     callFrame->r(dst) = result;
     2790                    callFrame->uncheckedR(dst) = result;
    27912791                } else
    2792                     callFrame->r(dst) = jsUndefined();
     2792                    callFrame->uncheckedR(dst) = jsUndefined();
    27932793
    27942794                vPC += OPCODE_LENGTH(op_get_by_id_getter_self);
     
    28282828                JSValue result = getter(callFrame, baseValue, ident);
    28292829                CHECK_FOR_EXCEPTION();
    2830                 callFrame->r(dst) = result;
     2830                callFrame->uncheckedR(dst) = result;
    28312831                vPC += OPCODE_LENGTH(op_get_by_id_custom_self);
    28322832                NEXT_INSTRUCTION();
     
    28552855        CHECK_FOR_EXCEPTION();
    28562856
    2857         callFrame->r(dst) = result;
     2857        callFrame->uncheckedR(dst) = result;
    28582858        vPC += OPCODE_LENGTH(op_get_by_id_generic);
    28592859        NEXT_INSTRUCTION();
     
    28962896                            JSValue result = call(callFrame, getter, callType, callData, baseValue, ArgList());
    28972897                            CHECK_FOR_EXCEPTION();
    2898                             callFrame->r(dst) = result;
     2898                            callFrame->uncheckedR(dst) = result;
    28992899                        } else
    2900                             callFrame->r(dst) = jsUndefined();
     2900                            callFrame->uncheckedR(dst) = jsUndefined();
    29012901                        vPC += OPCODE_LENGTH(op_get_by_id_getter_chain);
    29022902                        NEXT_INSTRUCTION();
     
    29502950                        JSValue result = getter(callFrame, baseObject, ident);
    29512951                        CHECK_FOR_EXCEPTION();
    2952                         callFrame->r(dst) = result;
     2952                        callFrame->uncheckedR(dst) = result;
    29532953                        vPC += OPCODE_LENGTH(op_get_by_id_custom_chain);
    29542954                        NEXT_INSTRUCTION();
     
    29782978        if (LIKELY(isJSArray(globalData, baseValue))) {
    29792979            int dst = vPC[1].u.operand;
    2980             callFrame->r(dst) = jsNumber(asArray(baseValue)->length());
     2980            callFrame->uncheckedR(dst) = jsNumber(asArray(baseValue)->length());
    29812981            vPC += OPCODE_LENGTH(op_get_array_length);
    29822982            NEXT_INSTRUCTION();
     
    29982998        if (LIKELY(isJSString(globalData, baseValue))) {
    29992999            int dst = vPC[1].u.operand;
    3000             callFrame->r(dst) = jsNumber(asString(baseValue)->length());
     3000            callFrame->uncheckedR(dst) = jsNumber(asString(baseValue)->length());
    30013001            vPC += OPCODE_LENGTH(op_get_string_length);
    30023002            NEXT_INSTRUCTION();
     
    31733173        }
    31743174        CHECK_FOR_EXCEPTION();
    3175         callFrame->r(dst) = jsBoolean(result);
     3175        callFrame->uncheckedR(dst) = jsBoolean(result);
    31763176        vPC += OPCODE_LENGTH(op_del_by_id);
    31773177        NEXT_INSTRUCTION();
     
    31933193        int offset = 0;
    31943194        if (subscript == expectedSubscript && baseValue.isCell() && (baseValue.asCell()->structure() == it->cachedStructure()) && it->getOffset(index, offset)) {
    3195             callFrame->r(dst) = JSValue(asObject(baseValue)->getDirectOffset(offset));
     3195            callFrame->uncheckedR(dst) = JSValue(asObject(baseValue)->getDirectOffset(offset));
    31963196            vPC += OPCODE_LENGTH(op_get_by_pname);
    31973197            NEXT_INSTRUCTION();
     
    32003200        result = baseValue.get(callFrame, propertyName);
    32013201        CHECK_FOR_EXCEPTION();
    3202         callFrame->r(dst) = result;
     3202        callFrame->uncheckedR(dst) = result;
    32033203        vPC += OPCODE_LENGTH(op_get_by_pname);
    32043204        NEXT_INSTRUCTION();
     
    32143214            JSValue result = arguments.get(callFrame, ident, slot);
    32153215            CHECK_FOR_EXCEPTION();
    3216             callFrame->r(dst) = result;
     3216            callFrame->uncheckedR(dst) = result;
    32173217        } else
    3218             callFrame->r(dst) = jsNumber(callFrame->argumentCount());
     3218            callFrame->uncheckedR(dst) = jsNumber(callFrame->argumentCount());
    32193219
    32203220        vPC += OPCODE_LENGTH(op_get_arguments_length);
     
    32313231            unsigned numParameters = callFrame->codeBlock()->m_numParameters;
    32323232            if (arg < numParameters)
    3233                 callFrame->r(dst) = callFrame->r(arg - RegisterFile::CallFrameHeaderSize - numParameters);
     3233                callFrame->uncheckedR(dst) = callFrame->r(arg - RegisterFile::CallFrameHeaderSize - numParameters);
    32343234            else
    3235                 callFrame->r(dst) = callFrame->r(arg - RegisterFile::CallFrameHeaderSize - numParameters - callFrame->argumentCount() - 1);
     3235                callFrame->uncheckedR(dst) = callFrame->r(arg - RegisterFile::CallFrameHeaderSize - numParameters - callFrame->argumentCount() - 1);
    32363236            vPC += OPCODE_LENGTH(op_get_argument_by_val);
    32373237            NEXT_INSTRUCTION();
     
    32393239        if (!arguments) {
    32403240            Arguments* arguments = new (globalData) Arguments(callFrame);
    3241             callFrame->r(argumentsRegister) = JSValue(arguments);
    3242             callFrame->r(unmodifiedArgumentsRegister(argumentsRegister)) = JSValue(arguments);
     3241            callFrame->uncheckedR(argumentsRegister) = JSValue(arguments);
     3242            callFrame->uncheckedR(unmodifiedArgumentsRegister(argumentsRegister)) = JSValue(arguments);
    32433243        }
    32443244        // fallthrough
     
    32813281
    32823282        CHECK_FOR_EXCEPTION();
    3283         callFrame->r(dst) = result;
     3283        callFrame->uncheckedR(dst) = result;
    32843284        vPC += OPCODE_LENGTH(op_get_by_val);
    32853285        NEXT_INSTRUCTION();
     
    33653365        }
    33663366        CHECK_FOR_EXCEPTION();
    3367         callFrame->r(dst) = jsBoolean(result);
     3367        callFrame->uncheckedR(dst) = jsBoolean(result);
    33683368        vPC += OPCODE_LENGTH(op_del_by_val);
    33693369        NEXT_INSTRUCTION();
     
    37713771        ASSERT(codeBlock->codeType() != FunctionCode || !codeBlock->needsFullScopeChain() || callFrame->r(codeBlock->activationRegister()).jsValue());
    37723772        if (!shouldCheck || !callFrame->r(dst).jsValue())
    3773             callFrame->r(dst) = JSValue(codeBlock->functionDecl(func)->make(callFrame, callFrame->scopeChain()));
     3773            callFrame->uncheckedR(dst) = JSValue(codeBlock->functionDecl(func)->make(callFrame, callFrame->scopeChain()));
    37743774
    37753775        vPC += OPCODE_LENGTH(op_new_func);
     
    38033803        }
    38043804
    3805         callFrame->r(dst) = JSValue(func);
     3805        callFrame->uncheckedR(dst) = JSValue(func);
    38063806
    38073807        vPC += OPCODE_LENGTH(op_new_func_exp);
     
    39993999        }
    40004000        CHECK_FOR_EXCEPTION();
    4001         callFrame->r(argCountDst) = Register::withInt(argCount + 1);
     4001        callFrame->uncheckedR(argCountDst) = Register::withInt(argCount + 1);
    40024002        vPC += OPCODE_LENGTH(op_load_varargs);
    40034003        NEXT_INSTRUCTION();
     
    41694169        */
    41704170
    4171         callFrame->r(vPC[1].u.operand) = functionReturnValue;
     4171        callFrame->uncheckedR(vPC[1].u.operand) = functionReturnValue;
    41724172
    41734173        vPC += OPCODE_LENGTH(op_call_put_result);
     
    42174217        size_t i = 0;
    42184218        for (size_t count = codeBlock->m_numVars; i < count; ++i)
    4219             callFrame->r(i) = jsUndefined();
     4219            callFrame->uncheckedR(i) = jsUndefined();
    42204220
    42214221        vPC += OPCODE_LENGTH(op_enter);
     
    42444244        */
    42454245
    4246         callFrame->r(vPC[1].u.operand) = JSValue(callFrame->callee());
     4246        callFrame->uncheckedR(vPC[1].u.operand) = JSValue(callFrame->callee());
    42474247
    42484248        vPC += OPCODE_LENGTH(op_get_callee);
     
    42734273        else
    42744274            structure = constructor->scope().node()->globalObject->emptyObjectStructure();
    4275         callFrame->r(thisRegister) = JSValue(new (&callFrame->globalData()) JSObject(structure));
     4275        callFrame->uncheckedR(thisRegister) = JSValue(new (&callFrame->globalData()) JSObject(structure));
    42764276
    42774277        vPC += OPCODE_LENGTH(op_create_this);
     
    42934293        JSValue thisVal = callFrame->r(thisRegister).jsValue();
    42944294        if (thisVal.needsThisConversion())
    4295             callFrame->r(thisRegister) = JSValue(thisVal.toThisObject(callFrame));
     4295            callFrame->uncheckedR(thisRegister) = JSValue(thisVal.toThisObject(callFrame));
    42964296
    42974297        vPC += OPCODE_LENGTH(op_convert_this);
     
    43124312        JSValue thisVal = callFrame->r(thisRegister).jsValue();
    43134313        if (thisVal.isObject() && thisVal.needsThisConversion())
    4314             callFrame->r(thisRegister) = JSValue(thisVal.toStrictThisObject(callFrame));
     4314            callFrame->uncheckedR(thisRegister) = JSValue(thisVal.toStrictThisObject(callFrame));
    43154315       
    43164316        vPC += OPCODE_LENGTH(op_convert_this_strict);
     
    43264326        int dst = vPC[1].u.operand;
    43274327
    4328         callFrame->r(dst) = JSValue();
     4328        callFrame->uncheckedR(dst) = JSValue();
    43294329        vPC += OPCODE_LENGTH(op_init_lazy_reg);
    43304330        NEXT_INSTRUCTION();
     
    43424342        if (!callFrame->r(dst).jsValue()) {
    43434343            Arguments* arguments = new (globalData) Arguments(callFrame);
    4344             callFrame->r(dst) = JSValue(arguments);
    4345             callFrame->r(unmodifiedArgumentsRegister(dst)) = JSValue(arguments);
     4344            callFrame->uncheckedR(dst) = JSValue(arguments);
     4345            callFrame->uncheckedR(unmodifiedArgumentsRegister(dst)) = JSValue(arguments);
    43464346        }
    43474347        vPC += OPCODE_LENGTH(op_create_arguments);
     
    44394439        int count = vPC[3].u.operand;
    44404440
    4441         callFrame->r(dst) = concatenateStrings(callFrame, &callFrame->registers()[src], count);
     4441        callFrame->uncheckedR(dst) = concatenateStrings(callFrame, &callFrame->registers()[src], count);
    44424442        CHECK_FOR_EXCEPTION();
    44434443        vPC += OPCODE_LENGTH(op_strcat);
     
    44494449        int src = vPC[2].u.operand;
    44504450
    4451         callFrame->r(dst) = callFrame->r(src).jsValue().toPrimitive(callFrame);
     4451        callFrame->uncheckedR(dst) = callFrame->r(src).jsValue().toPrimitive(callFrame);
    44524452        vPC += OPCODE_LENGTH(op_to_primitive);
    44534453
     
    44664466        CHECK_FOR_EXCEPTION();
    44674467
    4468         callFrame->r(scope) = JSValue(o);
     4468        callFrame->uncheckedR(scope) = JSValue(o);
    44694469        callFrame->setScopeChain(callFrame->scopeChain()->push(o));
    44704470
     
    45074507            jsPropertyNameIterator = JSPropertyNameIterator::create(callFrame, o);
    45084508
    4509         callFrame->r(dst) = jsPropertyNameIterator;
    4510         callFrame->r(base) = JSValue(o);
    4511         callFrame->r(i) = Register::withInt(0);
    4512         callFrame->r(size) = Register::withInt(jsPropertyNameIterator->size());
     4509        callFrame->uncheckedR(dst) = jsPropertyNameIterator;
     4510        callFrame->uncheckedR(base) = JSValue(o);
     4511        callFrame->uncheckedR(i) = Register::withInt(0);
     4512        callFrame->uncheckedR(size) = Register::withInt(jsPropertyNameIterator->size());
    45134513        vPC += OPCODE_LENGTH(op_get_pnames);
    45144514        NEXT_INSTRUCTION();
     
    45334533            JSValue key = it->get(callFrame, asObject(callFrame->r(base).jsValue()), callFrame->r(i).i());
    45344534            CHECK_FOR_EXCEPTION();
    4535             callFrame->r(i) = Register::withInt(callFrame->r(i).i() + 1);
     4535            callFrame->uncheckedR(i) = Register::withInt(callFrame->r(i).i() + 1);
    45364536            if (key) {
    45374537                CHECK_FOR_TIMEOUT();
    4538                 callFrame->r(dst) = key;
     4538                callFrame->uncheckedR(dst) = key;
    45394539                vPC += target;
    45404540                NEXT_INSTRUCTION();
     
    45924592        ASSERT(!globalData->exception);
    45934593        int ex = vPC[1].u.operand;
    4594         callFrame->r(ex) = exceptionValue;
     4594        callFrame->uncheckedR(ex) = exceptionValue;
    45954595        exceptionValue = JSValue();
    45964596
  • trunk/JavaScriptCore/jit/JITStubs.cpp

    r72360 r72442  
    19381938    STUB_INIT_STACK_FRAME(stackFrame);
    19391939   
    1940     ASSERT(stackFrame.callFrame->codeBlock()->codeType() != FunctionCode || !stackFrame.callFrame->codeBlock()->needsFullScopeChain() || stackFrame.callFrame->r(stackFrame.callFrame->codeBlock()->activationRegister()).jsValue());
     1940    ASSERT(stackFrame.callFrame->codeBlock()->codeType() != FunctionCode || !stackFrame.callFrame->codeBlock()->needsFullScopeChain() || stackFrame.callFrame->uncheckedR(stackFrame.callFrame->codeBlock()->activationRegister()).jsValue());
    19411941    return stackFrame.args[0].function()->make(stackFrame.callFrame, stackFrame.callFrame->scopeChain());
    19421942}
     
    27422742    ASSERT(skip || !checkTopLevel);
    27432743    if (checkTopLevel && skip--) {
    2744         if (callFrame->r(codeBlock->activationRegister()).jsValue())
     2744        if (callFrame->uncheckedR(codeBlock->activationRegister()).jsValue())
    27452745            ++iter;
    27462746    }
     
    31043104    FunctionExecutable* function = stackFrame.args[0].function();
    31053105    JSFunction* func = function->make(callFrame, callFrame->scopeChain());
    3106     ASSERT(callFrame->codeBlock()->codeType() != FunctionCode || !callFrame->codeBlock()->needsFullScopeChain() || callFrame->r(callFrame->codeBlock()->activationRegister()).jsValue());
     3106    ASSERT(callFrame->codeBlock()->codeType() != FunctionCode || !callFrame->codeBlock()->needsFullScopeChain() || callFrame->uncheckedR(callFrame->codeBlock()->activationRegister()).jsValue());
    31073107
    31083108    /*
     
    32113211{
    32123212    STUB_INIT_STACK_FRAME(stackFrame);
    3213     ASSERT(stackFrame.callFrame->codeBlock()->codeType() != FunctionCode || !stackFrame.callFrame->codeBlock()->needsFullScopeChain() || stackFrame.callFrame->r(stackFrame.callFrame->codeBlock()->activationRegister()).jsValue());
     3213    ASSERT(stackFrame.callFrame->codeBlock()->codeType() != FunctionCode || !stackFrame.callFrame->codeBlock()->needsFullScopeChain() || stackFrame.callFrame->uncheckedR(stackFrame.callFrame->codeBlock()->activationRegister()).jsValue());
    32143214
    32153215    CallFrame* callFrame = stackFrame.callFrame;
  • trunk/JavaScriptCore/runtime/JSActivation.cpp

    r69516 r72442  
    203203    CallFrame* callFrame = CallFrame::create(activation->d()->registers);
    204204    int argumentsRegister = activation->d()->functionExecutable->generatedBytecode().argumentsRegister();
    205     if (!callFrame->r(argumentsRegister).jsValue()) {
     205    if (!callFrame->uncheckedR(argumentsRegister).jsValue()) {
    206206        JSValue arguments = JSValue(new (callFrame) Arguments(callFrame));
    207         callFrame->r(argumentsRegister) = arguments;
    208         callFrame->r(unmodifiedArgumentsRegister(argumentsRegister)) = arguments;
    209     }
    210 
    211     ASSERT(callFrame->r(argumentsRegister).jsValue().inherits(&Arguments::info));
    212     return callFrame->r(argumentsRegister).jsValue();
     207        callFrame->uncheckedR(argumentsRegister) = arguments;
     208        callFrame->uncheckedR(unmodifiedArgumentsRegister(argumentsRegister)) = arguments;
     209    }
     210
     211    ASSERT(callFrame->uncheckedR(argumentsRegister).jsValue().inherits(&Arguments::info));
     212    return callFrame->uncheckedR(argumentsRegister).jsValue();
    213213}
    214214
Note: See TracChangeset for help on using the changeset viewer.