| Index: JavaScriptCore/jit/JITStubs.cpp
|
| ===================================================================
|
| --- JavaScriptCore/jit/JITStubs.cpp (revision 10232)
|
| +++ JavaScriptCore/jit/JITStubs.cpp (working copy)
|
| @@ -28,16 +28,18 @@
|
| */
|
|
|
| #include "config.h"
|
| -#include "Interpreter.h"
|
| +#include "JITStubs.h"
|
|
|
| +#if ENABLE(JIT)
|
| +
|
| #include "Arguments.h"
|
| -#include "BatchedTransitionOptimizer.h"
|
| +#include "CallFrame.h"
|
| #include "CodeBlock.h"
|
| -#include "DebuggerCallFrame.h"
|
| -#include "EvalCodeCache.h"
|
| +#include "Collector.h"
|
| +#include "Debugger.h"
|
| #include "ExceptionHelpers.h"
|
| -#include "CallFrame.h"
|
| #include "GlobalEvalFunction.h"
|
| +#include "JIT.h"
|
| #include "JSActivation.h"
|
| #include "JSArray.h"
|
| #include "JSByteArray.h"
|
| @@ -47,56 +49,38 @@
|
| #include "JSStaticScopeObject.h"
|
| #include "JSString.h"
|
| #include "ObjectPrototype.h"
|
| +#include "Operations.h"
|
| #include "Parser.h"
|
| #include "Profiler.h"
|
| #include "RegExpObject.h"
|
| #include "RegExpPrototype.h"
|
| #include "Register.h"
|
| -#include "Collector.h"
|
| -#include "Debugger.h"
|
| -#include "Operations.h"
|
| #include "SamplingTool.h"
|
| #include <stdio.h>
|
|
|
| -#if ENABLE(JIT)
|
| -#include "JIT.h"
|
| -#endif
|
| -
|
| -#if ENABLE(ASSEMBLER)
|
| -#include "AssemblerBuffer.h"
|
| -#endif
|
| -
|
| -#if PLATFORM(DARWIN)
|
| -#include <mach/mach.h>
|
| -#endif
|
| -
|
| -#if HAVE(SYS_TIME_H)
|
| -#include <sys/time.h>
|
| -#endif
|
| -
|
| -#if PLATFORM(WIN_OS)
|
| -#include <windows.h>
|
| -#endif
|
| -
|
| -#if PLATFORM(QT)
|
| -#include <QDateTime>
|
| -#endif
|
| -
|
| using namespace std;
|
|
|
| namespace JSC {
|
|
|
| -#if ENABLE(JIT)
|
| -
|
| #if ENABLE(OPCODE_SAMPLING)
|
| #define CTI_SAMPLER ARG_globalData->interpreter->sampler()
|
| #else
|
| #define CTI_SAMPLER 0
|
| #endif
|
|
|
| +JITStubs::JITStubs(JSGlobalData* globalData)
|
| + : m_ctiArrayLengthTrampoline(0)
|
| + , m_ctiStringLengthTrampoline(0)
|
| + , m_ctiVirtualCallPreLink(0)
|
| + , m_ctiVirtualCallLink(0)
|
| + , m_ctiVirtualCall(0)
|
| +{
|
| + JIT::compileCTIMachineTrampolines(globalData, &m_executablePool, &m_ctiArrayLengthTrampoline, &m_ctiStringLengthTrampoline, &m_ctiVirtualCallPreLink, &m_ctiVirtualCallLink, &m_ctiVirtualCall);
|
| +}
|
| +
|
| #if ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS)
|
|
|
| -NEVER_INLINE void Interpreter::tryCTICachePutByID(CallFrame* callFrame, CodeBlock* codeBlock, void* returnAddress, JSValuePtr baseValue, const PutPropertySlot& slot)
|
| +NEVER_INLINE void JITStubs::tryCachePutByID(CallFrame* callFrame, CodeBlock* codeBlock, void* returnAddress, JSValuePtr baseValue, const PutPropertySlot& slot)
|
| {
|
| // The interpreter checks for recursion here; I do not believe this can occur in CTI.
|
|
|
| @@ -105,7 +89,7 @@
|
|
|
| // Uncacheable: give up.
|
| if (!slot.isCacheable()) {
|
| - ctiPatchCallByReturnAddress(returnAddress, reinterpret_cast<void*>(cti_op_put_by_id_generic));
|
| + ctiPatchCallByReturnAddress(returnAddress, reinterpret_cast<void*>(JITStubs::cti_op_put_by_id_generic));
|
| return;
|
| }
|
|
|
| @@ -113,13 +97,13 @@
|
| Structure* structure = baseCell->structure();
|
|
|
| if (structure->isDictionary()) {
|
| - ctiPatchCallByReturnAddress(returnAddress, reinterpret_cast<void*>(cti_op_put_by_id_generic));
|
| + ctiPatchCallByReturnAddress(returnAddress, reinterpret_cast<void*>(JITStubs::cti_op_put_by_id_generic));
|
| return;
|
| }
|
|
|
| // If baseCell != base, then baseCell must be a proxy for another object.
|
| if (baseCell != slot.base()) {
|
| - ctiPatchCallByReturnAddress(returnAddress, reinterpret_cast<void*>(cti_op_put_by_id_generic));
|
| + ctiPatchCallByReturnAddress(returnAddress, reinterpret_cast<void*>(JITStubs::cti_op_put_by_id_generic));
|
| return;
|
| }
|
|
|
| @@ -152,35 +136,38 @@
|
| #endif
|
| }
|
|
|
| -NEVER_INLINE void Interpreter::tryCTICacheGetByID(CallFrame* callFrame, CodeBlock* codeBlock, void* returnAddress, JSValuePtr baseValue, const Identifier& propertyName, const PropertySlot& slot)
|
| +NEVER_INLINE void JITStubs::tryCacheGetByID(CallFrame* callFrame, CodeBlock* codeBlock, void* returnAddress, JSValuePtr baseValue, const Identifier& propertyName, const PropertySlot& slot)
|
| {
|
| // FIXME: Write a test that proves we need to check for recursion here just
|
| // like the interpreter does, then add a check for recursion.
|
|
|
| // FIXME: Cache property access for immediates.
|
| if (!baseValue.isCell()) {
|
| - ctiPatchCallByReturnAddress(returnAddress, reinterpret_cast<void*>(cti_op_get_by_id_generic));
|
| + ctiPatchCallByReturnAddress(returnAddress, reinterpret_cast<void*>(JITStubs::cti_op_get_by_id_generic));
|
| return;
|
| }
|
| +
|
| + JSGlobalData* globalData = &callFrame->globalData();
|
|
|
| - if (isJSArray(baseValue) && propertyName == callFrame->propertyNames().length) {
|
| + if (isJSArray(globalData, baseValue) && propertyName == callFrame->propertyNames().length) {
|
| #if USE(CTI_REPATCH_PIC)
|
| JIT::compilePatchGetArrayLength(callFrame->scopeChain()->globalData, codeBlock, returnAddress);
|
| #else
|
| - ctiPatchCallByReturnAddress(returnAddress, m_ctiArrayLengthTrampoline);
|
| + ctiPatchCallByReturnAddress(returnAddress, globalData->jitStubs.ctiArrayLengthTrampoline());
|
| #endif
|
| return;
|
| }
|
| - if (isJSString(baseValue) && propertyName == callFrame->propertyNames().length) {
|
| +
|
| + if (isJSString(globalData, baseValue) && propertyName == callFrame->propertyNames().length) {
|
| // The tradeoff of compiling an patched inline string length access routine does not seem
|
| // to pay off, so we currently only do this for arrays.
|
| - ctiPatchCallByReturnAddress(returnAddress, m_ctiStringLengthTrampoline);
|
| + ctiPatchCallByReturnAddress(returnAddress, globalData->jitStubs.ctiStringLengthTrampoline());
|
| return;
|
| }
|
|
|
| // Uncacheable: give up.
|
| if (!slot.isCacheable()) {
|
| - ctiPatchCallByReturnAddress(returnAddress, reinterpret_cast<void*>(cti_op_get_by_id_generic));
|
| + ctiPatchCallByReturnAddress(returnAddress, reinterpret_cast<void*>(JITStubs::cti_op_get_by_id_generic));
|
| return;
|
| }
|
|
|
| @@ -188,7 +175,7 @@
|
| Structure* structure = baseCell->structure();
|
|
|
| if (structure->isDictionary()) {
|
| - ctiPatchCallByReturnAddress(returnAddress, reinterpret_cast<void*>(cti_op_get_by_id_generic));
|
| + ctiPatchCallByReturnAddress(returnAddress, reinterpret_cast<void*>(JITStubs::cti_op_get_by_id_generic));
|
| return;
|
| }
|
|
|
| @@ -343,7 +330,7 @@
|
| } \
|
| } while (0)
|
|
|
| -JSObject* Interpreter::cti_op_convert_this(STUB_ARGS)
|
| +JSObject* JITStubs::cti_op_convert_this(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -355,7 +342,7 @@
|
| return result;
|
| }
|
|
|
| -void Interpreter::cti_op_end(STUB_ARGS)
|
| +void JITStubs::cti_op_end(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -364,7 +351,7 @@
|
| scopeChain->deref();
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_add(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_add(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -409,7 +396,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_pre_inc(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_pre_inc(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -421,20 +408,22 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -int Interpreter::cti_timeout_check(STUB_ARGS)
|
| +int JITStubs::cti_timeout_check(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
| - Interpreter* interpreter = ARG_globalData->interpreter;
|
| +
|
| + JSGlobalData* globalData = ARG_globalData;
|
| + TimeoutChecker& timeoutChecker = globalData->timeoutChecker;
|
|
|
| - if (interpreter->checkTimeout(ARG_callFrame->dynamicGlobalObject())) {
|
| - ARG_globalData->exception = createInterruptedExecutionException(ARG_globalData);
|
| + if (timeoutChecker.didTimeOut(ARG_callFrame)) {
|
| + globalData->exception = createInterruptedExecutionException(globalData);
|
| VM_THROW_EXCEPTION_AT_END();
|
| }
|
|
|
| - return interpreter->m_ticksUntilNextTimeoutCheck;
|
| + return timeoutChecker.ticksUntilNextCheck();
|
| }
|
|
|
| -void Interpreter::cti_register_file_check(STUB_ARGS)
|
| +void JITStubs::cti_register_file_check(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -448,7 +437,7 @@
|
| throwStackOverflowError(oldCallFrame, ARG_globalData, oldCallFrame->returnPC(), STUB_RETURN_ADDRESS);
|
| }
|
|
|
| -int Interpreter::cti_op_loop_if_less(STUB_ARGS)
|
| +int JITStubs::cti_op_loop_if_less(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -461,7 +450,7 @@
|
| return result;
|
| }
|
|
|
| -int Interpreter::cti_op_loop_if_lesseq(STUB_ARGS)
|
| +int JITStubs::cti_op_loop_if_lesseq(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -474,14 +463,14 @@
|
| return result;
|
| }
|
|
|
| -JSObject* Interpreter::cti_op_new_object(STUB_ARGS)
|
| +JSObject* JITStubs::cti_op_new_object(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| return constructEmptyObject(ARG_callFrame);
|
| }
|
|
|
| -void Interpreter::cti_op_put_by_id_generic(STUB_ARGS)
|
| +void JITStubs::cti_op_put_by_id_generic(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -490,7 +479,7 @@
|
| CHECK_FOR_EXCEPTION_AT_END();
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_get_by_id_generic(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_get_by_id_generic(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -507,7 +496,7 @@
|
|
|
| #if ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS)
|
|
|
| -void Interpreter::cti_op_put_by_id(STUB_ARGS)
|
| +void JITStubs::cti_op_put_by_id(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -522,17 +511,17 @@
|
| CHECK_FOR_EXCEPTION_AT_END();
|
| }
|
|
|
| -void Interpreter::cti_op_put_by_id_second(STUB_ARGS)
|
| +void JITStubs::cti_op_put_by_id_second(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| PutPropertySlot slot;
|
| ARG_src1.put(ARG_callFrame, *ARG_id2, ARG_src3, slot);
|
| - ARG_globalData->interpreter->tryCTICachePutByID(ARG_callFrame, ARG_callFrame->codeBlock(), STUB_RETURN_ADDRESS, ARG_src1, slot);
|
| + tryCachePutByID(ARG_callFrame, ARG_callFrame->codeBlock(), STUB_RETURN_ADDRESS, ARG_src1, slot);
|
| CHECK_FOR_EXCEPTION_AT_END();
|
| }
|
|
|
| -void Interpreter::cti_op_put_by_id_fail(STUB_ARGS)
|
| +void JITStubs::cti_op_put_by_id_fail(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -545,7 +534,7 @@
|
| CHECK_FOR_EXCEPTION_AT_END();
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_get_by_id(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_get_by_id(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -562,7 +551,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_get_by_id_second(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_get_by_id_second(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -573,13 +562,13 @@
|
| PropertySlot slot(baseValue);
|
| JSValuePtr result = baseValue.get(callFrame, ident, slot);
|
|
|
| - ARG_globalData->interpreter->tryCTICacheGetByID(callFrame, callFrame->codeBlock(), STUB_RETURN_ADDRESS, baseValue, ident, slot);
|
| + tryCacheGetByID(callFrame, callFrame->codeBlock(), STUB_RETURN_ADDRESS, baseValue, ident, slot);
|
|
|
| CHECK_FOR_EXCEPTION_AT_END();
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_get_by_id_self_fail(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_get_by_id_self_fail(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -654,7 +643,7 @@
|
| return prototypeStructureList;
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_get_by_id_proto_list(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_get_by_id_proto_list(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -715,7 +704,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_get_by_id_proto_list_full(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_get_by_id_proto_list_full(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -727,7 +716,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_get_by_id_proto_fail(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_get_by_id_proto_fail(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -739,7 +728,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_get_by_id_array_fail(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_get_by_id_array_fail(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -751,7 +740,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_get_by_id_string_fail(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_get_by_id_string_fail(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -765,7 +754,7 @@
|
|
|
| #endif
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_instanceof(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_instanceof(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -804,7 +793,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_del_by_id(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_del_by_id(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -817,7 +806,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_mul(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_mul(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -835,14 +824,14 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSObject* Interpreter::cti_op_new_func(STUB_ARGS)
|
| +JSObject* JITStubs::cti_op_new_func(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| return ARG_func1->makeFunction(ARG_callFrame, ARG_callFrame->scopeChain());
|
| }
|
|
|
| -void* Interpreter::cti_op_call_JSFunction(STUB_ARGS)
|
| +void* JITStubs::cti_op_call_JSFunction(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -851,7 +840,7 @@
|
| ASSERT(ARG_src1.getCallData(callData) == CallTypeJS);
|
| #endif
|
|
|
| - ScopeChainNode* callDataScopeChain = asFunction(ARG_src1)->m_scopeChain.node();
|
| + ScopeChainNode* callDataScopeChain = asFunction(ARG_src1)->scope().node();
|
| CodeBlock* newCodeBlock = &asFunction(ARG_src1)->body()->bytecode(callDataScopeChain);
|
|
|
| if (!newCodeBlock->jitCode())
|
| @@ -860,7 +849,7 @@
|
| return newCodeBlock;
|
| }
|
|
|
| -VoidPtrPair Interpreter::cti_op_call_arityCheck(STUB_ARGS)
|
| +VoidPtrPair JITStubs::cti_op_call_arityCheck(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -905,26 +894,27 @@
|
| RETURN_PAIR(newCodeBlock, callFrame);
|
| }
|
|
|
| -void* Interpreter::cti_vm_dontLazyLinkCall(STUB_ARGS)
|
| +void* JITStubs::cti_vm_dontLazyLinkCall(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| + JSGlobalData* globalData = ARG_globalData;
|
| JSFunction* callee = asFunction(ARG_src1);
|
| - CodeBlock* codeBlock = &callee->body()->bytecode(callee->m_scopeChain.node());
|
| + CodeBlock* codeBlock = &callee->body()->bytecode(callee->scope().node());
|
| if (!codeBlock->jitCode())
|
| - JIT::compile(ARG_globalData, codeBlock);
|
| + JIT::compile(globalData, codeBlock);
|
|
|
| - ctiPatchNearCallByReturnAddress(ARG_returnAddress2, ARG_globalData->interpreter->m_ctiVirtualCallLink);
|
| + ctiPatchNearCallByReturnAddress(ARG_returnAddress2, globalData->jitStubs.ctiVirtualCallLink());
|
|
|
| return codeBlock->jitCode().addressForCall();
|
| }
|
|
|
| -void* Interpreter::cti_vm_lazyLinkCall(STUB_ARGS)
|
| +void* JITStubs::cti_vm_lazyLinkCall(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| JSFunction* callee = asFunction(ARG_src1);
|
| - CodeBlock* codeBlock = &callee->body()->bytecode(callee->m_scopeChain.node());
|
| + CodeBlock* codeBlock = &callee->body()->bytecode(callee->scope().node());
|
| if (!codeBlock->jitCode())
|
| JIT::compile(ARG_globalData, codeBlock);
|
|
|
| @@ -934,7 +924,7 @@
|
| return codeBlock->jitCode().addressForCall();
|
| }
|
|
|
| -JSObject* Interpreter::cti_op_push_activation(STUB_ARGS)
|
| +JSObject* JITStubs::cti_op_push_activation(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -943,7 +933,7 @@
|
| return activation;
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_call_NotJSFunction(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_call_NotJSFunction(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -992,7 +982,7 @@
|
| VM_THROW_EXCEPTION();
|
| }
|
|
|
| -void Interpreter::cti_op_create_arguments(STUB_ARGS)
|
| +void JITStubs::cti_op_create_arguments(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1001,7 +991,7 @@
|
| ARG_callFrame[RegisterFile::ArgumentsRegister] = arguments;
|
| }
|
|
|
| -void Interpreter::cti_op_create_arguments_no_params(STUB_ARGS)
|
| +void JITStubs::cti_op_create_arguments_no_params(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1010,7 +1000,7 @@
|
| ARG_callFrame[RegisterFile::ArgumentsRegister] = arguments;
|
| }
|
|
|
| -void Interpreter::cti_op_tear_off_activation(STUB_ARGS)
|
| +void JITStubs::cti_op_tear_off_activation(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1018,7 +1008,7 @@
|
| asActivation(ARG_src1)->copyRegisters(ARG_callFrame->optionalCalleeArguments());
|
| }
|
|
|
| -void Interpreter::cti_op_tear_off_arguments(STUB_ARGS)
|
| +void JITStubs::cti_op_tear_off_arguments(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1026,7 +1016,7 @@
|
| ARG_callFrame->optionalCalleeArguments()->copyRegisters();
|
| }
|
|
|
| -void Interpreter::cti_op_profile_will_call(STUB_ARGS)
|
| +void JITStubs::cti_op_profile_will_call(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1034,7 +1024,7 @@
|
| (*ARG_profilerReference)->willExecute(ARG_callFrame, ARG_src1);
|
| }
|
|
|
| -void Interpreter::cti_op_profile_did_call(STUB_ARGS)
|
| +void JITStubs::cti_op_profile_did_call(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1042,7 +1032,7 @@
|
| (*ARG_profilerReference)->didExecute(ARG_callFrame, ARG_src1);
|
| }
|
|
|
| -void Interpreter::cti_op_ret_scopeChain(STUB_ARGS)
|
| +void JITStubs::cti_op_ret_scopeChain(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1050,7 +1040,7 @@
|
| ARG_callFrame->scopeChain()->deref();
|
| }
|
|
|
| -JSObject* Interpreter::cti_op_new_array(STUB_ARGS)
|
| +JSObject* JITStubs::cti_op_new_array(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1058,7 +1048,7 @@
|
| return constructArray(ARG_callFrame, argList);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_resolve(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_resolve(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1086,7 +1076,7 @@
|
| VM_THROW_EXCEPTION();
|
| }
|
|
|
| -JSObject* Interpreter::cti_op_construct_JSConstruct(STUB_ARGS)
|
| +JSObject* JITStubs::cti_op_construct_JSConstruct(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1099,11 +1089,11 @@
|
| if (ARG_src4.isObject())
|
| structure = asObject(ARG_src4)->inheritorID();
|
| else
|
| - structure = asFunction(ARG_src1)->m_scopeChain.node()->globalObject()->emptyObjectStructure();
|
| + structure = asFunction(ARG_src1)->scope().node()->globalObject()->emptyObjectStructure();
|
| return new (ARG_globalData) JSObject(structure);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_construct_NotJSConstruct(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_construct_NotJSConstruct(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1137,12 +1127,12 @@
|
| VM_THROW_EXCEPTION();
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_get_by_val(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_get_by_val(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| CallFrame* callFrame = ARG_callFrame;
|
| - Interpreter* interpreter = ARG_globalData->interpreter;
|
| + JSGlobalData* globalData = ARG_globalData;
|
|
|
| JSValuePtr baseValue = ARG_src1;
|
| JSValuePtr subscript = ARG_src2;
|
| @@ -1151,15 +1141,15 @@
|
|
|
| if (LIKELY(subscript.isUInt32Fast())) {
|
| uint32_t i = subscript.getUInt32Fast();
|
| - if (interpreter->isJSArray(baseValue)) {
|
| + if (isJSArray(globalData, baseValue)) {
|
| JSArray* jsArray = asArray(baseValue);
|
| if (jsArray->canGetIndex(i))
|
| result = jsArray->getIndex(i);
|
| else
|
| result = jsArray->JSArray::get(callFrame, i);
|
| - } else if (interpreter->isJSString(baseValue) && asString(baseValue)->canGetIndex(i))
|
| + } else if (isJSString(globalData, baseValue) && asString(baseValue)->canGetIndex(i))
|
| result = asString(baseValue)->getIndex(ARG_globalData, i);
|
| - else if (interpreter->isJSByteArray(baseValue) && asByteArray(baseValue)->canAccessIndex(i)) {
|
| + else if (isJSByteArray(globalData, baseValue) && asByteArray(baseValue)->canAccessIndex(i)) {
|
| // All fast byte array accesses are safe from exceptions so return immediately to avoid exception checks.
|
| ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, reinterpret_cast<void*>(cti_op_get_by_val_byte_array));
|
| return JSValuePtr::encode(asByteArray(baseValue)->getIndex(callFrame, i));
|
| @@ -1174,12 +1164,12 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_get_by_val_byte_array(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_get_by_val_byte_array(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| CallFrame* callFrame = ARG_callFrame;
|
| - Interpreter* interpreter = ARG_globalData->interpreter;
|
| + JSGlobalData* globalData = ARG_globalData;
|
|
|
| JSValuePtr baseValue = ARG_src1;
|
| JSValuePtr subscript = ARG_src2;
|
| @@ -1188,13 +1178,13 @@
|
|
|
| if (LIKELY(subscript.isUInt32Fast())) {
|
| uint32_t i = subscript.getUInt32Fast();
|
| - if (interpreter->isJSByteArray(baseValue) && asByteArray(baseValue)->canAccessIndex(i)) {
|
| + if (isJSByteArray(globalData, baseValue) && asByteArray(baseValue)->canAccessIndex(i)) {
|
| // All fast byte array accesses are safe from exceptions so return immediately to avoid exception checks.
|
| return JSValuePtr::encode(asByteArray(baseValue)->getIndex(callFrame, i));
|
| }
|
|
|
| result = baseValue.get(callFrame, i);
|
| - if (!interpreter->isJSByteArray(baseValue))
|
| + if (!isJSByteArray(globalData, baseValue))
|
| ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, reinterpret_cast<void*>(cti_op_get_by_val));
|
| } else {
|
| Identifier property(callFrame, subscript.toString(callFrame));
|
| @@ -1205,7 +1195,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -VoidPtrPair Interpreter::cti_op_resolve_func(STUB_ARGS)
|
| +VoidPtrPair JITStubs::cti_op_resolve_func(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1247,7 +1237,7 @@
|
| VM_THROW_EXCEPTION_2();
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_sub(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_sub(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1265,12 +1255,12 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -void Interpreter::cti_op_put_by_val(STUB_ARGS)
|
| +void JITStubs::cti_op_put_by_val(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| CallFrame* callFrame = ARG_callFrame;
|
| - Interpreter* interpreter = ARG_globalData->interpreter;
|
| + JSGlobalData* globalData = ARG_globalData;
|
|
|
| JSValuePtr baseValue = ARG_src1;
|
| JSValuePtr subscript = ARG_src2;
|
| @@ -1278,13 +1268,13 @@
|
|
|
| if (LIKELY(subscript.isUInt32Fast())) {
|
| uint32_t i = subscript.getUInt32Fast();
|
| - if (interpreter->isJSArray(baseValue)) {
|
| + if (isJSArray(globalData, baseValue)) {
|
| JSArray* jsArray = asArray(baseValue);
|
| if (jsArray->canSetIndex(i))
|
| jsArray->setIndex(i, value);
|
| else
|
| jsArray->JSArray::put(callFrame, i, value);
|
| - } else if (interpreter->isJSByteArray(baseValue) && asByteArray(baseValue)->canAccessIndex(i)) {
|
| + } else if (isJSByteArray(globalData, baseValue) && asByteArray(baseValue)->canAccessIndex(i)) {
|
| JSByteArray* jsByteArray = asByteArray(baseValue);
|
| ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, reinterpret_cast<void*>(cti_op_put_by_val_byte_array));
|
| // All fast byte array accesses are safe from exceptions so return immediately to avoid exception checks.
|
| @@ -1313,17 +1303,16 @@
|
| CHECK_FOR_EXCEPTION_AT_END();
|
| }
|
|
|
| -void Interpreter::cti_op_put_by_val_array(STUB_ARGS)
|
| +void JITStubs::cti_op_put_by_val_array(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| CallFrame* callFrame = ARG_callFrame;
|
| -
|
| JSValuePtr baseValue = ARG_src1;
|
| int i = ARG_int2;
|
| JSValuePtr value = ARG_src3;
|
|
|
| - ASSERT(ARG_globalData->interpreter->isJSArray(baseValue));
|
| + ASSERT(isJSArray(ARG_globalData, baseValue));
|
|
|
| if (LIKELY(i >= 0))
|
| asArray(baseValue)->JSArray::put(callFrame, i, value);
|
| @@ -1341,12 +1330,12 @@
|
| CHECK_FOR_EXCEPTION_AT_END();
|
| }
|
|
|
| -void Interpreter::cti_op_put_by_val_byte_array(STUB_ARGS)
|
| +void JITStubs::cti_op_put_by_val_byte_array(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| CallFrame* callFrame = ARG_callFrame;
|
| - Interpreter* interpreter = ARG_globalData->interpreter;
|
| + JSGlobalData* globalData = ARG_globalData;
|
|
|
| JSValuePtr baseValue = ARG_src1;
|
| JSValuePtr subscript = ARG_src2;
|
| @@ -1354,7 +1343,7 @@
|
|
|
| if (LIKELY(subscript.isUInt32Fast())) {
|
| uint32_t i = subscript.getUInt32Fast();
|
| - if (interpreter->isJSByteArray(baseValue) && asByteArray(baseValue)->canAccessIndex(i)) {
|
| + if (isJSByteArray(globalData, baseValue) && asByteArray(baseValue)->canAccessIndex(i)) {
|
| JSByteArray* jsByteArray = asByteArray(baseValue);
|
|
|
| // All fast byte array accesses are safe from exceptions so return immediately to avoid exception checks.
|
| @@ -1370,7 +1359,7 @@
|
| }
|
| }
|
|
|
| - if (!interpreter->isJSByteArray(baseValue))
|
| + if (!isJSByteArray(globalData, baseValue))
|
| ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, reinterpret_cast<void*>(cti_op_put_by_val));
|
| baseValue.put(callFrame, i, value);
|
| } else {
|
| @@ -1384,7 +1373,7 @@
|
| CHECK_FOR_EXCEPTION_AT_END();
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_lesseq(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_lesseq(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1394,7 +1383,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -int Interpreter::cti_op_loop_if_true(STUB_ARGS)
|
| +int JITStubs::cti_op_loop_if_true(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1407,7 +1396,7 @@
|
| return result;
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_negate(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_negate(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1423,14 +1412,14 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_resolve_base(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_resolve_base(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| return JSValuePtr::encode(JSC::resolveBase(ARG_callFrame, *ARG_id1, ARG_callFrame->scopeChain()));
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_resolve_skip(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_resolve_skip(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1463,7 +1452,7 @@
|
| VM_THROW_EXCEPTION();
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_resolve_global(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_resolve_global(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1495,7 +1484,7 @@
|
| VM_THROW_EXCEPTION();
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_div(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_div(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1513,7 +1502,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_pre_dec(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_pre_dec(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1525,7 +1514,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -int Interpreter::cti_op_jless(STUB_ARGS)
|
| +int JITStubs::cti_op_jless(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1538,7 +1527,7 @@
|
| return result;
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_not(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_not(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1551,7 +1540,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -int Interpreter::cti_op_jtrue(STUB_ARGS)
|
| +int JITStubs::cti_op_jtrue(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1564,7 +1553,7 @@
|
| return result;
|
| }
|
|
|
| -VoidPtrPair Interpreter::cti_op_post_inc(STUB_ARGS)
|
| +VoidPtrPair JITStubs::cti_op_post_inc(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1578,7 +1567,7 @@
|
| RETURN_PAIR(JSValuePtr::encode(number), JSValuePtr::encode(jsNumber(ARG_globalData, number.uncheckedGetNumber() + 1)));
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_eq(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_eq(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1593,7 +1582,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_lshift(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_lshift(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1613,7 +1602,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_bitand(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_bitand(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1631,7 +1620,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_rshift(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_rshift(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1651,7 +1640,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_bitnot(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_bitnot(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1667,7 +1656,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -VoidPtrPair Interpreter::cti_op_resolve_with_base(STUB_ARGS)
|
| +VoidPtrPair JITStubs::cti_op_resolve_with_base(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1701,14 +1690,14 @@
|
| VM_THROW_EXCEPTION_2();
|
| }
|
|
|
| -JSObject* Interpreter::cti_op_new_func_exp(STUB_ARGS)
|
| +JSObject* JITStubs::cti_op_new_func_exp(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| return ARG_funcexp1->makeFunction(ARG_callFrame, ARG_callFrame->scopeChain());
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_mod(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_mod(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1722,7 +1711,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_less(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_less(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1732,7 +1721,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_neq(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_neq(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1747,7 +1736,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -VoidPtrPair Interpreter::cti_op_post_dec(STUB_ARGS)
|
| +VoidPtrPair JITStubs::cti_op_post_dec(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1761,7 +1750,7 @@
|
| RETURN_PAIR(JSValuePtr::encode(number), JSValuePtr::encode(jsNumber(ARG_globalData, number.uncheckedGetNumber() - 1)));
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_urshift(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_urshift(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1779,7 +1768,7 @@
|
| }
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_bitxor(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_bitxor(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1793,14 +1782,14 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSObject* Interpreter::cti_op_new_regexp(STUB_ARGS)
|
| +JSObject* JITStubs::cti_op_new_regexp(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| return new (ARG_globalData) RegExpObject(ARG_callFrame->lexicalGlobalObject()->regExpStructure(), ARG_regexp1);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_bitor(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_bitor(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1814,7 +1803,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_call_eval(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_call_eval(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1845,7 +1834,7 @@
|
| return JSValuePtr::encode(jsImpossibleValue());
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_throw(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_throw(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1871,14 +1860,14 @@
|
| return JSValuePtr::encode(exceptionValue);
|
| }
|
|
|
| -JSPropertyNameIterator* Interpreter::cti_op_get_pnames(STUB_ARGS)
|
| +JSPropertyNameIterator* JITStubs::cti_op_get_pnames(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| return JSPropertyNameIterator::create(ARG_callFrame, ARG_src1);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_next_pname(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_next_pname(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1889,7 +1878,7 @@
|
| return JSValuePtr::encode(temp);
|
| }
|
|
|
| -JSObject* Interpreter::cti_op_push_scope(STUB_ARGS)
|
| +JSObject* JITStubs::cti_op_push_scope(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1899,21 +1888,21 @@
|
| return o;
|
| }
|
|
|
| -void Interpreter::cti_op_pop_scope(STUB_ARGS)
|
| +void JITStubs::cti_op_pop_scope(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| ARG_callFrame->setScopeChain(ARG_callFrame->scopeChain()->pop());
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_typeof(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_typeof(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| return JSValuePtr::encode(jsTypeStringForValue(ARG_callFrame, ARG_src1));
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_is_undefined(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_is_undefined(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1921,42 +1910,42 @@
|
| return JSValuePtr::encode(jsBoolean(v.isCell() ? v.asCell()->structure()->typeInfo().masqueradesAsUndefined() : v.isUndefined()));
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_is_boolean(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_is_boolean(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| return JSValuePtr::encode(jsBoolean(ARG_src1.isBoolean()));
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_is_number(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_is_number(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| return JSValuePtr::encode(jsBoolean(ARG_src1.isNumber()));
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_is_string(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_is_string(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| - return JSValuePtr::encode(jsBoolean(ARG_globalData->interpreter->isJSString(ARG_src1)));
|
| + return JSValuePtr::encode(jsBoolean(isJSString(ARG_globalData, ARG_src1)));
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_is_object(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_is_object(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| return JSValuePtr::encode(jsBoolean(jsIsObjectType(ARG_src1)));
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_is_function(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_is_function(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| return JSValuePtr::encode(jsBoolean(jsIsFunctionType(ARG_src1)));
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_stricteq(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_stricteq(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1966,7 +1955,7 @@
|
| return JSValuePtr::encode(jsBoolean(JSValuePtr::strictEqual(src1, src2)));
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_nstricteq(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_nstricteq(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1976,7 +1965,7 @@
|
| return JSValuePtr::encode(jsBoolean(!JSValuePtr::strictEqual(src1, src2)));
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_to_jsnumber(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_to_jsnumber(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -1988,7 +1977,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_in(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_in(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -2015,7 +2004,7 @@
|
| return JSValuePtr::encode(jsBoolean(baseObj->hasProperty(callFrame, property)));
|
| }
|
|
|
| -JSObject* Interpreter::cti_op_push_new_scope(STUB_ARGS)
|
| +JSObject* JITStubs::cti_op_push_new_scope(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -2026,7 +2015,7 @@
|
| return scope;
|
| }
|
|
|
| -void Interpreter::cti_op_jmp_scopes(STUB_ARGS)
|
| +void JITStubs::cti_op_jmp_scopes(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -2039,7 +2028,7 @@
|
| callFrame->setScopeChain(tmp);
|
| }
|
|
|
| -void Interpreter::cti_op_put_by_index(STUB_ARGS)
|
| +void JITStubs::cti_op_put_by_index(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -2049,7 +2038,7 @@
|
| ARG_src1.put(callFrame, property, ARG_src3);
|
| }
|
|
|
| -void* Interpreter::cti_op_switch_imm(STUB_ARGS)
|
| +void* JITStubs::cti_op_switch_imm(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -2069,7 +2058,7 @@
|
| }
|
| }
|
|
|
| -void* Interpreter::cti_op_switch_char(STUB_ARGS)
|
| +void* JITStubs::cti_op_switch_char(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -2089,7 +2078,7 @@
|
| return result;
|
| }
|
|
|
| -void* Interpreter::cti_op_switch_string(STUB_ARGS)
|
| +void* JITStubs::cti_op_switch_string(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -2108,7 +2097,7 @@
|
| return result;
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_op_del_by_val(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_op_del_by_val(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -2133,7 +2122,7 @@
|
| return JSValuePtr::encode(result);
|
| }
|
|
|
| -void Interpreter::cti_op_put_getter(STUB_ARGS)
|
| +void JITStubs::cti_op_put_getter(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -2145,7 +2134,7 @@
|
| baseObj->defineGetter(callFrame, *ARG_id2, asObject(ARG_src3));
|
| }
|
|
|
| -void Interpreter::cti_op_put_setter(STUB_ARGS)
|
| +void JITStubs::cti_op_put_setter(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -2157,7 +2146,7 @@
|
| baseObj->defineSetter(callFrame, *ARG_id2, asObject(ARG_src3));
|
| }
|
|
|
| -JSObject* Interpreter::cti_op_new_error(STUB_ARGS)
|
| +JSObject* JITStubs::cti_op_new_error(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -2171,7 +2160,7 @@
|
| return Error::create(callFrame, static_cast<ErrorType>(type), message.toString(callFrame), lineNumber, codeBlock->ownerNode()->sourceID(), codeBlock->ownerNode()->sourceURL());
|
| }
|
|
|
| -void Interpreter::cti_op_debug(STUB_ARGS)
|
| +void JITStubs::cti_op_debug(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -2184,7 +2173,7 @@
|
| ARG_globalData->interpreter->debug(callFrame, static_cast<DebugHookID>(debugHookID), firstLine, lastLine);
|
| }
|
|
|
| -JSValueEncodedAsPointer* Interpreter::cti_vm_throw(STUB_ARGS)
|
| +JSValueEncodedAsPointer* JITStubs::cti_vm_throw(STUB_ARGS)
|
| {
|
| BEGIN_STUB_FUNCTION();
|
|
|
| @@ -2222,6 +2211,6 @@
|
| #undef VM_THROW_EXCEPTION_2
|
| #undef VM_THROW_EXCEPTION_AT_END
|
|
|
| -#endif // ENABLE(JIT)
|
| -
|
| } // namespace JSC
|
| +
|
| +#endif // ENABLE(JIT)
|
|
|