Explictly mark stubs called by JIT as being internal
https://bugs.webkit.org/show_bug.cgi?id=88552
Reviewed by Filip Pizlo.
Source/JavaScriptCore:
* dfg/DFGOSRExitCompiler.h:
* dfg/DFGOperations.cpp:
* dfg/DFGOperations.h:
* jit/HostCallReturnValue.h:
* jit/JITStubs.cpp:
* jit/JITStubs.h:
* jit/ThunkGenerators.cpp:
* llint/LLIntSlowPaths.h: Mark a bunch of stubs as being
WTF_INTERNAL. Change most calls to SYMBOL_STRING_RELOCATION to
LOCAL_REFERENCE, or GLOBAL_REFERENCE in the case of the wrappers
to truly global symbols.
* offlineasm/asm.rb: Generate LOCAL_REFERENCE instead of
SYMBOL_STRING_RELOCATION.
Don't rely on weak pointers for eager CodeBlock finalization
https://bugs.webkit.org/show_bug.cgi?id=88465
Reviewed by Gavin Barraclough.
This is incompatible with lazy weak pointer finalization.
I considered just making CodeBlock finalization lazy-friendly, but it
turns out that the heap is already way up in CodeBlock's business when
it comes to finalization, so I decided to finish the job and move full
responsibility for CodeBlock finalization into the heap.
* JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Maybe this
will build.
* debugger/Debugger.cpp: Updated for rename.
* heap/Heap.cpp:
(JSC::Heap::deleteAllCompiledCode): Renamed for consistency. Fixed a bug
where we would not delete code for a code block that had been previously
jettisoned. I don't know if this happens in practice -- I mostly did
this to improve consistency with deleteUnmarkedCompiledCode.
(JSC::Heap::deleteUnmarkedCompiledCode): New function, responsible for
eager finalization of unmarked code blocks.
(JSC::Heap::collect): Updated for rename. Updated to call
deleteUnmarkedCompiledCode(), which takes care of jettisoned DFG code
blocks too.
(JSC::Heap::addCompiledCode): Renamed, since this points to all code
now, not just functions.
* heap/Heap.h:
(Heap): Keep track of all user code, not just functions. This is a
negligible additional overhead, since most code is function code.
* runtime/Executable.cpp:
(JSC::*::finalize): Removed these functions, since we don't rely on
weak pointer finalization anymore.
(JSC::FunctionExecutable::FunctionExecutable): Moved linked-list stuff
into base class so all executables can be in the list.
(JSC::EvalExecutable::clearCode):
(JSC::ProgramExecutable::clearCode):
(JSC::FunctionExecutable::clearCode): All we need to do is delete our
CodeBlock -- that will delete all of its internal data structures.
(JSC::FunctionExecutable::clearCodeIfNotCompiling): Factored out a helper
function to improve clarity.
* runtime/Executable.h:
(JSC::ExecutableBase): Moved linked-list stuff
into base class so all executables can be in the list.
(JSC::NativeExecutable::create):
(NativeExecutable):
(ScriptExecutable):
(JSC::ScriptExecutable::finishCreation):
(JSC::EvalExecutable::create):
(EvalExecutable):
(JSC::ProgramExecutable::create):
(ProgramExecutable):
(FunctionExecutable):
(JSC::FunctionExecutable::create): Don't use a finalizer -- the heap
will call us back to destroy our code block.
(JSC::FunctionExecutable::discardCode): Renamed to clearCodeIfNotCompiling()
for clarity.
(JSC::FunctionExecutable::isCompiling): New helper function, for clarity.
(JSC::ScriptExecutable::clearCodeVirtual): New helper function, since
the heap needs to make polymorphic calls to clear code.
* runtime/JSGlobalData.cpp:
(JSC::StackPreservingRecompiler::operator()):
* runtime/JSGlobalObject.cpp:
(JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Updated for
renames.
Source/WTF:
* wtf/ExportMacros.h (WTF_INTERNAL, HAVE_INTERNAL_VISIBILITY): New
defines. Regardless of what the port does about visibility in
general, for code referenced only from assembly it is useful to
give it internal visibility.
* wtf/InlineASM.h: Split SYMBOL_STRING_RELOCATION into
LOCAL_REFERENCE and GLOBAL_REFERENCE; the former will try to avoid
indirection if HAVE(INTERNAL_VISIBILITY).
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@119857 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog
index d8effc9..da79638 100644
--- a/Source/JavaScriptCore/ChangeLog
+++ b/Source/JavaScriptCore/ChangeLog
@@ -1,3 +1,24 @@
+2012-06-08 Andy Wingo <wingo@igalia.com>
+
+ Explictly mark stubs called by JIT as being internal
+ https://bugs.webkit.org/show_bug.cgi?id=88552
+
+ Reviewed by Filip Pizlo.
+
+ * dfg/DFGOSRExitCompiler.h:
+ * dfg/DFGOperations.cpp:
+ * dfg/DFGOperations.h:
+ * jit/HostCallReturnValue.h:
+ * jit/JITStubs.cpp:
+ * jit/JITStubs.h:
+ * jit/ThunkGenerators.cpp:
+ * llint/LLIntSlowPaths.h: Mark a bunch of stubs as being
+ WTF_INTERNAL. Change most calls to SYMBOL_STRING_RELOCATION to
+ LOCAL_REFERENCE, or GLOBAL_REFERENCE in the case of the wrappers
+ to truly global symbols.
+ * offlineasm/asm.rb: Generate LOCAL_REFERENCE instead of
+ SYMBOL_STRING_RELOCATION.
+
Don't rely on weak pointers for eager CodeBlock finalization
https://bugs.webkit.org/show_bug.cgi?id=88465
diff --git a/Source/JavaScriptCore/dfg/DFGOSRExitCompiler.h b/Source/JavaScriptCore/dfg/DFGOSRExitCompiler.h
index 86345b0..ae29a92 100644
--- a/Source/JavaScriptCore/dfg/DFGOSRExitCompiler.h
+++ b/Source/JavaScriptCore/dfg/DFGOSRExitCompiler.h
@@ -78,7 +78,7 @@
};
extern "C" {
-void DFG_OPERATION compileOSRExit(ExecState*);
+void DFG_OPERATION compileOSRExit(ExecState*) WTF_INTERNAL;
}
} } // namespace JSC::DFG
diff --git a/Source/JavaScriptCore/dfg/DFGOperations.cpp b/Source/JavaScriptCore/dfg/DFGOperations.cpp
index 73beff7..ec3d4cc 100644
--- a/Source/JavaScriptCore/dfg/DFGOperations.cpp
+++ b/Source/JavaScriptCore/dfg/DFGOperations.cpp
@@ -51,7 +51,7 @@
HIDE_SYMBOL(function) "\n" \
SYMBOL_STRING(function) ":" "\n" \
"mov (%rsp), %" STRINGIZE(register) "\n" \
- "jmp " SYMBOL_STRING_RELOCATION(function##WithReturnAddress) "\n" \
+ "jmp " LOCAL_REFERENCE(function##WithReturnAddress) "\n" \
);
#define FUNCTION_WRAPPER_WITH_RETURN_ADDRESS_E(function) FUNCTION_WRAPPER_WITH_RETURN_ADDRESS(function, rsi)
#define FUNCTION_WRAPPER_WITH_RETURN_ADDRESS_ECI(function) FUNCTION_WRAPPER_WITH_RETURN_ADDRESS(function, rcx)
@@ -68,7 +68,7 @@
SYMBOL_STRING(function) ":" "\n" \
"mov (%esp), %eax\n" \
"mov %eax, " STRINGIZE(offset) "(%esp)\n" \
- "jmp " SYMBOL_STRING_RELOCATION(function##WithReturnAddress) "\n" \
+ "jmp " LOCAL_REFERENCE(function##WithReturnAddress) "\n" \
);
#define FUNCTION_WRAPPER_WITH_RETURN_ADDRESS_E(function) FUNCTION_WRAPPER_WITH_RETURN_ADDRESS(function, 8)
#define FUNCTION_WRAPPER_WITH_RETURN_ADDRESS_ECI(function) FUNCTION_WRAPPER_WITH_RETURN_ADDRESS(function, 16)
@@ -87,7 +87,7 @@
".thumb_func " THUMB_FUNC_PARAM(function) "\n" \
SYMBOL_STRING(function) ":" "\n" \
"mov a2, lr" "\n" \
- "b " SYMBOL_STRING_RELOCATION(function) "WithReturnAddress" "\n" \
+ "b " LOCAL_REFERENCE(function) "WithReturnAddress" "\n" \
);
#define FUNCTION_WRAPPER_WITH_RETURN_ADDRESS_ECI(function) \
@@ -100,7 +100,7 @@
".thumb_func " THUMB_FUNC_PARAM(function) "\n" \
SYMBOL_STRING(function) ":" "\n" \
"mov a4, lr" "\n" \
- "b " SYMBOL_STRING_RELOCATION(function) "WithReturnAddress" "\n" \
+ "b " LOCAL_REFERENCE(function) "WithReturnAddress" "\n" \
);
// EncodedJSValue in JSVALUE32_64 is a 64-bit integer. When being compiled in ARM EABI, it must be aligned even-numbered register (r0, r2 or [sp]).
@@ -123,7 +123,7 @@
".thumb_func " THUMB_FUNC_PARAM(function) "\n" \
SYMBOL_STRING(function) ":" "\n" \
INSTRUCTION_STORE_RETURN_ADDRESS_EJI "\n" \
- "b " SYMBOL_STRING_RELOCATION(function) "WithReturnAddress" "\n" \
+ "b " LOCAL_REFERENCE(function) "WithReturnAddress" "\n" \
);
#define FUNCTION_WRAPPER_WITH_RETURN_ADDRESS_EJCI(function) \
@@ -136,25 +136,25 @@
".thumb_func " THUMB_FUNC_PARAM(function) "\n" \
SYMBOL_STRING(function) ":" "\n" \
INSTRUCTION_STORE_RETURN_ADDRESS_EJCI "\n" \
- "b " SYMBOL_STRING_RELOCATION(function) "WithReturnAddress" "\n" \
+ "b " LOCAL_REFERENCE(function) "WithReturnAddress" "\n" \
);
#endif
#define P_FUNCTION_WRAPPER_WITH_RETURN_ADDRESS_E(function) \
-void* DFG_OPERATION function##WithReturnAddress(ExecState*, ReturnAddressPtr) REFERENCED_FROM_ASM; \
+void* DFG_OPERATION function##WithReturnAddress(ExecState*, ReturnAddressPtr) REFERENCED_FROM_ASM WTF_INTERNAL; \
FUNCTION_WRAPPER_WITH_RETURN_ADDRESS_E(function)
#define J_FUNCTION_WRAPPER_WITH_RETURN_ADDRESS_ECI(function) \
-EncodedJSValue DFG_OPERATION function##WithReturnAddress(ExecState*, JSCell*, Identifier*, ReturnAddressPtr) REFERENCED_FROM_ASM; \
+EncodedJSValue DFG_OPERATION function##WithReturnAddress(ExecState*, JSCell*, Identifier*, ReturnAddressPtr) REFERENCED_FROM_ASM WTF_INTERNAL; \
FUNCTION_WRAPPER_WITH_RETURN_ADDRESS_ECI(function)
#define J_FUNCTION_WRAPPER_WITH_RETURN_ADDRESS_EJI(function) \
-EncodedJSValue DFG_OPERATION function##WithReturnAddress(ExecState*, EncodedJSValue, Identifier*, ReturnAddressPtr) REFERENCED_FROM_ASM; \
+EncodedJSValue DFG_OPERATION function##WithReturnAddress(ExecState*, EncodedJSValue, Identifier*, ReturnAddressPtr) REFERENCED_FROM_ASM WTF_INTERNAL; \
FUNCTION_WRAPPER_WITH_RETURN_ADDRESS_EJI(function)
#define V_FUNCTION_WRAPPER_WITH_RETURN_ADDRESS_EJCI(function) \
-void DFG_OPERATION function##WithReturnAddress(ExecState*, EncodedJSValue, JSCell*, Identifier*, ReturnAddressPtr) REFERENCED_FROM_ASM; \
+void DFG_OPERATION function##WithReturnAddress(ExecState*, EncodedJSValue, JSCell*, Identifier*, ReturnAddressPtr) REFERENCED_FROM_ASM WTF_INTERNAL; \
FUNCTION_WRAPPER_WITH_RETURN_ADDRESS_EJCI(function)
namespace JSC { namespace DFG {
@@ -1264,7 +1264,7 @@
SYMBOL_STRING(getHostCallReturnValue) ":" "\n"
"mov -40(%r13), %r13\n"
"mov %r13, %rdi\n"
- "jmp " SYMBOL_STRING_RELOCATION(getHostCallReturnValueWithExecState) "\n"
+ "jmp " LOCAL_REFERENCE(getHostCallReturnValueWithExecState) "\n"
);
#elif CPU(X86)
asm (
@@ -1274,7 +1274,7 @@
SYMBOL_STRING(getHostCallReturnValue) ":" "\n"
"mov -40(%edi), %edi\n"
"mov %edi, 4(%esp)\n"
- "jmp " SYMBOL_STRING_RELOCATION(getHostCallReturnValueWithExecState) "\n"
+ "jmp " LOCAL_REFERENCE(getHostCallReturnValueWithExecState) "\n"
);
#elif CPU(ARM_THUMB2)
asm (
@@ -1287,7 +1287,7 @@
SYMBOL_STRING(getHostCallReturnValue) ":" "\n"
"ldr r5, [r5, #-40]" "\n"
"mov r0, r5" "\n"
- "b " SYMBOL_STRING_RELOCATION(getHostCallReturnValueWithExecState) "\n"
+ "b " LOCAL_REFERENCE(getHostCallReturnValueWithExecState) "\n"
);
#endif
diff --git a/Source/JavaScriptCore/dfg/DFGOperations.h b/Source/JavaScriptCore/dfg/DFGOperations.h
index 84fc570..58aa68b 100644
--- a/Source/JavaScriptCore/dfg/DFGOperations.h
+++ b/Source/JavaScriptCore/dfg/DFGOperations.h
@@ -103,76 +103,76 @@
typedef void* DFG_OPERATION (*P_DFGOperation_E)(ExecState*);
// These routines are provide callbacks out to C++ implementations of operations too complex to JIT.
-JSCell* DFG_OPERATION operationNewObject(ExecState*);
-JSCell* DFG_OPERATION operationCreateThis(ExecState*, JSCell* constructor);
-EncodedJSValue DFG_OPERATION operationConvertThis(ExecState*, EncodedJSValue encodedOp1);
-EncodedJSValue DFG_OPERATION operationValueAdd(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
-EncodedJSValue DFG_OPERATION operationValueAddNotNumber(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
-EncodedJSValue DFG_OPERATION operationGetByVal(ExecState*, EncodedJSValue encodedBase, EncodedJSValue encodedProperty);
-EncodedJSValue DFG_OPERATION operationGetByValCell(ExecState*, JSCell*, EncodedJSValue encodedProperty);
-EncodedJSValue DFG_OPERATION operationGetById(ExecState*, EncodedJSValue, Identifier*);
-EncodedJSValue DFG_OPERATION operationGetByIdBuildList(ExecState*, EncodedJSValue, Identifier*);
-EncodedJSValue DFG_OPERATION operationGetByIdProtoBuildList(ExecState*, EncodedJSValue, Identifier*);
-EncodedJSValue DFG_OPERATION operationGetByIdOptimize(ExecState*, EncodedJSValue, Identifier*);
-EncodedJSValue DFG_OPERATION operationCallCustomGetter(ExecState*, JSCell*, PropertySlot::GetValueFunc, Identifier*);
-EncodedJSValue DFG_OPERATION operationCallGetter(ExecState*, JSCell*, JSCell*);
-EncodedJSValue DFG_OPERATION operationResolve(ExecState*, Identifier*);
-EncodedJSValue DFG_OPERATION operationResolveBase(ExecState*, Identifier*);
-EncodedJSValue DFG_OPERATION operationResolveBaseStrictPut(ExecState*, Identifier*);
-EncodedJSValue DFG_OPERATION operationResolveGlobal(ExecState*, GlobalResolveInfo*, Identifier*);
-EncodedJSValue DFG_OPERATION operationToPrimitive(ExecState*, EncodedJSValue);
-EncodedJSValue DFG_OPERATION operationStrCat(ExecState*, void*, size_t);
-EncodedJSValue DFG_OPERATION operationNewArray(ExecState*, void*, size_t);
-EncodedJSValue DFG_OPERATION operationNewArrayBuffer(ExecState*, size_t, size_t);
-EncodedJSValue DFG_OPERATION operationNewRegexp(ExecState*, void*);
-void DFG_OPERATION operationPutByValStrict(ExecState*, EncodedJSValue encodedBase, EncodedJSValue encodedProperty, EncodedJSValue encodedValue);
-void DFG_OPERATION operationPutByValNonStrict(ExecState*, EncodedJSValue encodedBase, EncodedJSValue encodedProperty, EncodedJSValue encodedValue);
-void DFG_OPERATION operationPutByValCellStrict(ExecState*, JSCell*, EncodedJSValue encodedProperty, EncodedJSValue encodedValue);
-void DFG_OPERATION operationPutByValCellNonStrict(ExecState*, JSCell*, EncodedJSValue encodedProperty, EncodedJSValue encodedValue);
-void DFG_OPERATION operationPutByValBeyondArrayBoundsStrict(ExecState*, JSArray*, int32_t index, EncodedJSValue encodedValue);
-void DFG_OPERATION operationPutByValBeyondArrayBoundsNonStrict(ExecState*, JSArray*, int32_t index, EncodedJSValue encodedValue);
-EncodedJSValue DFG_OPERATION operationArrayPush(ExecState*, EncodedJSValue encodedValue, JSArray*);
-EncodedJSValue DFG_OPERATION operationArrayPop(ExecState*, JSArray*);
-EncodedJSValue DFG_OPERATION operationRegExpExec(ExecState*, JSCell*, JSCell*);
-void DFG_OPERATION operationPutByIdStrict(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*);
-void DFG_OPERATION operationPutByIdNonStrict(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*);
-void DFG_OPERATION operationPutByIdDirectStrict(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*);
-void DFG_OPERATION operationPutByIdDirectNonStrict(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*);
-void DFG_OPERATION operationPutByIdStrictOptimize(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*);
-void DFG_OPERATION operationPutByIdNonStrictOptimize(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*);
-void DFG_OPERATION operationPutByIdDirectStrictOptimize(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*);
-void DFG_OPERATION operationPutByIdDirectNonStrictOptimize(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*);
-void DFG_OPERATION operationPutByIdStrictBuildList(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*);
-void DFG_OPERATION operationPutByIdNonStrictBuildList(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*);
-void DFG_OPERATION operationPutByIdDirectStrictBuildList(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*);
-void DFG_OPERATION operationPutByIdDirectNonStrictBuildList(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*);
+JSCell* DFG_OPERATION operationNewObject(ExecState*) WTF_INTERNAL;
+JSCell* DFG_OPERATION operationCreateThis(ExecState*, JSCell* constructor) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationConvertThis(ExecState*, EncodedJSValue encodedOp1) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationValueAdd(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationValueAddNotNumber(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationGetByVal(ExecState*, EncodedJSValue encodedBase, EncodedJSValue encodedProperty) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationGetByValCell(ExecState*, JSCell*, EncodedJSValue encodedProperty) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationGetById(ExecState*, EncodedJSValue, Identifier*) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationGetByIdBuildList(ExecState*, EncodedJSValue, Identifier*) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationGetByIdProtoBuildList(ExecState*, EncodedJSValue, Identifier*) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationGetByIdOptimize(ExecState*, EncodedJSValue, Identifier*) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationCallCustomGetter(ExecState*, JSCell*, PropertySlot::GetValueFunc, Identifier*) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationCallGetter(ExecState*, JSCell*, JSCell*) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationResolve(ExecState*, Identifier*) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationResolveBase(ExecState*, Identifier*) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationResolveBaseStrictPut(ExecState*, Identifier*) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationResolveGlobal(ExecState*, GlobalResolveInfo*, Identifier*) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationToPrimitive(ExecState*, EncodedJSValue) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationStrCat(ExecState*, void*, size_t) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationNewArray(ExecState*, void*, size_t) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationNewArrayBuffer(ExecState*, size_t, size_t) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationNewRegexp(ExecState*, void*) WTF_INTERNAL;
+void DFG_OPERATION operationPutByValStrict(ExecState*, EncodedJSValue encodedBase, EncodedJSValue encodedProperty, EncodedJSValue encodedValue) WTF_INTERNAL;
+void DFG_OPERATION operationPutByValNonStrict(ExecState*, EncodedJSValue encodedBase, EncodedJSValue encodedProperty, EncodedJSValue encodedValue) WTF_INTERNAL;
+void DFG_OPERATION operationPutByValCellStrict(ExecState*, JSCell*, EncodedJSValue encodedProperty, EncodedJSValue encodedValue) WTF_INTERNAL;
+void DFG_OPERATION operationPutByValCellNonStrict(ExecState*, JSCell*, EncodedJSValue encodedProperty, EncodedJSValue encodedValue) WTF_INTERNAL;
+void DFG_OPERATION operationPutByValBeyondArrayBoundsStrict(ExecState*, JSArray*, int32_t index, EncodedJSValue encodedValue) WTF_INTERNAL;
+void DFG_OPERATION operationPutByValBeyondArrayBoundsNonStrict(ExecState*, JSArray*, int32_t index, EncodedJSValue encodedValue) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationArrayPush(ExecState*, EncodedJSValue encodedValue, JSArray*) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationArrayPop(ExecState*, JSArray*) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationRegExpExec(ExecState*, JSCell*, JSCell*) WTF_INTERNAL;
+void DFG_OPERATION operationPutByIdStrict(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*) WTF_INTERNAL;
+void DFG_OPERATION operationPutByIdNonStrict(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*) WTF_INTERNAL;
+void DFG_OPERATION operationPutByIdDirectStrict(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*) WTF_INTERNAL;
+void DFG_OPERATION operationPutByIdDirectNonStrict(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*) WTF_INTERNAL;
+void DFG_OPERATION operationPutByIdStrictOptimize(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*) WTF_INTERNAL;
+void DFG_OPERATION operationPutByIdNonStrictOptimize(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*) WTF_INTERNAL;
+void DFG_OPERATION operationPutByIdDirectStrictOptimize(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*) WTF_INTERNAL;
+void DFG_OPERATION operationPutByIdDirectNonStrictOptimize(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*) WTF_INTERNAL;
+void DFG_OPERATION operationPutByIdStrictBuildList(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*) WTF_INTERNAL;
+void DFG_OPERATION operationPutByIdNonStrictBuildList(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*) WTF_INTERNAL;
+void DFG_OPERATION operationPutByIdDirectStrictBuildList(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*) WTF_INTERNAL;
+void DFG_OPERATION operationPutByIdDirectNonStrictBuildList(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*) WTF_INTERNAL;
// These comparisons return a boolean within a size_t such that the value is zero extended to fill the register.
-size_t DFG_OPERATION operationRegExpTest(ExecState*, JSCell*, JSCell*);
-size_t DFG_OPERATION operationCompareLess(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
-size_t DFG_OPERATION operationCompareLessEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
-size_t DFG_OPERATION operationCompareGreater(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
-size_t DFG_OPERATION operationCompareGreaterEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
-size_t DFG_OPERATION operationCompareEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
-size_t DFG_OPERATION operationCompareStrictEqCell(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
-size_t DFG_OPERATION operationCompareStrictEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
-void* DFG_OPERATION operationVirtualCall(ExecState*);
-void* DFG_OPERATION operationLinkCall(ExecState*);
-void* DFG_OPERATION operationVirtualConstruct(ExecState*);
-void* DFG_OPERATION operationLinkConstruct(ExecState*);
-JSCell* DFG_OPERATION operationCreateActivation(ExecState*);
-JSCell* DFG_OPERATION operationCreateArguments(ExecState*);
-JSCell* DFG_OPERATION operationCreateInlinedArguments(ExecState*, InlineCallFrame*);
-void DFG_OPERATION operationTearOffActivation(ExecState*, JSCell*, int32_t unmodifiedArgumentsRegister);
-void DFG_OPERATION operationTearOffArguments(ExecState*, JSCell*);
-void DFG_OPERATION operationTearOffInlinedArguments(ExecState*, JSCell*, InlineCallFrame*);
-EncodedJSValue DFG_OPERATION operationGetArgumentsLength(ExecState*, int32_t);
- EncodedJSValue DFG_OPERATION operationGetInlinedArgumentByVal(ExecState*, int32_t, InlineCallFrame*, int32_t);
-EncodedJSValue DFG_OPERATION operationGetArgumentByVal(ExecState*, int32_t, int32_t);
-JSCell* DFG_OPERATION operationNewFunction(ExecState*, JSCell*);
-JSCell* DFG_OPERATION operationNewFunctionExpression(ExecState*, JSCell*);
-double DFG_OPERATION operationFModOnInts(int32_t, int32_t);
-size_t DFG_OPERATION operationIsObject(EncodedJSValue);
-size_t DFG_OPERATION operationIsFunction(EncodedJSValue);
+size_t DFG_OPERATION operationRegExpTest(ExecState*, JSCell*, JSCell*) WTF_INTERNAL;
+size_t DFG_OPERATION operationCompareLess(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2) WTF_INTERNAL;
+size_t DFG_OPERATION operationCompareLessEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2) WTF_INTERNAL;
+size_t DFG_OPERATION operationCompareGreater(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2) WTF_INTERNAL;
+size_t DFG_OPERATION operationCompareGreaterEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2) WTF_INTERNAL;
+size_t DFG_OPERATION operationCompareEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2) WTF_INTERNAL;
+size_t DFG_OPERATION operationCompareStrictEqCell(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2) WTF_INTERNAL;
+size_t DFG_OPERATION operationCompareStrictEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2) WTF_INTERNAL;
+void* DFG_OPERATION operationVirtualCall(ExecState*) WTF_INTERNAL;
+void* DFG_OPERATION operationLinkCall(ExecState*) WTF_INTERNAL;
+void* DFG_OPERATION operationVirtualConstruct(ExecState*) WTF_INTERNAL;
+void* DFG_OPERATION operationLinkConstruct(ExecState*) WTF_INTERNAL;
+JSCell* DFG_OPERATION operationCreateActivation(ExecState*) WTF_INTERNAL;
+JSCell* DFG_OPERATION operationCreateArguments(ExecState*) WTF_INTERNAL;
+JSCell* DFG_OPERATION operationCreateInlinedArguments(ExecState*, InlineCallFrame*) WTF_INTERNAL;
+void DFG_OPERATION operationTearOffActivation(ExecState*, JSCell*, int32_t unmodifiedArgumentsRegister) WTF_INTERNAL;
+void DFG_OPERATION operationTearOffArguments(ExecState*, JSCell*) WTF_INTERNAL;
+void DFG_OPERATION operationTearOffInlinedArguments(ExecState*, JSCell*, InlineCallFrame*) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationGetArgumentsLength(ExecState*, int32_t) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationGetInlinedArgumentByVal(ExecState*, int32_t, InlineCallFrame*, int32_t) WTF_INTERNAL;
+EncodedJSValue DFG_OPERATION operationGetArgumentByVal(ExecState*, int32_t, int32_t) WTF_INTERNAL;
+JSCell* DFG_OPERATION operationNewFunction(ExecState*, JSCell*) WTF_INTERNAL;
+JSCell* DFG_OPERATION operationNewFunctionExpression(ExecState*, JSCell*) WTF_INTERNAL;
+double DFG_OPERATION operationFModOnInts(int32_t, int32_t) WTF_INTERNAL;
+size_t DFG_OPERATION operationIsObject(EncodedJSValue) WTF_INTERNAL;
+size_t DFG_OPERATION operationIsFunction(EncodedJSValue) WTF_INTERNAL;
// This method is used to lookup an exception hander, keyed by faultLocation, which is
// the return location from one of the calls out to one of the helper operations above.
@@ -212,17 +212,17 @@
return createDFGHandler(exec, handler).u.encoded;
}
#endif
-DFGHandlerEncoded DFG_OPERATION lookupExceptionHandler(ExecState*, uint32_t);
-DFGHandlerEncoded DFG_OPERATION lookupExceptionHandlerInStub(ExecState*, StructureStubInfo*);
+DFGHandlerEncoded DFG_OPERATION lookupExceptionHandler(ExecState*, uint32_t) WTF_INTERNAL;
+DFGHandlerEncoded DFG_OPERATION lookupExceptionHandlerInStub(ExecState*, StructureStubInfo*) WTF_INTERNAL;
// These operations implement the implicitly called ToInt32, ToNumber, and ToBoolean conversions from ES5.
-double DFG_OPERATION dfgConvertJSValueToNumber(ExecState*, EncodedJSValue);
+double DFG_OPERATION dfgConvertJSValueToNumber(ExecState*, EncodedJSValue) WTF_INTERNAL;
// This conversion returns an int32_t within a size_t such that the value is zero extended to fill the register.
-size_t DFG_OPERATION dfgConvertJSValueToInt32(ExecState*, EncodedJSValue);
-size_t DFG_OPERATION dfgConvertJSValueToBoolean(ExecState*, EncodedJSValue);
+size_t DFG_OPERATION dfgConvertJSValueToInt32(ExecState*, EncodedJSValue) WTF_INTERNAL;
+size_t DFG_OPERATION dfgConvertJSValueToBoolean(ExecState*, EncodedJSValue) WTF_INTERNAL;
#if DFG_ENABLE(VERBOSE_SPECULATION_FAILURE)
-void DFG_OPERATION debugOperationPrintSpeculationFailure(ExecState*, void*);
+void DFG_OPERATION debugOperationPrintSpeculationFailure(ExecState*, void*) WTF_INTERNAL;
#endif
} // extern "C"
diff --git a/Source/JavaScriptCore/jit/HostCallReturnValue.h b/Source/JavaScriptCore/jit/HostCallReturnValue.h
index fc9127f..b134c73 100644
--- a/Source/JavaScriptCore/jit/HostCallReturnValue.h
+++ b/Source/JavaScriptCore/jit/HostCallReturnValue.h
@@ -43,10 +43,10 @@
namespace JSC {
-extern "C" EncodedJSValue HOST_CALL_RETURN_VALUE_OPTION getHostCallReturnValue() REFERENCED_FROM_ASM;
+extern "C" EncodedJSValue HOST_CALL_RETURN_VALUE_OPTION getHostCallReturnValue() REFERENCED_FROM_ASM WTF_INTERNAL;
// This is a public declaration only to convince CLANG not to elide it.
-extern "C" EncodedJSValue HOST_CALL_RETURN_VALUE_OPTION getHostCallReturnValueWithExecState(ExecState*) REFERENCED_FROM_ASM;
+extern "C" EncodedJSValue HOST_CALL_RETURN_VALUE_OPTION getHostCallReturnValueWithExecState(ExecState*) REFERENCED_FROM_ASM WTF_INTERNAL;
inline void initializeHostCallReturnValue()
{
diff --git a/Source/JavaScriptCore/jit/JITStubs.cpp b/Source/JavaScriptCore/jit/JITStubs.cpp
index dd9d22d..5ea07e6 100644
--- a/Source/JavaScriptCore/jit/JITStubs.cpp
+++ b/Source/JavaScriptCore/jit/JITStubs.cpp
@@ -112,7 +112,7 @@
HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
"movl %esp, %ecx" "\n"
- "call " SYMBOL_STRING_RELOCATION(cti_vm_throw) "\n"
+ "call " LOCAL_REFERENCE(cti_vm_throw) "\n"
"int3" "\n"
);
@@ -172,7 +172,7 @@
HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
"movq %rsp, %rdi" "\n"
- "call " SYMBOL_STRING_RELOCATION(cti_vm_throw) "\n"
+ "call " LOCAL_REFERENCE(cti_vm_throw) "\n"
"int3" "\n"
);
@@ -416,7 +416,7 @@
HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
"movq %rsp, %rdi" "\n"
- "call " SYMBOL_STRING_RELOCATION(cti_vm_throw) "\n"
+ "call " LOCAL_REFERENCE(cti_vm_throw) "\n"
"int3" "\n"
);
@@ -584,7 +584,7 @@
".thumb_func " THUMB_FUNC_PARAM(ctiVMThrowTrampoline) "\n"
SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
"mov r0, sp" "\n"
- "bl " SYMBOL_STRING_RELOCATION(cti_vm_throw) "\n"
+ "bl " LOCAL_REFERENCE(cti_vm_throw) "\n"
"ldr r11, [sp, #" STRINGIZE_VALUE_OF(PRESERVED_R11_OFFSET) "]" "\n"
"ldr r10, [sp, #" STRINGIZE_VALUE_OF(PRESERVED_R10_OFFSET) "]" "\n"
"ldr r9, [sp, #" STRINGIZE_VALUE_OF(PRESERVED_R9_OFFSET) "]" "\n"
diff --git a/Source/JavaScriptCore/jit/JITStubs.h b/Source/JavaScriptCore/jit/JITStubs.h
index 4182f43..a6f7947 100644
--- a/Source/JavaScriptCore/jit/JITStubs.h
+++ b/Source/JavaScriptCore/jit/JITStubs.h
@@ -341,129 +341,129 @@
};
extern "C" {
- EncodedJSValue JIT_STUB cti_op_add(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_bitand(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_bitor(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_bitxor(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_call_NotJSFunction(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_call_eval(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_construct_NotJSConstruct(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_create_this(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_convert_this(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_create_arguments(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_del_by_id(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_del_by_val(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_div(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_get_by_id(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_get_by_id_array_fail(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_get_by_id_custom_stub(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_get_by_id_generic(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_get_by_id_getter_stub(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_get_by_id_method_check(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_get_by_id_method_check_update(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_get_by_id_proto_fail(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_get_by_id_proto_list(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_get_by_id_proto_list_full(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_get_by_id_self_fail(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_get_by_id_string_fail(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_get_by_val(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_get_by_val_string(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_in(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_instanceof(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_is_boolean(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_is_function(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_is_number(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_is_object(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_is_string(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_is_undefined(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_less(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_lesseq(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_greater(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_greatereq(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_lshift(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_mod(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_mul(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_negate(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_not(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_nstricteq(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_post_dec(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_post_inc(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_pre_dec(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_pre_inc(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_resolve(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_resolve_base(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_resolve_base_strict_put(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_ensure_property_exists(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_resolve_global(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_resolve_global_dynamic(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_resolve_skip(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_resolve_with_base(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_resolve_with_this(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_rshift(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_strcat(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_stricteq(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_sub(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_to_jsnumber(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_to_primitive(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_typeof(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_op_urshift(STUB_ARGS_DECLARATION);
- EncodedJSValue JIT_STUB cti_to_object(STUB_ARGS_DECLARATION);
- JSObject* JIT_STUB cti_op_new_array(STUB_ARGS_DECLARATION);
- JSObject* JIT_STUB cti_op_new_array_buffer(STUB_ARGS_DECLARATION);
- JSObject* JIT_STUB cti_op_new_func(STUB_ARGS_DECLARATION);
- JSObject* JIT_STUB cti_op_new_func_exp(STUB_ARGS_DECLARATION);
- JSObject* JIT_STUB cti_op_new_object(STUB_ARGS_DECLARATION);
- JSObject* JIT_STUB cti_op_new_regexp(STUB_ARGS_DECLARATION);
- JSObject* JIT_STUB cti_op_push_activation(STUB_ARGS_DECLARATION);
- JSObject* JIT_STUB cti_op_push_new_scope(STUB_ARGS_DECLARATION);
- JSObject* JIT_STUB cti_op_push_scope(STUB_ARGS_DECLARATION);
- JSObject* JIT_STUB cti_op_put_by_id_transition_realloc(STUB_ARGS_DECLARATION);
- JSPropertyNameIterator* JIT_STUB cti_op_get_pnames(STUB_ARGS_DECLARATION);
- int JIT_STUB cti_op_eq(STUB_ARGS_DECLARATION);
- int JIT_STUB cti_op_eq_strings(STUB_ARGS_DECLARATION);
- int JIT_STUB cti_op_jless(STUB_ARGS_DECLARATION);
- int JIT_STUB cti_op_jlesseq(STUB_ARGS_DECLARATION);
- int JIT_STUB cti_op_jgreater(STUB_ARGS_DECLARATION);
- int JIT_STUB cti_op_jgreatereq(STUB_ARGS_DECLARATION);
- int JIT_STUB cti_op_jtrue(STUB_ARGS_DECLARATION);
- void* JIT_STUB cti_op_load_varargs(STUB_ARGS_DECLARATION);
- int JIT_STUB cti_timeout_check(STUB_ARGS_DECLARATION);
- int JIT_STUB cti_has_property(STUB_ARGS_DECLARATION);
- void JIT_STUB cti_op_check_has_instance(STUB_ARGS_DECLARATION);
- void JIT_STUB cti_op_debug(STUB_ARGS_DECLARATION);
- void JIT_STUB cti_op_end(STUB_ARGS_DECLARATION);
- void JIT_STUB cti_op_jmp_scopes(STUB_ARGS_DECLARATION);
- void JIT_STUB cti_op_pop_scope(STUB_ARGS_DECLARATION);
- void JIT_STUB cti_op_profile_did_call(STUB_ARGS_DECLARATION);
- void JIT_STUB cti_op_profile_will_call(STUB_ARGS_DECLARATION);
- void JIT_STUB cti_op_put_by_id(STUB_ARGS_DECLARATION);
- void JIT_STUB cti_op_put_by_id_fail(STUB_ARGS_DECLARATION);
- void JIT_STUB cti_op_put_by_id_generic(STUB_ARGS_DECLARATION);
- void JIT_STUB cti_op_put_by_id_direct(STUB_ARGS_DECLARATION);
- void JIT_STUB cti_op_put_by_id_direct_fail(STUB_ARGS_DECLARATION);
- void JIT_STUB cti_op_put_by_id_direct_generic(STUB_ARGS_DECLARATION);
- void JIT_STUB cti_op_put_by_index(STUB_ARGS_DECLARATION);
- void JIT_STUB cti_op_put_by_val(STUB_ARGS_DECLARATION);
- void JIT_STUB cti_op_put_getter_setter(STUB_ARGS_DECLARATION);
- void JIT_STUB cti_op_tear_off_activation(STUB_ARGS_DECLARATION);
- void JIT_STUB cti_op_tear_off_arguments(STUB_ARGS_DECLARATION);
- void JIT_STUB cti_op_throw_reference_error(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_add(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_bitand(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_bitor(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_bitxor(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_call_NotJSFunction(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_call_eval(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_construct_NotJSConstruct(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_create_this(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_convert_this(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_create_arguments(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_del_by_id(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_del_by_val(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_div(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_get_by_id(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_get_by_id_array_fail(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_get_by_id_custom_stub(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_get_by_id_generic(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_get_by_id_getter_stub(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_get_by_id_method_check(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_get_by_id_method_check_update(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_get_by_id_proto_fail(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_get_by_id_proto_list(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_get_by_id_proto_list_full(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_get_by_id_self_fail(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_get_by_id_string_fail(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_get_by_val(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_get_by_val_string(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_in(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_instanceof(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_is_boolean(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_is_function(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_is_number(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_is_object(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_is_string(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_is_undefined(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_less(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_lesseq(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_greater(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_greatereq(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_lshift(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_mod(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_mul(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_negate(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_not(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_nstricteq(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_post_dec(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_post_inc(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_pre_dec(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_pre_inc(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_resolve(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_resolve_base(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_resolve_base_strict_put(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_ensure_property_exists(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_resolve_global(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_resolve_global_dynamic(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_resolve_skip(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_resolve_with_base(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_resolve_with_this(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_rshift(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_strcat(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_stricteq(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_sub(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_to_jsnumber(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_to_primitive(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_typeof(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_op_urshift(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ EncodedJSValue JIT_STUB cti_to_object(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ JSObject* JIT_STUB cti_op_new_array(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ JSObject* JIT_STUB cti_op_new_array_buffer(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ JSObject* JIT_STUB cti_op_new_func(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ JSObject* JIT_STUB cti_op_new_func_exp(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ JSObject* JIT_STUB cti_op_new_object(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ JSObject* JIT_STUB cti_op_new_regexp(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ JSObject* JIT_STUB cti_op_push_activation(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ JSObject* JIT_STUB cti_op_push_new_scope(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ JSObject* JIT_STUB cti_op_push_scope(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ JSObject* JIT_STUB cti_op_put_by_id_transition_realloc(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ JSPropertyNameIterator* JIT_STUB cti_op_get_pnames(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ int JIT_STUB cti_op_eq(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ int JIT_STUB cti_op_eq_strings(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ int JIT_STUB cti_op_jless(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ int JIT_STUB cti_op_jlesseq(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ int JIT_STUB cti_op_jgreater(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ int JIT_STUB cti_op_jgreatereq(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ int JIT_STUB cti_op_jtrue(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void* JIT_STUB cti_op_load_varargs(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ int JIT_STUB cti_timeout_check(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ int JIT_STUB cti_has_property(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void JIT_STUB cti_op_check_has_instance(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void JIT_STUB cti_op_debug(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void JIT_STUB cti_op_end(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void JIT_STUB cti_op_jmp_scopes(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void JIT_STUB cti_op_pop_scope(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void JIT_STUB cti_op_profile_did_call(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void JIT_STUB cti_op_profile_will_call(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void JIT_STUB cti_op_put_by_id(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void JIT_STUB cti_op_put_by_id_fail(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void JIT_STUB cti_op_put_by_id_generic(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void JIT_STUB cti_op_put_by_id_direct(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void JIT_STUB cti_op_put_by_id_direct_fail(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void JIT_STUB cti_op_put_by_id_direct_generic(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void JIT_STUB cti_op_put_by_index(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void JIT_STUB cti_op_put_by_val(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void JIT_STUB cti_op_put_getter_setter(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void JIT_STUB cti_op_tear_off_activation(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void JIT_STUB cti_op_tear_off_arguments(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void JIT_STUB cti_op_throw_reference_error(STUB_ARGS_DECLARATION) WTF_INTERNAL;
#if ENABLE(DFG_JIT)
- void JIT_STUB cti_optimize_from_loop(STUB_ARGS_DECLARATION);
- void JIT_STUB cti_optimize_from_ret(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_optimize_from_loop(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void JIT_STUB cti_optimize_from_ret(STUB_ARGS_DECLARATION) WTF_INTERNAL;
#endif
- void* JIT_STUB cti_op_call_arityCheck(STUB_ARGS_DECLARATION);
- void* JIT_STUB cti_op_construct_arityCheck(STUB_ARGS_DECLARATION);
- void* JIT_STUB cti_op_call_jitCompile(STUB_ARGS_DECLARATION);
- void* JIT_STUB cti_op_construct_jitCompile(STUB_ARGS_DECLARATION);
- void* JIT_STUB cti_op_switch_char(STUB_ARGS_DECLARATION);
- void* JIT_STUB cti_op_switch_imm(STUB_ARGS_DECLARATION);
- void* JIT_STUB cti_op_switch_string(STUB_ARGS_DECLARATION);
- void* JIT_STUB cti_op_throw(STUB_ARGS_DECLARATION);
- void* JIT_STUB cti_register_file_check(STUB_ARGS_DECLARATION);
- void* JIT_STUB cti_vm_lazyLinkCall(STUB_ARGS_DECLARATION);
- void* JIT_STUB cti_vm_lazyLinkConstruct(STUB_ARGS_DECLARATION);
- void* JIT_STUB cti_vm_throw(STUB_ARGS_DECLARATION) REFERENCED_FROM_ASM;
+ void* JIT_STUB cti_op_call_arityCheck(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void* JIT_STUB cti_op_construct_arityCheck(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void* JIT_STUB cti_op_call_jitCompile(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void* JIT_STUB cti_op_construct_jitCompile(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void* JIT_STUB cti_op_switch_char(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void* JIT_STUB cti_op_switch_imm(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void* JIT_STUB cti_op_switch_string(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void* JIT_STUB cti_op_throw(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void* JIT_STUB cti_register_file_check(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void* JIT_STUB cti_vm_lazyLinkCall(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void* JIT_STUB cti_vm_lazyLinkConstruct(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+ void* JIT_STUB cti_vm_throw(STUB_ARGS_DECLARATION) REFERENCED_FROM_ASM WTF_INTERNAL;
} // extern "C"
#endif // ENABLE(JIT)
diff --git a/Source/JavaScriptCore/jit/ThunkGenerators.cpp b/Source/JavaScriptCore/jit/ThunkGenerators.cpp
index 1a9941f..de8c938 100644
--- a/Source/JavaScriptCore/jit/ThunkGenerators.cpp
+++ b/Source/JavaScriptCore/jit/ThunkGenerators.cpp
@@ -135,7 +135,7 @@
".globl " SYMBOL_STRING(function##Thunk) "\n" \
HIDE_SYMBOL(function##Thunk) "\n" \
SYMBOL_STRING(function##Thunk) ":" "\n" \
- "call " SYMBOL_STRING_RELOCATION(function) "\n" \
+ "call " GLOBAL_REFERENCE(function) "\n" \
"ret\n" \
);\
extern "C" { \
@@ -152,7 +152,7 @@
SYMBOL_STRING(function##Thunk) ":" "\n" \
"subl $8, %esp\n" \
"movsd %xmm0, (%esp) \n" \
- "call " SYMBOL_STRING_RELOCATION(function) "\n" \
+ "call " GLOBAL_REFERENCE(function) "\n" \
"fstpl (%esp) \n" \
"movsd (%esp), %xmm0 \n" \
"addl $8, %esp\n" \
diff --git a/Source/JavaScriptCore/llint/LLIntSlowPaths.h b/Source/JavaScriptCore/llint/LLIntSlowPaths.h
index a91cf79..3553462 100644
--- a/Source/JavaScriptCore/llint/LLIntSlowPaths.h
+++ b/Source/JavaScriptCore/llint/LLIntSlowPaths.h
@@ -78,118 +78,121 @@
#define LLINT_SLOW_PATH_DECL(name) \
extern "C" SlowPathReturnType llint_##name(ExecState* exec, Instruction* pc)
-LLINT_SLOW_PATH_DECL(trace_prologue);
-LLINT_SLOW_PATH_DECL(trace_prologue_function_for_call);
-LLINT_SLOW_PATH_DECL(trace_prologue_function_for_construct);
-LLINT_SLOW_PATH_DECL(trace_arityCheck_for_call);
-LLINT_SLOW_PATH_DECL(trace_arityCheck_for_construct);
-LLINT_SLOW_PATH_DECL(trace);
-LLINT_SLOW_PATH_DECL(special_trace);
-LLINT_SLOW_PATH_DECL(entry_osr);
-LLINT_SLOW_PATH_DECL(entry_osr_function_for_call);
-LLINT_SLOW_PATH_DECL(entry_osr_function_for_construct);
-LLINT_SLOW_PATH_DECL(entry_osr_function_for_call_arityCheck);
-LLINT_SLOW_PATH_DECL(entry_osr_function_for_construct_arityCheck);
-LLINT_SLOW_PATH_DECL(loop_osr);
-LLINT_SLOW_PATH_DECL(replace);
-LLINT_SLOW_PATH_DECL(register_file_check);
-LLINT_SLOW_PATH_DECL(slow_path_call_arityCheck);
-LLINT_SLOW_PATH_DECL(slow_path_construct_arityCheck);
-LLINT_SLOW_PATH_DECL(slow_path_create_activation);
-LLINT_SLOW_PATH_DECL(slow_path_create_arguments);
-LLINT_SLOW_PATH_DECL(slow_path_create_this);
-LLINT_SLOW_PATH_DECL(slow_path_convert_this);
-LLINT_SLOW_PATH_DECL(slow_path_new_object);
-LLINT_SLOW_PATH_DECL(slow_path_new_array);
-LLINT_SLOW_PATH_DECL(slow_path_new_array_buffer);
-LLINT_SLOW_PATH_DECL(slow_path_new_regexp);
-LLINT_SLOW_PATH_DECL(slow_path_not);
-LLINT_SLOW_PATH_DECL(slow_path_eq);
-LLINT_SLOW_PATH_DECL(slow_path_neq);
-LLINT_SLOW_PATH_DECL(slow_path_stricteq);
-LLINT_SLOW_PATH_DECL(slow_path_nstricteq);
-LLINT_SLOW_PATH_DECL(slow_path_less);
-LLINT_SLOW_PATH_DECL(slow_path_lesseq);
-LLINT_SLOW_PATH_DECL(slow_path_greater);
-LLINT_SLOW_PATH_DECL(slow_path_greatereq);
-LLINT_SLOW_PATH_DECL(slow_path_pre_inc);
-LLINT_SLOW_PATH_DECL(slow_path_pre_dec);
-LLINT_SLOW_PATH_DECL(slow_path_post_inc);
-LLINT_SLOW_PATH_DECL(slow_path_post_dec);
-LLINT_SLOW_PATH_DECL(slow_path_to_jsnumber);
-LLINT_SLOW_PATH_DECL(slow_path_negate);
-LLINT_SLOW_PATH_DECL(slow_path_add);
-LLINT_SLOW_PATH_DECL(slow_path_mul);
-LLINT_SLOW_PATH_DECL(slow_path_sub);
-LLINT_SLOW_PATH_DECL(slow_path_div);
-LLINT_SLOW_PATH_DECL(slow_path_mod);
-LLINT_SLOW_PATH_DECL(slow_path_lshift);
-LLINT_SLOW_PATH_DECL(slow_path_rshift);
-LLINT_SLOW_PATH_DECL(slow_path_urshift);
-LLINT_SLOW_PATH_DECL(slow_path_bitand);
-LLINT_SLOW_PATH_DECL(slow_path_bitor);
-LLINT_SLOW_PATH_DECL(slow_path_bitxor);
-LLINT_SLOW_PATH_DECL(slow_path_check_has_instance);
-LLINT_SLOW_PATH_DECL(slow_path_instanceof);
-LLINT_SLOW_PATH_DECL(slow_path_typeof);
-LLINT_SLOW_PATH_DECL(slow_path_is_object);
-LLINT_SLOW_PATH_DECL(slow_path_is_function);
-LLINT_SLOW_PATH_DECL(slow_path_in);
-LLINT_SLOW_PATH_DECL(slow_path_resolve);
-LLINT_SLOW_PATH_DECL(slow_path_resolve_skip);
-LLINT_SLOW_PATH_DECL(slow_path_resolve_global);
-LLINT_SLOW_PATH_DECL(slow_path_resolve_global_dynamic);
-LLINT_SLOW_PATH_DECL(slow_path_resolve_for_resolve_global_dynamic);
-LLINT_SLOW_PATH_DECL(slow_path_resolve_base);
-LLINT_SLOW_PATH_DECL(slow_path_ensure_property_exists);
-LLINT_SLOW_PATH_DECL(slow_path_resolve_with_base);
-LLINT_SLOW_PATH_DECL(slow_path_resolve_with_this);
-LLINT_SLOW_PATH_DECL(slow_path_get_by_id);
-LLINT_SLOW_PATH_DECL(slow_path_get_arguments_length);
-LLINT_SLOW_PATH_DECL(slow_path_put_by_id);
-LLINT_SLOW_PATH_DECL(slow_path_del_by_id);
-LLINT_SLOW_PATH_DECL(slow_path_get_by_val);
-LLINT_SLOW_PATH_DECL(slow_path_get_argument_by_val);
-LLINT_SLOW_PATH_DECL(slow_path_get_by_pname);
-LLINT_SLOW_PATH_DECL(slow_path_put_by_val);
-LLINT_SLOW_PATH_DECL(slow_path_del_by_val);
-LLINT_SLOW_PATH_DECL(slow_path_put_by_index);
-LLINT_SLOW_PATH_DECL(slow_path_put_getter_setter);
-LLINT_SLOW_PATH_DECL(slow_path_jmp_scopes);
-LLINT_SLOW_PATH_DECL(slow_path_jtrue);
-LLINT_SLOW_PATH_DECL(slow_path_jfalse);
-LLINT_SLOW_PATH_DECL(slow_path_jless);
-LLINT_SLOW_PATH_DECL(slow_path_jnless);
-LLINT_SLOW_PATH_DECL(slow_path_jgreater);
-LLINT_SLOW_PATH_DECL(slow_path_jngreater);
-LLINT_SLOW_PATH_DECL(slow_path_jlesseq);
-LLINT_SLOW_PATH_DECL(slow_path_jnlesseq);
-LLINT_SLOW_PATH_DECL(slow_path_jgreatereq);
-LLINT_SLOW_PATH_DECL(slow_path_jngreatereq);
-LLINT_SLOW_PATH_DECL(slow_path_switch_imm);
-LLINT_SLOW_PATH_DECL(slow_path_switch_char);
-LLINT_SLOW_PATH_DECL(slow_path_switch_string);
-LLINT_SLOW_PATH_DECL(slow_path_new_func);
-LLINT_SLOW_PATH_DECL(slow_path_new_func_exp);
-LLINT_SLOW_PATH_DECL(slow_path_call);
-LLINT_SLOW_PATH_DECL(slow_path_construct);
-LLINT_SLOW_PATH_DECL(slow_path_call_varargs);
-LLINT_SLOW_PATH_DECL(slow_path_call_eval);
-LLINT_SLOW_PATH_DECL(slow_path_tear_off_activation);
-LLINT_SLOW_PATH_DECL(slow_path_tear_off_arguments);
-LLINT_SLOW_PATH_DECL(slow_path_strcat);
-LLINT_SLOW_PATH_DECL(slow_path_to_primitive);
-LLINT_SLOW_PATH_DECL(slow_path_get_pnames);
-LLINT_SLOW_PATH_DECL(slow_path_next_pname);
-LLINT_SLOW_PATH_DECL(slow_path_push_scope);
-LLINT_SLOW_PATH_DECL(slow_path_pop_scope);
-LLINT_SLOW_PATH_DECL(slow_path_push_new_scope);
-LLINT_SLOW_PATH_DECL(slow_path_throw);
-LLINT_SLOW_PATH_DECL(slow_path_throw_reference_error);
-LLINT_SLOW_PATH_DECL(slow_path_debug);
-LLINT_SLOW_PATH_DECL(slow_path_profile_will_call);
-LLINT_SLOW_PATH_DECL(slow_path_profile_did_call);
-LLINT_SLOW_PATH_DECL(throw_from_native_call);
+#define LLINT_SLOW_PATH_HIDDEN_DECL(name) \
+ LLINT_SLOW_PATH_DECL(name) WTF_INTERNAL
+
+LLINT_SLOW_PATH_HIDDEN_DECL(trace_prologue);
+LLINT_SLOW_PATH_HIDDEN_DECL(trace_prologue_function_for_call);
+LLINT_SLOW_PATH_HIDDEN_DECL(trace_prologue_function_for_construct);
+LLINT_SLOW_PATH_HIDDEN_DECL(trace_arityCheck_for_call);
+LLINT_SLOW_PATH_HIDDEN_DECL(trace_arityCheck_for_construct);
+LLINT_SLOW_PATH_HIDDEN_DECL(trace);
+LLINT_SLOW_PATH_HIDDEN_DECL(special_trace);
+LLINT_SLOW_PATH_HIDDEN_DECL(entry_osr);
+LLINT_SLOW_PATH_HIDDEN_DECL(entry_osr_function_for_call);
+LLINT_SLOW_PATH_HIDDEN_DECL(entry_osr_function_for_construct);
+LLINT_SLOW_PATH_HIDDEN_DECL(entry_osr_function_for_call_arityCheck);
+LLINT_SLOW_PATH_HIDDEN_DECL(entry_osr_function_for_construct_arityCheck);
+LLINT_SLOW_PATH_HIDDEN_DECL(loop_osr);
+LLINT_SLOW_PATH_HIDDEN_DECL(replace);
+LLINT_SLOW_PATH_HIDDEN_DECL(register_file_check);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_call_arityCheck);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_construct_arityCheck);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_create_activation);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_create_arguments);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_create_this);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_convert_this);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_new_object);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_new_array);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_new_array_buffer);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_new_regexp);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_not);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_eq);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_neq);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_stricteq);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_nstricteq);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_less);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_lesseq);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_greater);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_greatereq);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_pre_inc);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_pre_dec);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_post_inc);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_post_dec);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_to_jsnumber);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_negate);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_add);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_mul);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_sub);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_div);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_mod);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_lshift);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_rshift);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_urshift);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_bitand);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_bitor);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_bitxor);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_check_has_instance);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_instanceof);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_typeof);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_is_object);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_is_function);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_in);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_resolve);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_resolve_skip);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_resolve_global);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_resolve_global_dynamic);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_resolve_for_resolve_global_dynamic);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_resolve_base);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_ensure_property_exists);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_resolve_with_base);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_resolve_with_this);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_get_by_id);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_get_arguments_length);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_put_by_id);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_del_by_id);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_get_by_val);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_get_argument_by_val);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_get_by_pname);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_put_by_val);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_del_by_val);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_put_by_index);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_put_getter_setter);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_jmp_scopes);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_jtrue);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_jfalse);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_jless);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_jnless);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_jgreater);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_jngreater);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_jlesseq);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_jnlesseq);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_jgreatereq);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_jngreatereq);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_switch_imm);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_switch_char);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_switch_string);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_new_func);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_new_func_exp);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_call);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_construct);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_call_varargs);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_call_eval);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_tear_off_activation);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_tear_off_arguments);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_strcat);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_to_primitive);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_get_pnames);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_next_pname);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_push_scope);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_pop_scope);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_push_new_scope);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_throw);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_throw_reference_error);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_debug);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_profile_will_call);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_profile_did_call);
+LLINT_SLOW_PATH_HIDDEN_DECL(throw_from_native_call);
} } // namespace JSC::LLInt
diff --git a/Source/JavaScriptCore/offlineasm/asm.rb b/Source/JavaScriptCore/offlineasm/asm.rb
index da5821f..50f9bc8 100644
--- a/Source/JavaScriptCore/offlineasm/asm.rb
+++ b/Source/JavaScriptCore/offlineasm/asm.rb
@@ -97,7 +97,7 @@
end
def self.labelReference(labelName)
- "\" SYMBOL_STRING_RELOCATION(#{labelName}) \""
+ "\" LOCAL_REFERENCE(#{labelName}) \""
end
def self.localLabelReference(labelName)