Changeset 72442 in webkit
- Timestamp:
- Nov 19, 2010 2:40:12 PM (13 years ago)
- Location:
- trunk/JavaScriptCore
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/ChangeLog
r72425 r72442 1 2010-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 1 40 2010-11-19 Steve Falkenburg <sfalken@apple.com> 2 41 -
trunk/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
r72127 r72442 2447 2447 buildConfigurationList = 149C277108902AFE008A9EFC /* Build configuration list for PBXProject "JavaScriptCore" */; 2448 2448 compatibilityVersion = "Xcode 2.4"; 2449 developmentRegion = English; 2449 2450 hasScannedForEncodings = 1; 2450 2451 knownRegions = ( -
trunk/JavaScriptCore/bytecode/CodeBlock.cpp
r72360 r72442 1700 1700 ASSERT(codeType() == FunctionCode); 1701 1701 ASSERT(needsFullScopeChain()); 1702 ASSERT(!callFrame-> r(activationRegister()).jsValue());1702 ASSERT(!callFrame->uncheckedR(activationRegister()).jsValue()); 1703 1703 JSActivation* activation = new (callFrame) JSActivation(callFrame, static_cast<FunctionExecutable*>(ownerExecutable())); 1704 callFrame-> r(activationRegister()) = JSValue(activation);1704 callFrame->uncheckedR(activationRegister()) = JSValue(activation); 1705 1705 callFrame->setScopeChain(callFrame->scopeChain()->copy()->push(activation)); 1706 1706 } -
trunk/JavaScriptCore/bytecode/CodeBlock.h
r72411 r72442 681 681 } 682 682 683 inline Register& ExecState::uncheckedR(int index) 684 { 685 ASSERT(index < FirstConstantRegisterIndex); 686 return this[index]; 687 } 688 683 689 } // namespace JSC 684 690 -
trunk/JavaScriptCore/debugger/DebuggerCallFrame.cpp
r70703 r72442 77 77 return 0; 78 78 79 JSValue thisValue = m_callFrame-> r(codeBlock->thisRegister()).jsValue();79 JSValue thisValue = m_callFrame->uncheckedR(codeBlock->thisRegister()).jsValue(); 80 80 if (!thisValue.isObject()) 81 81 return 0; -
trunk/JavaScriptCore/interpreter/CallFrame.h
r70703 r72442 127 127 // Read a register from the codeframe (or constant from the CodeBlock). 128 128 inline Register& r(int); 129 // Read a register for a non-constant 130 inline Register& uncheckedR(int); 129 131 130 132 // Access to arguments. -
trunk/JavaScriptCore/interpreter/Interpreter.cpp
r72360 r72442 111 111 if (exceptionValue) 112 112 return false; 113 callFrame-> r(dst) = JSValue(result);113 callFrame->uncheckedR(dst) = JSValue(result); 114 114 return true; 115 115 } … … 134 134 ASSERT(skip || !checkTopLevel); 135 135 if (checkTopLevel && skip--) { 136 if (callFrame-> r(codeBlock->activationRegister()).jsValue())136 if (callFrame->uncheckedR(codeBlock->activationRegister()).jsValue()) 137 137 ++iter; 138 138 } … … 151 151 return false; 152 152 ASSERT(result); 153 callFrame-> r(dst) = JSValue(result);153 callFrame->uncheckedR(dst) = JSValue(result); 154 154 return true; 155 155 } … … 170 170 171 171 if (structure == globalObject->structure()) { 172 callFrame-> r(dst) = JSValue(globalObject->getDirectOffset(offset));172 callFrame->uncheckedR(dst) = JSValue(globalObject->getDirectOffset(offset)); 173 173 return true; 174 174 } … … 184 184 vPC[3] = globalObject->structure(); 185 185 vPC[4] = slot.cachedOffset(); 186 callFrame-> r(dst) = JSValue(result);186 callFrame->uncheckedR(dst) = JSValue(result); 187 187 return true; 188 188 } … … 191 191 if (exceptionValue) 192 192 return false; 193 callFrame-> r(dst) = JSValue(result);193 callFrame->uncheckedR(dst) = JSValue(result); 194 194 return true; 195 195 } … … 217 217 ASSERT(skip || !checkTopLevel); 218 218 if (checkTopLevel && skip--) { 219 if (callFrame-> r(codeBlock->activationRegister()).jsValue())219 if (callFrame->uncheckedR(codeBlock->activationRegister()).jsValue()) 220 220 ++iter; 221 221 } … … 232 232 return false; 233 233 ASSERT(result); 234 callFrame-> r(dst) = JSValue(result);234 callFrame->uncheckedR(dst) = JSValue(result); 235 235 return true; 236 236 } … … 247 247 248 248 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()); 251 251 return true; 252 252 } … … 263 263 vPC[4] = slot.cachedOffset(); 264 264 ASSERT(result); 265 callFrame-> r(dst) = JSValue(result);265 callFrame->uncheckedR(dst) = JSValue(result); 266 266 return true; 267 267 } … … 271 271 return false; 272 272 ASSERT(result); 273 callFrame-> r(dst) = JSValue(result);273 callFrame->uncheckedR(dst) = JSValue(result); 274 274 return true; 275 275 } … … 287 287 JSValue result = JSC::resolveBase(callFrame, ident, callFrame->scopeChain(), isStrictPut); 288 288 if (result) { 289 callFrame-> r(dst) = result;290 ASSERT(callFrame-> r(dst).jsValue());289 callFrame->uncheckedR(dst) = result; 290 ASSERT(callFrame->uncheckedR(dst).jsValue()); 291 291 } else 292 292 callFrame->globalData().exception = createErrorForInvalidGlobalAssignment(callFrame, ident.ustring()); … … 318 318 if (exceptionValue) 319 319 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); 322 322 return true; 323 323 } … … 417 417 return throwError(callFrame, exceptionValue); 418 418 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); 420 420 } 421 421 … … 561 561 // If this call frame created an activation or an 'arguments' object, tear it off. 562 562 if (oldCodeBlock->codeType() == FunctionCode && oldCodeBlock->needsFullScopeChain()) { 563 if (!callFrame-> r(oldCodeBlock->activationRegister()).jsValue()) {563 if (!callFrame->uncheckedR(oldCodeBlock->activationRegister()).jsValue()) { 564 564 oldCodeBlock->createActivation(callFrame); 565 565 scopeChain = callFrame->scopeChain(); … … 569 569 JSActivation* activation = asActivation(scopeChain->object); 570 570 activation->copyRegisters(); 571 if (JSValue arguments = callFrame-> r(unmodifiedArgumentsRegister(oldCodeBlock->argumentsRegister())).jsValue()) {571 if (JSValue arguments = callFrame->uncheckedR(unmodifiedArgumentsRegister(oldCodeBlock->argumentsRegister())).jsValue()) { 572 572 if (!oldCodeBlock->isStrictMode()) 573 573 asArguments(arguments)->setActivation(activation); 574 574 } 575 575 } 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()) 577 577 asArguments(arguments)->copyRegisters(); 578 578 } … … 712 712 int scopeDelta = 0; 713 713 if (!codeBlock->needsFullScopeChain() || codeBlock->codeType() != FunctionCode 714 || callFrame-> r(codeBlock->activationRegister()).jsValue())714 || callFrame->uncheckedR(codeBlock->activationRegister()).jsValue()) 715 715 scopeDelta = depth(codeBlock, sc) - handler->scopeDepth; 716 716 ASSERT(scopeDelta >= 0); … … 758 758 ASSERT(codeBlock->m_numParameters == 1); // 1 parameter for 'this'. 759 759 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); 761 761 762 762 if (codeBlock->needsFullScopeChain()) … … 811 811 CallFrame* newCallFrame = CallFrame::create(oldEnd); 812 812 size_t dst = 0; 813 newCallFrame-> r(0) = thisValue;813 newCallFrame->uncheckedR(0) = thisValue; 814 814 ArgList::const_iterator end = args.end(); 815 815 for (ArgList::const_iterator it = args.begin(); it != end; ++it) 816 newCallFrame-> r(++dst) = *it;816 newCallFrame->uncheckedR(++dst) = *it; 817 817 818 818 if (callType == CallTypeJS) { … … 903 903 ArgList::const_iterator end = args.end(); 904 904 for (ArgList::const_iterator it = args.begin(); it != end; ++it) 905 newCallFrame-> r(++dst) = *it;905 newCallFrame->uncheckedR(++dst) = *it; 906 906 907 907 if (constructType == ConstructTypeJS) { … … 1002 1002 size_t dst = 0; 1003 1003 for (int i = 0; i < argc; ++i) 1004 newCallFrame-> r(++dst) = jsUndefined();1004 newCallFrame->uncheckedR(++dst) = jsUndefined(); 1005 1005 1006 1006 JSObject* error = FunctionExecutable->compileForCall(callFrame, scopeChain); … … 1130 1130 ASSERT(codeBlock->m_numParameters == 1); // 1 parameter for 'this'. 1131 1131 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); 1133 1133 1134 1134 if (codeBlock->needsFullScopeChain()) … … 1205 1205 JSValue value = callFrame->r(vPC[3].u.operand).jsValue(); 1206 1206 JSObject* scope = new (callFrame) JSStaticScopeObject(callFrame, property, value, DontDelete); 1207 callFrame-> r(dst) = JSValue(scope);1207 callFrame->uncheckedR(dst) = JSValue(scope); 1208 1208 1209 1209 return callFrame->scopeChain()->push(scope); … … 1528 1528 */ 1529 1529 int dst = vPC[1].u.operand; 1530 callFrame-> r(dst) = JSValue(constructEmptyObject(callFrame));1530 callFrame->uncheckedR(dst) = JSValue(constructEmptyObject(callFrame)); 1531 1531 1532 1532 vPC += OPCODE_LENGTH(op_new_object); … … 1545 1545 int argCount = vPC[3].u.operand; 1546 1546 ArgList args(callFrame->registers() + firstArg, argCount); 1547 callFrame-> r(dst) = JSValue(constructArray(callFrame, args));1547 callFrame->uncheckedR(dst) = JSValue(constructArray(callFrame, args)); 1548 1548 1549 1549 vPC += OPCODE_LENGTH(op_new_array); … … 1559 1559 int dst = vPC[1].u.operand; 1560 1560 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))); 1562 1562 1563 1563 vPC += OPCODE_LENGTH(op_new_regexp); … … 1572 1572 int src = vPC[2].u.operand; 1573 1573 1574 callFrame-> r(dst) = callFrame->r(src);1574 callFrame->uncheckedR(dst) = callFrame->r(src); 1575 1575 1576 1576 vPC += OPCODE_LENGTH(op_mov); … … 1588 1588 JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue(); 1589 1589 if (src1.isInt32() && src2.isInt32()) 1590 callFrame-> r(dst) = jsBoolean(src1.asInt32() == src2.asInt32());1590 callFrame->uncheckedR(dst) = jsBoolean(src1.asInt32() == src2.asInt32()); 1591 1591 else { 1592 1592 JSValue result = jsBoolean(JSValue::equalSlowCase(callFrame, src1, src2)); 1593 1593 CHECK_FOR_EXCEPTION(); 1594 callFrame-> r(dst) = result;1594 callFrame->uncheckedR(dst) = result; 1595 1595 } 1596 1596 … … 1608 1608 1609 1609 if (src.isUndefinedOrNull()) { 1610 callFrame-> r(dst) = jsBoolean(true);1610 callFrame->uncheckedR(dst) = jsBoolean(true); 1611 1611 vPC += OPCODE_LENGTH(op_eq_null); 1612 1612 NEXT_INSTRUCTION(); 1613 1613 } 1614 1614 1615 callFrame-> r(dst) = jsBoolean(src.isCell() && src.asCell()->structure()->typeInfo().masqueradesAsUndefined());1615 callFrame->uncheckedR(dst) = jsBoolean(src.isCell() && src.asCell()->structure()->typeInfo().masqueradesAsUndefined()); 1616 1616 vPC += OPCODE_LENGTH(op_eq_null); 1617 1617 NEXT_INSTRUCTION(); … … 1628 1628 JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue(); 1629 1629 if (src1.isInt32() && src2.isInt32()) 1630 callFrame-> r(dst) = jsBoolean(src1.asInt32() != src2.asInt32());1630 callFrame->uncheckedR(dst) = jsBoolean(src1.asInt32() != src2.asInt32()); 1631 1631 else { 1632 1632 JSValue result = jsBoolean(!JSValue::equalSlowCase(callFrame, src1, src2)); 1633 1633 CHECK_FOR_EXCEPTION(); 1634 callFrame-> r(dst) = result;1634 callFrame->uncheckedR(dst) = result; 1635 1635 } 1636 1636 … … 1648 1648 1649 1649 if (src.isUndefinedOrNull()) { 1650 callFrame-> r(dst) = jsBoolean(false);1650 callFrame->uncheckedR(dst) = jsBoolean(false); 1651 1651 vPC += OPCODE_LENGTH(op_neq_null); 1652 1652 NEXT_INSTRUCTION(); 1653 1653 } 1654 1654 1655 callFrame-> r(dst) = jsBoolean(!src.isCell() || !src.asCell()->structure()->typeInfo().masqueradesAsUndefined());1655 callFrame->uncheckedR(dst) = jsBoolean(!src.isCell() || !src.asCell()->structure()->typeInfo().masqueradesAsUndefined()); 1656 1656 vPC += OPCODE_LENGTH(op_neq_null); 1657 1657 NEXT_INSTRUCTION(); … … 1669 1669 bool result = JSValue::strictEqual(callFrame, src1, src2); 1670 1670 CHECK_FOR_EXCEPTION(); 1671 callFrame-> r(dst) = jsBoolean(result);1671 callFrame->uncheckedR(dst) = jsBoolean(result); 1672 1672 1673 1673 vPC += OPCODE_LENGTH(op_stricteq); … … 1686 1686 bool result = !JSValue::strictEqual(callFrame, src1, src2); 1687 1687 CHECK_FOR_EXCEPTION(); 1688 callFrame-> r(dst) = jsBoolean(result);1688 callFrame->uncheckedR(dst) = jsBoolean(result); 1689 1689 1690 1690 vPC += OPCODE_LENGTH(op_nstricteq); … … 1703 1703 JSValue result = jsBoolean(jsLess(callFrame, src1, src2)); 1704 1704 CHECK_FOR_EXCEPTION(); 1705 callFrame-> r(dst) = result;1705 callFrame->uncheckedR(dst) = result; 1706 1706 1707 1707 vPC += OPCODE_LENGTH(op_less); … … 1720 1720 JSValue result = jsBoolean(jsLessEq(callFrame, src1, src2)); 1721 1721 CHECK_FOR_EXCEPTION(); 1722 callFrame-> r(dst) = result;1722 callFrame->uncheckedR(dst) = result; 1723 1723 1724 1724 vPC += OPCODE_LENGTH(op_lesseq); … … 1734 1734 JSValue v = callFrame->r(srcDst).jsValue(); 1735 1735 if (v.isInt32() && v.asInt32() < INT_MAX) 1736 callFrame-> r(srcDst) = jsNumber(v.asInt32() + 1);1736 callFrame->uncheckedR(srcDst) = jsNumber(v.asInt32() + 1); 1737 1737 else { 1738 1738 JSValue result = jsNumber(v.toNumber(callFrame) + 1); 1739 1739 CHECK_FOR_EXCEPTION(); 1740 callFrame-> r(srcDst) = result;1740 callFrame->uncheckedR(srcDst) = result; 1741 1741 } 1742 1742 … … 1753 1753 JSValue v = callFrame->r(srcDst).jsValue(); 1754 1754 if (v.isInt32() && v.asInt32() > INT_MIN) 1755 callFrame-> r(srcDst) = jsNumber(v.asInt32() - 1);1755 callFrame->uncheckedR(srcDst) = jsNumber(v.asInt32() - 1); 1756 1756 else { 1757 1757 JSValue result = jsNumber(v.toNumber(callFrame) - 1); 1758 1758 CHECK_FOR_EXCEPTION(); 1759 callFrame-> r(srcDst) = result;1759 callFrame->uncheckedR(srcDst) = result; 1760 1760 } 1761 1761 … … 1774 1774 JSValue v = callFrame->r(srcDst).jsValue(); 1775 1775 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; 1778 1778 } else { 1779 1779 JSValue number = callFrame->r(srcDst).jsValue().toJSNumber(callFrame); 1780 1780 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; 1783 1783 } 1784 1784 … … 1797 1797 JSValue v = callFrame->r(srcDst).jsValue(); 1798 1798 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; 1801 1801 } else { 1802 1802 JSValue number = callFrame->r(srcDst).jsValue().toJSNumber(callFrame); 1803 1803 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; 1806 1806 } 1807 1807 … … 1821 1821 1822 1822 if (LIKELY(srcVal.isNumber())) 1823 callFrame-> r(dst) = callFrame->r(src);1823 callFrame->uncheckedR(dst) = callFrame->r(src); 1824 1824 else { 1825 1825 JSValue result = srcVal.toJSNumber(callFrame); 1826 1826 CHECK_FOR_EXCEPTION(); 1827 callFrame-> r(dst) = result;1827 callFrame->uncheckedR(dst) = result; 1828 1828 } 1829 1829 … … 1840 1840 JSValue src = callFrame->r(vPC[2].u.operand).jsValue(); 1841 1841 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()); 1843 1843 else { 1844 1844 JSValue result = jsNumber(-src.toNumber(callFrame)); 1845 1845 CHECK_FOR_EXCEPTION(); 1846 callFrame-> r(dst) = result;1846 callFrame->uncheckedR(dst) = result; 1847 1847 } 1848 1848 … … 1861 1861 JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue(); 1862 1862 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()); 1864 1864 else { 1865 1865 JSValue result = jsAdd(callFrame, src1, src2); 1866 1866 CHECK_FOR_EXCEPTION(); 1867 callFrame-> r(dst) = result;1867 callFrame->uncheckedR(dst) = result; 1868 1868 } 1869 1869 vPC += OPCODE_LENGTH(op_add); … … 1880 1880 JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue(); 1881 1881 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()); 1883 1883 else { 1884 1884 JSValue result = jsNumber(src1.toNumber(callFrame) * src2.toNumber(callFrame)); 1885 1885 CHECK_FOR_EXCEPTION(); 1886 callFrame-> r(dst) = result;1886 callFrame->uncheckedR(dst) = result; 1887 1887 } 1888 1888 … … 1903 1903 JSValue result = jsNumber(dividend.toNumber(callFrame) / divisor.toNumber(callFrame)); 1904 1904 CHECK_FOR_EXCEPTION(); 1905 callFrame-> r(dst) = result;1905 callFrame->uncheckedR(dst) = result; 1906 1906 1907 1907 vPC += OPCODE_LENGTH(op_div); … … 1922 1922 JSValue result = jsNumber(dividend.asInt32() % divisor.asInt32()); 1923 1923 ASSERT(result); 1924 callFrame-> r(dst) = result;1924 callFrame->uncheckedR(dst) = result; 1925 1925 vPC += OPCODE_LENGTH(op_mod); 1926 1926 NEXT_INSTRUCTION(); … … 1933 1933 JSValue result = jsNumber(fmod(d1, d2)); 1934 1934 CHECK_FOR_EXCEPTION(); 1935 callFrame-> r(dst) = result;1935 callFrame->uncheckedR(dst) = result; 1936 1936 vPC += OPCODE_LENGTH(op_mod); 1937 1937 NEXT_INSTRUCTION(); … … 1948 1948 JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue(); 1949 1949 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()); 1951 1951 else { 1952 1952 JSValue result = jsNumber(src1.toNumber(callFrame) - src2.toNumber(callFrame)); 1953 1953 CHECK_FOR_EXCEPTION(); 1954 callFrame-> r(dst) = result;1954 callFrame->uncheckedR(dst) = result; 1955 1955 } 1956 1956 vPC += OPCODE_LENGTH(op_sub); … … 1969 1969 1970 1970 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)); 1972 1972 else { 1973 1973 JSValue result = jsNumber((val.toInt32(callFrame)) << (shift.toUInt32(callFrame) & 0x1f)); 1974 1974 CHECK_FOR_EXCEPTION(); 1975 callFrame-> r(dst) = result;1975 callFrame->uncheckedR(dst) = result; 1976 1976 } 1977 1977 … … 1991 1991 1992 1992 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)); 1994 1994 else { 1995 1995 JSValue result = jsNumber((val.toInt32(callFrame)) >> (shift.toUInt32(callFrame) & 0x1f)); 1996 1996 CHECK_FOR_EXCEPTION(); 1997 callFrame-> r(dst) = result;1997 callFrame->uncheckedR(dst) = result; 1998 1998 } 1999 1999 … … 2012 2012 JSValue shift = callFrame->r(vPC[3].u.operand).jsValue(); 2013 2013 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)); 2015 2015 else { 2016 2016 JSValue result = jsNumber((val.toUInt32(callFrame)) >> (shift.toUInt32(callFrame) & 0x1f)); 2017 2017 CHECK_FOR_EXCEPTION(); 2018 callFrame-> r(dst) = result;2018 callFrame->uncheckedR(dst) = result; 2019 2019 } 2020 2020 … … 2033 2033 JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue(); 2034 2034 if (src1.isInt32() && src2.isInt32()) 2035 callFrame-> r(dst) = jsNumber(src1.asInt32() & src2.asInt32());2035 callFrame->uncheckedR(dst) = jsNumber(src1.asInt32() & src2.asInt32()); 2036 2036 else { 2037 2037 JSValue result = jsNumber(src1.toInt32(callFrame) & src2.toInt32(callFrame)); 2038 2038 CHECK_FOR_EXCEPTION(); 2039 callFrame-> r(dst) = result;2039 callFrame->uncheckedR(dst) = result; 2040 2040 } 2041 2041 … … 2054 2054 JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue(); 2055 2055 if (src1.isInt32() && src2.isInt32()) 2056 callFrame-> r(dst) = jsNumber(src1.asInt32() ^ src2.asInt32());2056 callFrame->uncheckedR(dst) = jsNumber(src1.asInt32() ^ src2.asInt32()); 2057 2057 else { 2058 2058 JSValue result = jsNumber(src1.toInt32(callFrame) ^ src2.toInt32(callFrame)); 2059 2059 CHECK_FOR_EXCEPTION(); 2060 callFrame-> r(dst) = result;2060 callFrame->uncheckedR(dst) = result; 2061 2061 } 2062 2062 … … 2075 2075 JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue(); 2076 2076 if (src1.isInt32() && src2.isInt32()) 2077 callFrame-> r(dst) = jsNumber(src1.asInt32() | src2.asInt32());2077 callFrame->uncheckedR(dst) = jsNumber(src1.asInt32() | src2.asInt32()); 2078 2078 else { 2079 2079 JSValue result = jsNumber(src1.toInt32(callFrame) | src2.toInt32(callFrame)); 2080 2080 CHECK_FOR_EXCEPTION(); 2081 callFrame-> r(dst) = result;2081 callFrame->uncheckedR(dst) = result; 2082 2082 } 2083 2083 … … 2094 2094 JSValue src = callFrame->r(vPC[2].u.operand).jsValue(); 2095 2095 if (src.isInt32()) 2096 callFrame-> r(dst) = jsNumber(~src.asInt32());2096 callFrame->uncheckedR(dst) = jsNumber(~src.asInt32()); 2097 2097 else { 2098 2098 JSValue result = jsNumber(~src.toInt32(callFrame)); 2099 2099 CHECK_FOR_EXCEPTION(); 2100 callFrame-> r(dst) = result;2100 callFrame->uncheckedR(dst) = result; 2101 2101 } 2102 2102 vPC += OPCODE_LENGTH(op_bitnot); … … 2113 2113 JSValue result = jsBoolean(!callFrame->r(src).jsValue().toBoolean(callFrame)); 2114 2114 CHECK_FOR_EXCEPTION(); 2115 callFrame-> r(dst) = result;2115 callFrame->uncheckedR(dst) = result; 2116 2116 2117 2117 vPC += OPCODE_LENGTH(op_not); … … 2159 2159 bool result = asObject(baseVal)->hasInstance(callFrame, callFrame->r(value).jsValue(), callFrame->r(baseProto).jsValue()); 2160 2160 CHECK_FOR_EXCEPTION(); 2161 callFrame-> r(dst) = jsBoolean(result);2161 callFrame->uncheckedR(dst) = jsBoolean(result); 2162 2162 2163 2163 vPC += OPCODE_LENGTH(op_instanceof); … … 2172 2172 int dst = vPC[1].u.operand; 2173 2173 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())); 2175 2175 2176 2176 vPC += OPCODE_LENGTH(op_typeof); … … 2187 2187 int src = vPC[2].u.operand; 2188 2188 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()); 2190 2190 2191 2191 vPC += OPCODE_LENGTH(op_is_undefined); … … 2201 2201 int dst = vPC[1].u.operand; 2202 2202 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()); 2204 2204 2205 2205 vPC += OPCODE_LENGTH(op_is_boolean); … … 2215 2215 int dst = vPC[1].u.operand; 2216 2216 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()); 2218 2218 2219 2219 vPC += OPCODE_LENGTH(op_is_number); … … 2229 2229 int dst = vPC[1].u.operand; 2230 2230 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()); 2232 2232 2233 2233 vPC += OPCODE_LENGTH(op_is_string); … … 2243 2243 int dst = vPC[1].u.operand; 2244 2244 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())); 2246 2246 2247 2247 vPC += OPCODE_LENGTH(op_is_object); … … 2257 2257 int dst = vPC[1].u.operand; 2258 2258 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())); 2260 2260 2261 2261 vPC += OPCODE_LENGTH(op_is_function); … … 2285 2285 uint32_t i; 2286 2286 if (propName.getUInt32(i)) 2287 callFrame-> r(dst) = jsBoolean(baseObj->hasProperty(callFrame, i));2287 callFrame->uncheckedR(dst) = jsBoolean(baseObj->hasProperty(callFrame, i)); 2288 2288 else { 2289 2289 Identifier property(callFrame, propName.toString(callFrame)); 2290 2290 CHECK_FOR_EXCEPTION(); 2291 callFrame-> r(dst) = jsBoolean(baseObj->hasProperty(callFrame, property));2291 callFrame->uncheckedR(dst) = jsBoolean(baseObj->hasProperty(callFrame, property)); 2292 2292 } 2293 2293 … … 2365 2365 int index = vPC[2].u.operand; 2366 2366 2367 callFrame-> r(dst) = scope->registerAt(index);2367 callFrame->uncheckedR(dst) = scope->registerAt(index); 2368 2368 vPC += OPCODE_LENGTH(op_get_global_var); 2369 2369 NEXT_INSTRUCTION(); … … 2410 2410 ASSERT((*iter)->isVariableObject()); 2411 2411 JSVariableObject* scope = static_cast<JSVariableObject*>(*iter); 2412 callFrame-> r(dst) = scope->registerAt(index);2412 callFrame->uncheckedR(dst) = scope->registerAt(index); 2413 2413 ASSERT(callFrame->r(dst).jsValue()); 2414 2414 vPC += OPCODE_LENGTH(op_get_scoped_var); … … 2513 2513 tryCacheGetByID(callFrame, codeBlock, vPC, baseValue, ident, slot); 2514 2514 2515 callFrame-> r(dst) = result;2515 callFrame->uncheckedR(dst) = result; 2516 2516 vPC += OPCODE_LENGTH(op_get_by_id); 2517 2517 NEXT_INSTRUCTION(); … … 2538 2538 2539 2539 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)); 2541 2541 2542 2542 vPC += OPCODE_LENGTH(op_get_by_id_self); … … 2573 2573 ASSERT(protoObject->get(callFrame, codeBlock->identifier(vPC[3].u.operand)) == protoObject->getDirectOffset(offset)); 2574 2574 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)); 2576 2576 2577 2577 vPC += OPCODE_LENGTH(op_get_by_id_proto); … … 2615 2615 JSValue result = call(callFrame, getter, callType, callData, asObject(baseCell), ArgList()); 2616 2616 CHECK_FOR_EXCEPTION(); 2617 callFrame-> r(dst) = result;2617 callFrame->uncheckedR(dst) = result; 2618 2618 } else 2619 callFrame-> r(dst) = jsUndefined();2619 callFrame->uncheckedR(dst) = jsUndefined(); 2620 2620 vPC += OPCODE_LENGTH(op_get_by_id_getter_proto); 2621 2621 NEXT_INSTRUCTION(); … … 2659 2659 JSValue result = getter(callFrame, protoObject, ident); 2660 2660 CHECK_FOR_EXCEPTION(); 2661 callFrame-> r(dst) = result;2661 callFrame->uncheckedR(dst) = result; 2662 2662 vPC += OPCODE_LENGTH(op_get_by_id_custom_proto); 2663 2663 NEXT_INSTRUCTION(); … … 2744 2744 ASSERT(baseObject->get(callFrame, codeBlock->identifier(vPC[3].u.operand)) == baseObject->getDirectOffset(offset)); 2745 2745 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)); 2747 2747 2748 2748 vPC += OPCODE_LENGTH(op_get_by_id_chain); … … 2788 2788 JSValue result = call(callFrame, getter, callType, callData, baseObject, ArgList()); 2789 2789 CHECK_FOR_EXCEPTION(); 2790 callFrame-> r(dst) = result;2790 callFrame->uncheckedR(dst) = result; 2791 2791 } else 2792 callFrame-> r(dst) = jsUndefined();2792 callFrame->uncheckedR(dst) = jsUndefined(); 2793 2793 2794 2794 vPC += OPCODE_LENGTH(op_get_by_id_getter_self); … … 2828 2828 JSValue result = getter(callFrame, baseValue, ident); 2829 2829 CHECK_FOR_EXCEPTION(); 2830 callFrame-> r(dst) = result;2830 callFrame->uncheckedR(dst) = result; 2831 2831 vPC += OPCODE_LENGTH(op_get_by_id_custom_self); 2832 2832 NEXT_INSTRUCTION(); … … 2855 2855 CHECK_FOR_EXCEPTION(); 2856 2856 2857 callFrame-> r(dst) = result;2857 callFrame->uncheckedR(dst) = result; 2858 2858 vPC += OPCODE_LENGTH(op_get_by_id_generic); 2859 2859 NEXT_INSTRUCTION(); … … 2896 2896 JSValue result = call(callFrame, getter, callType, callData, baseValue, ArgList()); 2897 2897 CHECK_FOR_EXCEPTION(); 2898 callFrame-> r(dst) = result;2898 callFrame->uncheckedR(dst) = result; 2899 2899 } else 2900 callFrame-> r(dst) = jsUndefined();2900 callFrame->uncheckedR(dst) = jsUndefined(); 2901 2901 vPC += OPCODE_LENGTH(op_get_by_id_getter_chain); 2902 2902 NEXT_INSTRUCTION(); … … 2950 2950 JSValue result = getter(callFrame, baseObject, ident); 2951 2951 CHECK_FOR_EXCEPTION(); 2952 callFrame-> r(dst) = result;2952 callFrame->uncheckedR(dst) = result; 2953 2953 vPC += OPCODE_LENGTH(op_get_by_id_custom_chain); 2954 2954 NEXT_INSTRUCTION(); … … 2978 2978 if (LIKELY(isJSArray(globalData, baseValue))) { 2979 2979 int dst = vPC[1].u.operand; 2980 callFrame-> r(dst) = jsNumber(asArray(baseValue)->length());2980 callFrame->uncheckedR(dst) = jsNumber(asArray(baseValue)->length()); 2981 2981 vPC += OPCODE_LENGTH(op_get_array_length); 2982 2982 NEXT_INSTRUCTION(); … … 2998 2998 if (LIKELY(isJSString(globalData, baseValue))) { 2999 2999 int dst = vPC[1].u.operand; 3000 callFrame-> r(dst) = jsNumber(asString(baseValue)->length());3000 callFrame->uncheckedR(dst) = jsNumber(asString(baseValue)->length()); 3001 3001 vPC += OPCODE_LENGTH(op_get_string_length); 3002 3002 NEXT_INSTRUCTION(); … … 3173 3173 } 3174 3174 CHECK_FOR_EXCEPTION(); 3175 callFrame-> r(dst) = jsBoolean(result);3175 callFrame->uncheckedR(dst) = jsBoolean(result); 3176 3176 vPC += OPCODE_LENGTH(op_del_by_id); 3177 3177 NEXT_INSTRUCTION(); … … 3193 3193 int offset = 0; 3194 3194 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)); 3196 3196 vPC += OPCODE_LENGTH(op_get_by_pname); 3197 3197 NEXT_INSTRUCTION(); … … 3200 3200 result = baseValue.get(callFrame, propertyName); 3201 3201 CHECK_FOR_EXCEPTION(); 3202 callFrame-> r(dst) = result;3202 callFrame->uncheckedR(dst) = result; 3203 3203 vPC += OPCODE_LENGTH(op_get_by_pname); 3204 3204 NEXT_INSTRUCTION(); … … 3214 3214 JSValue result = arguments.get(callFrame, ident, slot); 3215 3215 CHECK_FOR_EXCEPTION(); 3216 callFrame-> r(dst) = result;3216 callFrame->uncheckedR(dst) = result; 3217 3217 } else 3218 callFrame-> r(dst) = jsNumber(callFrame->argumentCount());3218 callFrame->uncheckedR(dst) = jsNumber(callFrame->argumentCount()); 3219 3219 3220 3220 vPC += OPCODE_LENGTH(op_get_arguments_length); … … 3231 3231 unsigned numParameters = callFrame->codeBlock()->m_numParameters; 3232 3232 if (arg < numParameters) 3233 callFrame-> r(dst) = callFrame->r(arg - RegisterFile::CallFrameHeaderSize - numParameters);3233 callFrame->uncheckedR(dst) = callFrame->r(arg - RegisterFile::CallFrameHeaderSize - numParameters); 3234 3234 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); 3236 3236 vPC += OPCODE_LENGTH(op_get_argument_by_val); 3237 3237 NEXT_INSTRUCTION(); … … 3239 3239 if (!arguments) { 3240 3240 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); 3243 3243 } 3244 3244 // fallthrough … … 3281 3281 3282 3282 CHECK_FOR_EXCEPTION(); 3283 callFrame-> r(dst) = result;3283 callFrame->uncheckedR(dst) = result; 3284 3284 vPC += OPCODE_LENGTH(op_get_by_val); 3285 3285 NEXT_INSTRUCTION(); … … 3365 3365 } 3366 3366 CHECK_FOR_EXCEPTION(); 3367 callFrame-> r(dst) = jsBoolean(result);3367 callFrame->uncheckedR(dst) = jsBoolean(result); 3368 3368 vPC += OPCODE_LENGTH(op_del_by_val); 3369 3369 NEXT_INSTRUCTION(); … … 3771 3771 ASSERT(codeBlock->codeType() != FunctionCode || !codeBlock->needsFullScopeChain() || callFrame->r(codeBlock->activationRegister()).jsValue()); 3772 3772 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())); 3774 3774 3775 3775 vPC += OPCODE_LENGTH(op_new_func); … … 3803 3803 } 3804 3804 3805 callFrame-> r(dst) = JSValue(func);3805 callFrame->uncheckedR(dst) = JSValue(func); 3806 3806 3807 3807 vPC += OPCODE_LENGTH(op_new_func_exp); … … 3999 3999 } 4000 4000 CHECK_FOR_EXCEPTION(); 4001 callFrame-> r(argCountDst) = Register::withInt(argCount + 1);4001 callFrame->uncheckedR(argCountDst) = Register::withInt(argCount + 1); 4002 4002 vPC += OPCODE_LENGTH(op_load_varargs); 4003 4003 NEXT_INSTRUCTION(); … … 4169 4169 */ 4170 4170 4171 callFrame-> r(vPC[1].u.operand) = functionReturnValue;4171 callFrame->uncheckedR(vPC[1].u.operand) = functionReturnValue; 4172 4172 4173 4173 vPC += OPCODE_LENGTH(op_call_put_result); … … 4217 4217 size_t i = 0; 4218 4218 for (size_t count = codeBlock->m_numVars; i < count; ++i) 4219 callFrame-> r(i) = jsUndefined();4219 callFrame->uncheckedR(i) = jsUndefined(); 4220 4220 4221 4221 vPC += OPCODE_LENGTH(op_enter); … … 4244 4244 */ 4245 4245 4246 callFrame-> r(vPC[1].u.operand) = JSValue(callFrame->callee());4246 callFrame->uncheckedR(vPC[1].u.operand) = JSValue(callFrame->callee()); 4247 4247 4248 4248 vPC += OPCODE_LENGTH(op_get_callee); … … 4273 4273 else 4274 4274 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)); 4276 4276 4277 4277 vPC += OPCODE_LENGTH(op_create_this); … … 4293 4293 JSValue thisVal = callFrame->r(thisRegister).jsValue(); 4294 4294 if (thisVal.needsThisConversion()) 4295 callFrame-> r(thisRegister) = JSValue(thisVal.toThisObject(callFrame));4295 callFrame->uncheckedR(thisRegister) = JSValue(thisVal.toThisObject(callFrame)); 4296 4296 4297 4297 vPC += OPCODE_LENGTH(op_convert_this); … … 4312 4312 JSValue thisVal = callFrame->r(thisRegister).jsValue(); 4313 4313 if (thisVal.isObject() && thisVal.needsThisConversion()) 4314 callFrame-> r(thisRegister) = JSValue(thisVal.toStrictThisObject(callFrame));4314 callFrame->uncheckedR(thisRegister) = JSValue(thisVal.toStrictThisObject(callFrame)); 4315 4315 4316 4316 vPC += OPCODE_LENGTH(op_convert_this_strict); … … 4326 4326 int dst = vPC[1].u.operand; 4327 4327 4328 callFrame-> r(dst) = JSValue();4328 callFrame->uncheckedR(dst) = JSValue(); 4329 4329 vPC += OPCODE_LENGTH(op_init_lazy_reg); 4330 4330 NEXT_INSTRUCTION(); … … 4342 4342 if (!callFrame->r(dst).jsValue()) { 4343 4343 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); 4346 4346 } 4347 4347 vPC += OPCODE_LENGTH(op_create_arguments); … … 4439 4439 int count = vPC[3].u.operand; 4440 4440 4441 callFrame-> r(dst) = concatenateStrings(callFrame, &callFrame->registers()[src], count);4441 callFrame->uncheckedR(dst) = concatenateStrings(callFrame, &callFrame->registers()[src], count); 4442 4442 CHECK_FOR_EXCEPTION(); 4443 4443 vPC += OPCODE_LENGTH(op_strcat); … … 4449 4449 int src = vPC[2].u.operand; 4450 4450 4451 callFrame-> r(dst) = callFrame->r(src).jsValue().toPrimitive(callFrame);4451 callFrame->uncheckedR(dst) = callFrame->r(src).jsValue().toPrimitive(callFrame); 4452 4452 vPC += OPCODE_LENGTH(op_to_primitive); 4453 4453 … … 4466 4466 CHECK_FOR_EXCEPTION(); 4467 4467 4468 callFrame-> r(scope) = JSValue(o);4468 callFrame->uncheckedR(scope) = JSValue(o); 4469 4469 callFrame->setScopeChain(callFrame->scopeChain()->push(o)); 4470 4470 … … 4507 4507 jsPropertyNameIterator = JSPropertyNameIterator::create(callFrame, o); 4508 4508 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()); 4513 4513 vPC += OPCODE_LENGTH(op_get_pnames); 4514 4514 NEXT_INSTRUCTION(); … … 4533 4533 JSValue key = it->get(callFrame, asObject(callFrame->r(base).jsValue()), callFrame->r(i).i()); 4534 4534 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); 4536 4536 if (key) { 4537 4537 CHECK_FOR_TIMEOUT(); 4538 callFrame-> r(dst) = key;4538 callFrame->uncheckedR(dst) = key; 4539 4539 vPC += target; 4540 4540 NEXT_INSTRUCTION(); … … 4592 4592 ASSERT(!globalData->exception); 4593 4593 int ex = vPC[1].u.operand; 4594 callFrame-> r(ex) = exceptionValue;4594 callFrame->uncheckedR(ex) = exceptionValue; 4595 4595 exceptionValue = JSValue(); 4596 4596 -
trunk/JavaScriptCore/jit/JITStubs.cpp
r72360 r72442 1938 1938 STUB_INIT_STACK_FRAME(stackFrame); 1939 1939 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()); 1941 1941 return stackFrame.args[0].function()->make(stackFrame.callFrame, stackFrame.callFrame->scopeChain()); 1942 1942 } … … 2742 2742 ASSERT(skip || !checkTopLevel); 2743 2743 if (checkTopLevel && skip--) { 2744 if (callFrame-> r(codeBlock->activationRegister()).jsValue())2744 if (callFrame->uncheckedR(codeBlock->activationRegister()).jsValue()) 2745 2745 ++iter; 2746 2746 } … … 3104 3104 FunctionExecutable* function = stackFrame.args[0].function(); 3105 3105 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()); 3107 3107 3108 3108 /* … … 3211 3211 { 3212 3212 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()); 3214 3214 3215 3215 CallFrame* callFrame = stackFrame.callFrame; -
trunk/JavaScriptCore/runtime/JSActivation.cpp
r69516 r72442 203 203 CallFrame* callFrame = CallFrame::create(activation->d()->registers); 204 204 int argumentsRegister = activation->d()->functionExecutable->generatedBytecode().argumentsRegister(); 205 if (!callFrame-> r(argumentsRegister).jsValue()) {205 if (!callFrame->uncheckedR(argumentsRegister).jsValue()) { 206 206 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(); 213 213 } 214 214
Note: See TracChangeset
for help on using the changeset viewer.