Home | History | Annotate | Download | only in jit

Lines Matching defs:callFrame

36 #include "CallFrame.h"
112 COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x58, JITStackFrame_callFrame_offset_matches_ctiTrampoline);
175 COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x90, JITStackFrame_callFrame_offset_matches_ctiTrampoline);
345 COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x58, JITStackFrame_callFrame_offset_matches_ctiTrampoline);
350 __declspec(naked) EncodedJSValue ctiTrampoline(void* code, RegisterFile*, CallFrame*, JSValue* exception, Profiler**, JSGlobalData*)
409 COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x38, JITStackFrame_callFrame_offset_matches_ctiTrampoline);
471 COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x58, JITStackFrame_callFrame_offset_matches_ctiTrampoline);
646 __asm EncodedJSValue ctiTrampoline(void*, RegisterFile*, CallFrame*, JSValue*, Profiler**, JSGlobalData*)
691 COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x38, JITStackFrame_callFrame_offset_matches_ctiTrampoline);
697 __declspec(naked) EncodedJSValue ctiTrampoline(void* code, RegisterFile*, CallFrame*, JSValue* exception, Profiler**, JSGlobalData*)
772 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, callFrame) == 0x34);
783 NEVER_INLINE void JITThunks::tryCachePutByID(CallFrame* callFrame, CodeBlock* codeBlock, ReturnAddressPtr returnAddress, JSValue baseValue, const PutPropertySlot& slot, StructureStubInfo* stubInfo)
820 normalizePrototypeChain(callFrame, baseCell);
822 StructureChain* prototypeChain = structure->prototypeChain(callFrame);
824 JIT::compilePutByIdTransition(callFrame->scopeChain()->globalData, codeBlock, stubInfo, structure->previousID(), structure, slot.cachedOffset(), prototypeChain, returnAddress);
833 NEVER_INLINE void JITThunks::tryCacheGetByID(CallFrame* callFrame, CodeBlock* codeBlock, ReturnAddressPtr returnAddress, JSValue baseValue, const Identifier& propertyName, const PropertySlot& slot, StructureStubInfo* stubInfo)
844 JSGlobalData* globalData = &callFrame->globalData();
846 if (isJSArray(globalData, baseValue) && propertyName == callFrame->propertyNames().length) {
847 JIT::compilePatchGetArrayLength(callFrame->scopeChain()->globalData, codeBlock, returnAddress);
851 if (isJSString(globalData, baseValue) && propertyName == callFrame->propertyNames().length) {
887 if (slot.slotBase() == structure->prototypeForLookup(callFrame)) {
904 JIT::compileGetByIdProto(callFrame->scopeChain()->globalData, callFrame, codeBlock, stubInfo, structure, slotBaseObject->structure(), offset, returnAddress);
909 size_t count = normalizePrototypeChain(callFrame, baseValue, slot.slotBase(), propertyName, offset);
915 StructureChain* prototypeChain = structure->prototypeChain(callFrame);
917 JIT::compileGetByIdChain(callFrame->scopeChain()->globalData, callFrame, codeBlock, stubInfo, structure, prototypeChain, count, offset, returnAddress);
981 static NEVER_INLINE void throwStackOverflowError(CallFrame* callFrame, JSGlobalData* globalData, ReturnAddressPtr exceptionLocation, ReturnAddressPtr& returnAddressSlot)
983 globalData->exception = createStackOverflowError(callFrame);
1093 CallFrame* callFrame = stackFrame.callFrame;
1095 JSObject* result = v1.toThisObject(callFrame);
1104 ScopeChainNode* scopeChain = stackFrame.callFrame->scopeChain();
1115 CallFrame* callFrame = stackFrame.callFrame;
1119 ? jsString(callFrame, asString(v1), asString(v2))
1120 : jsString(callFrame, asString(v1), v2.toPrimitiveString(callFrame));
1130 JSValue result = jsAddSlowCase(callFrame, v1, v2);
1141 CallFrame* callFrame = stackFrame.callFrame;
1142 JSValue result = jsNumber(stackFrame.globalData, v.toNumber(callFrame) + 1);
1154 if (timeoutChecker.didTimeOut(stackFrame.callFrame)) {
1166 if (LIKELY(stackFrame.registerFile->grow(&stackFrame.callFrame->registers()[stackFrame.callFrame->codeBlock()->m_numCalleeRegisters])))
1171 CallFrame* oldCallFrame = stackFrame.callFrame->callerFrame();
1172 stackFrame.callFrame = oldCallFrame;
1182 CallFrame* callFrame = stackFrame.callFrame;
1184 bool result = jsLessEq(callFrame, src1, src2);
1193 return constructEmptyObject(stackFrame.callFrame);
1201 stackFrame.args[0].jsValue().put(stackFrame.callFrame, stackFrame.args[1].identifier(), stackFrame.args[2].jsValue(), slot);
1209 CallFrame* callFrame = stackFrame.callFrame;
1214 JSValue result = baseValue.get(callFrame, ident, slot);
1225 CallFrame* callFrame = stackFrame.callFrame;
1229 stackFrame.args[0].jsValue().put(callFrame, ident, stackFrame.args[2].jsValue(), slot);
1231 CodeBlock* codeBlock = stackFrame.callFrame->codeBlock();
1236 JITThunks::tryCachePutByID(callFrame, codeBlock, STUB_RETURN_ADDRESS, stackFrame.args[0].jsValue(), slot, stubInfo);
1245 CallFrame* callFrame = stackFrame.callFrame;
1249 stackFrame.args[0].jsValue().put(callFrame, ident, stackFrame.args[2].jsValue(), slot);
1273 CallFrame* callFrame = stackFrame.callFrame;
1278 JSValue result = baseValue.get(callFrame, ident, slot);
1281 CodeBlock* codeBlock = stackFrame.callFrame->codeBlock();
1305 && (slotBaseObject = asObject(slot.slotBase()))->getPropertySpecificValue(callFrame, ident, specific)
1320 if (slot.slotBase() == structure->prototypeForLookup(callFrame)) {
1332 JIT::patchMethodCallProto(codeBlock, methodCallLinkInfo, callee, structure, callFrame->scopeChain()->globalObject->methodCallDummy(), STUB_RETURN_ADDRESS);
1345 CallFrame* callFrame = stackFrame.callFrame;
1350 JSValue result = baseValue.get(callFrame, ident, slot);
1352 CodeBlock* codeBlock = stackFrame.callFrame->codeBlock();
1357 JITThunks::tryCacheGetByID(callFrame, codeBlock, STUB_RETURN_ADDRESS, baseValue, ident, slot, stubInfo);
1367 CallFrame* callFrame = stackFrame.callFrame;
1372 JSValue result = baseValue.get(callFrame, ident, slot);
1381 CodeBlock* codeBlock = callFrame->codeBlock();
1399 JIT::compileGetByIdSelfList(callFrame->scopeChain()->globalData, codeBlock, stubInfo, polymorphicStructureList, listIndex, asCell(baseValue)->structure(), slot.cachedOffset());
1404 ctiPatchCallByReturnAddress(callFrame->codeBlock(), STUB_RETURN_ADDRESS, FunctionPtr(cti_op_get_by_id_generic));
1441 CallFrame* callFrame = stackFrame.callFrame;
1446 JSValue result = baseValue.get(callFrame, propertyName, slot);
1451 ctiPatchCallByReturnAddress(callFrame->codeBlock(), STUB_RETURN_ADDRESS, FunctionPtr(cti_op_get_by_id_proto_fail));
1456 CodeBlock* codeBlock = callFrame->codeBlock();
1466 else if (slot.slotBase() == asCell(baseValue)->structure()->prototypeForLookup(callFrame)) {
1478 JIT::compileGetByIdProtoList(callFrame->scopeChain()->globalData, callFrame, codeBlock, stubInfo, prototypeStructureList, listIndex, structure, slotBaseObject->structure(), offset);
1482 } else if (size_t count = normalizePrototypeChain(callFrame, baseValue, slot.slotBase(), propertyName, offset)) {
1487 callFrame);
1488 JIT::compileGetByIdChainList(callFrame->scopeChain()->globalData, callFrame, codeBlock, stubInfo, prototypeStructureList, listIndex, structure, protoChain, count, offset);
1504 JSValue result = baseValue.get(stackFrame.callFrame, stackFrame.args[1].identifier(), slot);
1516 JSValue result = baseValue.get(stackFrame.callFrame, stackFrame.args[1].identifier(), slot);
1528 JSValue result = baseValue.get(stackFrame.callFrame, stackFrame.args[1].identifier(), slot);
1540 JSValue result = baseValue.get(stackFrame.callFrame, stackFrame.args[1].identifier(), slot);
1552 CallFrame* callFrame = stackFrame.callFrame;
1567 CallFrame* callFrame = stackFrame.callFrame;
1568 CodeBlock* codeBlock = callFrame->codeBlock();
1569 unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
1570 stackFrame.globalData->exception = createInvalidParamError(callFrame, "instanceof", baseVal, vPCIndex, codeBlock);
1580 throwError(callFrame, TypeError, "instanceof called on an object with an invalid prototype property.");
1585 JSValue result = jsBoolean(asObject(baseVal)->hasInstance(callFrame, value, proto));
1595 CallFrame* callFrame = stackFrame.callFrame;
1597 JSObject* baseObj = stackFrame.args[0].jsValue().toObject(callFrame);
1599 JSValue result = jsBoolean(baseObj->deleteProperty(callFrame, stackFrame.args[1].identifier()));
1616 CallFrame* callFrame = stackFrame.callFrame;
1617 JSValue result = jsNumber(stackFrame.globalData, src1.toNumber(callFrame) * src2.toNumber(callFrame));
1626 return stackFrame.args[0].function()->make(stackFrame.callFrame, stackFrame.callFrame->scopeChain());
1642 executable->jitCode(stackFrame.callFrame, callDataScopeChain);
1651 CallFrame* callFrame = stackFrame.callFrame;
1659 CallFrame* oldCallFrame = callFrame->callerFrame();
1663 Register* r = callFrame->registers() + numParameters;
1669 callFrame = CallFrame::create(r);
1670 callFrame->setCallerFrame(oldCallFrame);
1673 Register* r = callFrame->registers() + omittedArgCount;
1678 stackFrame.callFrame = oldCallFrame;
1687 callFrame = CallFrame::create(r);
1688 callFrame->setCallerFrame(oldCallFrame);
1691 RETURN_POINTER_PAIR(callee, callFrame);
1704 codeBlock = &static_cast<FunctionExecutable*>(executable)->bytecode(stackFrame.callFrame, callee->scope().node());
1705 CallLinkInfo* callLinkInfo = &stackFrame.callFrame->callerFrame()->codeBlock()->getCallLinkInfo(stackFrame.args[1].returnAddress());
1710 JIT::linkCall(callee, stackFrame.callFrame->callerFrame()->codeBlock(), codeBlock, jitCode, callLinkInfo, stackFrame.args[2].int32(), stackFrame.globalData);
1720 JSActivation* activation = new (stackFrame.globalData) JSActivation(stackFrame.callFrame, static_cast<FunctionExecutable*>(stackFrame.callFrame->codeBlock()->ownerExecutable()));
1721 stackFrame.callFrame->setScopeChain(stackFrame.callFrame->scopeChain()->copy()->push(activation));
1739 CallFrame* previousCallFrame = stackFrame.callFrame;
1740 CallFrame* callFrame = CallFrame::create(previousCallFrame->registers() + registerOffset);
1742 callFrame->init(0, static_cast<Instruction*>((STUB_RETURN_ADDRESS).value()), previousCallFrame->scopeChain(), previousCallFrame, 0, argCount, 0);
1743 stackFrame.callFrame = callFrame;
1745 Register* argv = stackFrame.callFrame->registers() - RegisterFile::CallFrameHeaderSize - argCount;
1755 thisValue = callFrame->globalThisValue();
1757 returnValue = callData.native.function(callFrame, asObject(funcVal), thisValue, argList);
1759 stackFrame.callFrame = previousCallFrame;
1767 CallFrame* callFrame = stackFrame.callFrame;
1768 CodeBlock* codeBlock = callFrame->codeBlock();
1769 unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
1770 stackFrame.globalData->exception = createNotAFunctionError(stackFrame.callFrame, funcVal, vPCIndex, codeBlock);
1778 Arguments* arguments = new (stackFrame.globalData) Arguments(stackFrame.callFrame);
1779 stackFrame.callFrame->setCalleeArguments(arguments);
1780 stackFrame.callFrame[RegisterFile::ArgumentsRegister] = JSValue(arguments);
1787 Arguments* arguments = new (stackFrame.globalData) Arguments(stackFrame.callFrame, Arguments::NoParameters);
1788 stackFrame.callFrame->setCalleeArguments(arguments);
1789 stackFrame.callFrame[RegisterFile::ArgumentsRegister] = JSValue(arguments);
1796 ASSERT(stackFrame.callFrame->codeBlock()->needsFullScopeChain());
1797 asActivation(stackFrame.args[0].jsValue())->copyRegisters(stackFrame.callFrame->optionalCalleeArguments());
1804 ASSERT(stackFrame.callFrame->codeBlock()->usesArguments() && !stackFrame.callFrame->codeBlock()->needsFullScopeChain());
1805 if (stackFrame.callFrame->optionalCalleeArguments())
1806 stackFrame.callFrame->optionalCalleeArguments()->copyRegisters();
1814 (*stackFrame.enabledProfilerReference)->willExecute(stackFrame.callFrame, stackFrame.args[0].jsValue());
1822 (*stackFrame.enabledProfilerReference)->didExecute(stackFrame.callFrame, stackFrame.args[0].jsValue());
1829 ASSERT(stackFrame.callFrame->codeBlock()->needsFullScopeChain());
1830 stackFrame.callFrame->scopeChain()->deref();
1837 ArgList argList(&stackFrame.callFrame->registers()[stackFrame.args[0].int32()], stackFrame.args[1].int32());
1838 return constructArray(stackFrame.callFrame, argList);
1845 CallFrame* callFrame = stackFrame.callFrame;
1846 ScopeChainNode* scopeChain = callFrame->scopeChain();
1856 if (o->getPropertySlot(callFrame, ident, slot)) {
1857 JSValue result = slot.getValue(callFrame, ident);
1863 CodeBlock* codeBlock = callFrame->codeBlock();
1864 unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
1865 stackFrame.globalData->exception = createUndefinedVariableError(callFrame, ident, vPCIndex, codeBlock);
1875 CallFrame* callFrame = stackFrame.callFrame;
1876 CodeBlock* codeBlock = callFrame->codeBlock();
1877 unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
1878 stackFrame.globalData->exception = createNotAConstructorError(callFrame, constructor, vPCIndex, codeBlock);
1899 CallFrame* callFrame = stackFrame.callFrame;
1909 ArgList argList(callFrame->registers() + thisRegister + 1, argCount - 1);
1914 returnValue = constructData.native.function(callFrame, asObject(constrVal), argList);
1923 CodeBlock* codeBlock = callFrame->codeBlock();
1924 unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
1925 stackFrame.globalData->exception = createNotAConstructorError(callFrame, constrVal, vPCIndex, codeBlock);
1933 CallFrame* callFrame = stackFrame.callFrame
1948 result = jsArray->JSArray::get(callFrame, i);
1951 ctiPatchCallByReturnAddress(callFrame->codeBlock(), STUB_RETURN_ADDRESS, FunctionPtr(cti_op_get_by_val_string));
1952 result = asString(baseValue)->getIndex(callFrame, i);
1955 ctiPatchCallByReturnAddress(callFrame->codeBlock(), STUB_RETURN_ADDRESS, FunctionPtr(cti_op_get_by_val_byte_array));
1956 return JSValue::encode(asByteArray(baseValue)->getIndex(callFrame, i));
1958 result = baseValue.get(callFrame, i);
1960 Identifier property(callFrame, subscript.toString(callFrame));
1961 result = baseValue.get(callFrame, property);
1972 CallFrame* callFrame = stackFrame.callFrame;
1983 result = asString(baseValue)->getIndex(callFrame, i);
1985 result = baseValue.get(callFrame, i);
1987 ctiPatchCallByReturnAddress(callFrame->codeBlock(), STUB_RETURN_ADDRESS, FunctionPtr(cti_op_get_by_val));
1990 Identifier property(callFrame, subscript.toString(callFrame));
1991 result = baseValue.get(callFrame, property);
2002 CallFrame* callFrame = stackFrame.callFrame;
2014 return JSValue::encode(asByteArray(baseValue)->getIndex(callFrame, i));
2017 result = baseValue.get(callFrame, i);
2019 ctiPatchCallByReturnAddress(callFrame->codeBlock(), STUB_RETURN_ADDRESS, FunctionPtr(cti_op_get_by_val));
2021 Identifier property(callFrame, subscript.toString(callFrame));
2022 result = baseValue.get(callFrame, property);
2041 CallFrame* callFrame = stackFrame.callFrame;
2042 JSValue result = jsNumber(stackFrame.globalData, src1.toNumber(callFrame) - src2.toNumber(callFrame));
2051 CallFrame* callFrame = stackFrame.callFrame;
2065 jsArray->JSArray::put(callFrame, i, value);
2068 ctiPatchCallByReturnAddress(callFrame->codeBlock(), STUB_RETURN_ADDRESS, FunctionPtr(cti_op_put_by_val_byte_array));
2081 baseValue.put(callFrame, i, value);
2083 baseValue.put(callFrame, i, value);
2085 Identifier property(callFrame, subscript.toString(callFrame));
2088 baseValue.put(callFrame, property, value, slot);
2099 CallFrame* callFrame = stackFrame.callFrame;
2125 ctiPatchCallByReturnAddress(callFrame->codeBlock(), STUB_RETURN_ADDRESS, FunctionPtr(cti_op_put_by_val));
2126 baseValue.put(callFrame, i, value);
2128 Identifier property(callFrame, subscript.toString(callFrame));
2131 baseValue.put(callFrame, property, value, slot);
2142 CallFrame* callFrame = stackFrame.callFrame;
2143 JSValue result = jsBoolean(jsLessEq(callFrame, stackFrame.args[0].jsValue(), stackFrame.args[1].jsValue()));
2152 CallFrame* callFrame = stackFrame.callFrame;
2155 JSValue arguments = callFrame->registers()[argsOffset].jsValue();
2158 int providedParams = callFrame->registers()[RegisterFile::ArgumentCount].i() - 1;
2161 Register* newEnd = callFrame->registers() + sizeDelta;
2162 if (!registerFile->grow(newEnd) || ((newEnd - callFrame->registers()) != sizeDelta)) {
2163 stackFrame.globalData->exception = createStackOverflowError(callFrame);
2166 int32_t expectedParams = callFrame->callee()->jsExecutable()->parameterCount();
2169 Register* inplaceArgsDst = callFrame->registers() + argsOffset;
2174 Register* inplaceArgsSrc = callFrame->registers() - RegisterFile::CallFrameHeaderSize - expectedParams;
2177 // First step is to copy the "expected" parameters from their normal location relative to the callframe
2187 CodeBlock* codeBlock = callFrame->codeBlock();
2188 unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
2189 stackFrame.globalData->exception = createInvalidParamError(callFrame, "Function.prototype.apply", arguments, vPCIndex, codeBlock);
2194 argCount = argsObject->numProvidedArguments(callFrame);
2196 Register* newEnd = callFrame->registers() + sizeDelta;
2197 if (!registerFile->grow(newEnd) || ((newEnd - callFrame->registers()) != sizeDelta)) {
2198 stackFrame.globalData->exception = createStackOverflowError(callFrame);
2201 argsObject->copyToRegisters(callFrame, callFrame->registers() + argsOffset, argCount);
2202 } else if (isJSArray(&callFrame->globalData(), arguments)) {
2206 Register* newEnd = callFrame->registers() + sizeDelta;
2207 if (!registerFile->grow(newEnd) || ((newEnd - callFrame->registers()) != sizeDelta)) {
2208 stackFrame.globalData->exception = createStackOverflowError(callFrame);
2211 array->copyToRegisters(callFrame, callFrame->registers() + argsOffset, argCount);
2214 argCount = argObject->get(callFrame, callFrame->propertyNames().length).toUInt32(callFrame);
2216 Register* newEnd = callFrame->registers() + sizeDelta;
2217 if (!registerFile->grow(newEnd) || ((newEnd - callFrame->registers()) != sizeDelta)) {
2218 stackFrame.globalData->exception = createStackOverflowError(callFrame);
2221 Register* argsBuffer = callFrame->registers() + argsOffset;
2223 argsBuffer[i] = asObject(arguments)->get(callFrame, i);
2227 CodeBlock* codeBlock = callFrame->codeBlock();
2228 unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
2229 stackFrame.globalData->exception = createInvalidParamError(callFrame, "Function.prototype.apply", arguments, vPCIndex, codeBlock);
2247 CallFrame* callFrame = stackFrame.callFrame;
2248 JSValue result = jsNumber(stackFrame.globalData, -src.toNumber(callFrame));
2257 return JSValue::encode(JSC::resolveBase(stackFrame.callFrame, stackFrame.args[0].identifier(), stackFrame.callFrame->scopeChain()));
2264 CallFrame* callFrame = stackFrame.callFrame;
2265 ScopeChainNode* scopeChain = callFrame->scopeChain();
2280 if (o->getPropertySlot(callFrame, ident, slot)) {
2281 JSValue result = slot.getValue(callFrame, ident);
2287 CodeBlock* codeBlock = callFrame->codeBlock();
2288 unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
2289 stackFrame.globalData->exception = createUndefinedVariableError(callFrame, ident, vPCIndex, codeBlock);
2297 CallFrame* callFrame = stackFrame.callFrame;
2304 if (globalObject->getPropertySlot(callFrame, ident, slot)) {
2305 JSValue result = slot.getValue(callFrame, ident);
2307 GlobalResolveInfo& globalResolveInfo = callFrame->codeBlock()->globalResolveInfo(globalResolveInfoIndex);
2320 unsigned vPCIndex = callFrame->codeBlock()->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
2321 callFrame, ident, vPCIndex, callFrame->codeBlock());
2337 CallFrame* callFrame = stackFrame.callFrame;
2338 JSValue result = jsNumber(stackFrame.globalData, src1.toNumber(callFrame) / src2.toNumber(callFrame));
2349 CallFrame* callFrame = stackFrame.callFrame;
2350 JSValue result = jsNumber(stackFrame.globalData, v.toNumber(callFrame) - 1);
2361 CallFrame* callFrame = stackFrame.callFrame;
2363 bool result = jsLess(callFrame, src1, src2);
2374 CallFrame* callFrame = stackFrame.callFrame;
2376 bool result = jsLessEq(callFrame, src1, src2);
2387 CallFrame* callFrame = stackFrame.callFrame;
2389 JSValue result = jsBoolean(!src.toBoolean(callFrame));
2400 CallFrame* callFrame = stackFrame.callFrame;
2402 bool result = src1.toBoolean(callFrame);
2413 CallFrame* callFrame = stackFrame.callFrame;
2415 JSValue number = v.toJSNumber(callFrame);
2418 callFrame->registers()[stackFrame.args[1].int32()] = jsNumber(stackFrame.globalData, number.uncheckedGetNumber() + 1);
2446 double d = src2.toNumber(stackFrame.callFrame);
2454 double d = src2.toNumber(stackFrame.callFrame);
2462 double d = src2.toNumber(stackFrame.callFrame);
2470 double d = src2.toNumber(stackFrame.callFrame);
2485 return static_cast<JSString*>(cell1)->value(stackFrame.callFrame).toDouble() == src2.asInt32();
2488 return static_cast<JSString*>(cell1)->value(stackFrame.callFrame).toDouble() == src2.asDouble();
2491 return static_cast<JSString*>(cell1)->value(stackFrame.callFrame).toDouble() == 1.0;
2494 return static_cast<JSString*>(cell1)->value(stackFrame.callFrame).toDouble() == 0.0;
2498 return static_cast<JSString*>(cell1)->value(stackFrame.callFrame) == static_cast<JSString*>(cell2)->value(stackFrame.callFrame);
2500 src2 = asObject(cell2)->toPrimitive(stackFrame.callFrame);
2507 src1 = asObject(cell1)->toPrimitive(stackFrame.callFrame);
2512 CallFrame* callFrame = stackFrame.callFrame;
2514 bool result = JSValue::equalSlowCaseInline(callFrame, src1, src2);
2531 return string1->value(stackFrame.callFrame) == string2->value(stackFrame.callFrame);
2543 CallFrame* callFrame = stackFrame.callFrame;
2544 JSValue result = jsNumber(stackFrame.globalData, (val.toInt32(callFrame)) << (shift.toUInt32(callFrame) & 0x1f));
2557 CallFrame* callFrame = stackFrame.callFrame;
2558 JSValue result = jsNumber(stackFrame.globalData, src1.toInt32(callFrame) & src2.toInt32(callFrame));
2570 CallFrame* callFrame = stackFrame.callFrame;
2571 JSValue result = jsNumber(stackFrame.globalData, (val.toInt32(callFrame)) >> (shift.toUInt32(callFrame) & 0x1f));
2584 CallFrame* callFrame = stackFrame.callFrame;
2585 JSValue result = jsNumber(stackFrame.globalData, ~src.toInt32(callFrame));
2594 CallFrame* callFrame = stackFrame.callFrame;
2595 ScopeChainNode* scopeChain = callFrame->scopeChain();
2609 if (base->getPropertySlot(callFrame, ident, slot)) {
2610 JSValue result = slot.getValue(callFrame, ident);
2613 callFrame->registers()[stackFrame.args[1].int32()] = JSValue(base);
2619 CodeBlock* codeBlock = callFrame->codeBlock();
2620 unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
2621 stackFrame.globalData->exception = createUndefinedVariableError(callFrame, ident, vPCIndex, codeBlock);
2629 CallFrame* callFrame = stackFrame.callFrame;
2632 JSFunction* func = function->make(callFrame, callFrame->scopeChain());
2642 JSStaticScopeObject* functionScopeObject = new (callFrame) JSStaticScopeObject(callFrame, function->name(), func, ReadOnly | DontDelete);
2656 CallFrame* callFrame = stackFrame.callFrame;
2657 double d = dividendValue.toNumber(callFrame);
2658 JSValue result = jsNumber(stackFrame.globalData, fmod(d, divisorValue.toNumber(callFrame)));
2667 CallFrame* callFrame = stackFrame.callFrame;
2668 JSValue result = jsBoolean(jsLess(callFrame, stackFrame.args[0].jsValue(), stackFrame.args[1].jsValue()));
2679 CallFrame* callFrame = stackFrame.callFrame;
2681 JSValue number = v.toJSNumber(callFrame);
2684 callFrame->registers()[stackFrame.args[1].int32()] = jsNumber(stackFrame.globalData, number.uncheckedGetNumber() - 1);
2695 CallFrame* callFrame = stackFrame.callFrame;
2696 JSValue result = jsNumber(stackFrame.globalData, (val.toUInt32(callFrame)) >> (shift.toUInt32(callFrame) & 0x1f));
2708 CallFrame* callFrame = stackFrame.callFrame;
2710 JSValue result = jsNumber(stackFrame.globalData, src1.toInt32(callFrame) ^ src2.toInt32(callFrame));
2719 return new (stackFrame.globalData) RegExpObject(stackFrame.callFrame->lexicalGlobalObject()->regExpStructure(), stackFrame.args[0].regExp());
2729 CallFrame* callFrame = stackFrame.callFrame;
2731 JSValue result = jsNumber(stackFrame.globalData, src1.toInt32(callFrame) | src2.toInt32(callFrame));
2740 CallFrame* callFrame = stackFrame.callFrame;
2749 Register* newCallFrame = callFrame->registers() + registerOffset;
2752 JSGlobalObject* globalObject = callFrame->scopeChain()->globalObject;
2756 JSValue result = interpreter->callEval(callFrame, registerFile, argv, argCount, registerOffset, exceptionValue);
2771 CallFrame* callFrame = stackFrame.callFrame;
2772 CodeBlock* codeBlock = callFrame->codeBlock();
2774 unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
2779 HandlerInfo* handler = stackFrame.globalData->interpreter->throwException(callFrame, exceptionValue, vPCIndex, true);
2787 stackFrame.callFrame = callFrame;
2798 CallFrame* callFrame = stackFrame.callFrame;
2802 if (!jsPropertyNameIterator || jsPropertyNameIterator->cachedPrototypeChain() != structure->prototypeChain(callFrame))
2803 jsPropertyNameIterator = JSPropertyNameIterator::create(callFrame, o);
2813 return base->hasProperty(stackFrame.callFrame, Identifier(stackFrame.callFrame, property->value(stackFrame.callFrame)));
2820 JSObject* o = stackFrame.args[0].jsValue().toObject(stackFrame.callFrame);
2822 stackFrame.callFrame->setScopeChain(stackFrame.callFrame->scopeChain()->push(o));
2830 stackFrame.callFrame->setScopeChain(stackFrame.callFrame->scopeChain()->pop());
2837 return JSValue::encode(jsTypeStringForValue(stackFrame.callFrame, stackFrame.args[0].jsValue()));
2890 return JSValue::encode(jsBoolean(JSValue::strictEqual(stackFrame.callFrame, src1, src2)));
2897 return JSValue::encode(stackFrame.args[0].jsValue().toPrimitive(stackFrame.callFrame));
2904 JSValue result = jsString(stackFrame.callFrame, &stackFrame.callFrame->registers()[stackFrame.args[0].int32()], stackFrame.args[1].int32());
2916 return JSValue::encode(jsBoolean(!JSValue::strictEqual(stackFrame.callFrame, src1, src2)));
2924 CallFrame* callFrame = stackFrame.callFrame;
2926 JSValue result = src.toJSNumber(callFrame);
2935 CallFrame* callFrame = stackFrame.callFrame;
2939 CallFrame* callFrame = stackFrame.callFrame;
2940 CodeBlock* codeBlock = callFrame->codeBlock();
2941 unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
2942 stackFrame.globalData->exception = createInvalidParamError(callFrame, "in", baseVal, vPCIndex, codeBlock);
2951 return JSValue::encode(jsBoolean(baseObj->hasProperty(callFrame, i)));
2953 Identifier property(callFrame, propName.toString(callFrame));
2955 return JSValue::encode(jsBoolean(baseObj->hasProperty(callFrame, property)));
2962 JSObject* scope = new (stackFrame.globalData) JSStaticScopeObject(stackFrame.callFrame, stackFrame.args[0].identifier(), stackFrame.args[1].jsValue(), DontDelete);
2964 CallFrame* callFrame = stackFrame.callFrame;
2965 callFrame->setScopeChain(callFrame->scopeChain()->push(scope));
2974 CallFrame* callFrame = stackFrame.callFrame;
2976 ScopeChainNode* tmp = callFrame->scopeChain();
2979 callFrame->setScopeChain(tmp);
2986 CallFrame* callFrame = stackFrame.callFrame;
2989 stackFrame.args[0].jsValue().put(callFrame, property, stackFrame.args[2].jsValue());
2998 CallFrame* callFrame = stackFrame.callFrame;
2999 CodeBlock* codeBlock = callFrame->codeBlock();
3019 CallFrame* callFrame = stackFrame.callFrame;
3020 CodeBlock* codeBlock = callFrame->codeBlock();
3025 UString::Rep* value = asString(scrutinee)->value(callFrame).rep();
3039 CallFrame* callFrame = stackFrame.callFrame;
3040 CodeBlock* codeBlock = callFrame->codeBlock();
3045 UString::Rep* value = asString(scrutinee)->value(callFrame).rep();
3056 CallFrame* callFrame = stackFrame.callFrame;
3059 JSObject* baseObj = baseValue.toObject(callFrame); // may throw
3065 result = jsBoolean(baseObj->deleteProperty(callFrame, i));
3068 Identifier property(callFrame, subscript.toString(callFrame));
3070 result = jsBoolean(baseObj->deleteProperty(callFrame, property));
3081 CallFrame* callFrame = stackFrame.callFrame;
3086 baseObj->defineGetter(callFrame, stackFrame.args[1].identifier(), asObject(stackFrame.args[2].jsValue()));
3093 CallFrame* callFrame = stackFrame.callFrame;
3098 baseObj->defineSetter(callFrame, stackFrame.args[1].identifier(), asObject(stackFrame.args[2].jsValue()));
3105 CallFrame* callFrame = stackFrame.callFrame;
3106 CodeBlock* codeBlock = callFrame->codeBlock();
3111 unsigned lineNumber = codeBlock->lineNumberForBytecodeOffset(callFrame, bytecodeOffset);
3112 return Error::create(callFrame, static_cast<ErrorType>(type), message.toString(callFrame), lineNumber, codeBlock->ownerExecutable()->sourceID(), codeBlock->ownerExecutable()->sourceURL());
3119 CallFrame* callFrame = stackFrame.callFrame;
3125 stackFrame.globalData->interpreter->debug(callFrame, static_cast<DebugHookID>(debugHookID), firstLine, lastLine);
3132 CallFrame* callFrame = stackFrame.callFrame;
3133 CodeBlock* codeBlock = callFrame->codeBlock();
3136 unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, globalData->exceptionLocation);
3142 HandlerInfo* handler = globalData->interpreter->throwException(callFrame, exceptionValue, vPCIndex, false);
3149 stackFrame.callFrame = callFrame;
3160 CallFrame* callFrame = stackFrame.callFrame;
3161 return JSValue::encode(stackFrame.args[0].jsValue().toObject(callFrame));