Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (118343 => 118344)
--- trunk/Source/_javascript_Core/ChangeLog 2012-05-24 10:30:27 UTC (rev 118343)
+++ trunk/Source/_javascript_Core/ChangeLog 2012-05-24 10:50:40 UTC (rev 118344)
@@ -1,3 +1,17 @@
+2012-05-24 Allan Sandfeld Jensen <[email protected]>
+
+ cti_vm_throw gets kicked out by gcc 4.6 -flto
+ https://bugs.webkit.org/show_bug.cgi?id=56088
+
+ Reviewed by Darin Adler.
+
+ Add REFERENCED_FROM_ASM to functions only referenced from assembler.
+
+ * dfg/DFGOperations.cpp:
+ * jit/HostCallReturnValue.h:
+ * jit/JITStubs.h:
+ * jit/ThunkGenerators.cpp:
+
2012-05-24 Filip Pizlo <[email protected]>
Incorrect merge of r117542 from dfg opt branch in r118323 is leading to fast/js/dfg-arguments-osr-exit.html failing
Modified: trunk/Source/_javascript_Core/dfg/DFGOperations.cpp (118343 => 118344)
--- trunk/Source/_javascript_Core/dfg/DFGOperations.cpp 2012-05-24 10:30:27 UTC (rev 118343)
+++ trunk/Source/_javascript_Core/dfg/DFGOperations.cpp 2012-05-24 10:50:40 UTC (rev 118344)
@@ -141,19 +141,19 @@
#endif
#define P_FUNCTION_WRAPPER_WITH_RETURN_ADDRESS_E(function) \
-void* DFG_OPERATION function##WithReturnAddress(ExecState*, ReturnAddressPtr); \
+void* DFG_OPERATION function##WithReturnAddress(ExecState*, ReturnAddressPtr) REFERENCED_FROM_ASM; \
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); \
+EncodedJSValue DFG_OPERATION function##WithReturnAddress(ExecState*, JSCell*, Identifier*, ReturnAddressPtr) REFERENCED_FROM_ASM; \
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); \
+EncodedJSValue DFG_OPERATION function##WithReturnAddress(ExecState*, EncodedJSValue, Identifier*, ReturnAddressPtr) REFERENCED_FROM_ASM; \
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); \
+void DFG_OPERATION function##WithReturnAddress(ExecState*, EncodedJSValue, JSCell*, Identifier*, ReturnAddressPtr) REFERENCED_FROM_ASM; \
FUNCTION_WRAPPER_WITH_RETURN_ADDRESS_EJCI(function)
namespace JSC { namespace DFG {
Modified: trunk/Source/_javascript_Core/jit/HostCallReturnValue.h (118343 => 118344)
--- trunk/Source/_javascript_Core/jit/HostCallReturnValue.h 2012-05-24 10:30:27 UTC (rev 118343)
+++ trunk/Source/_javascript_Core/jit/HostCallReturnValue.h 2012-05-24 10:50:40 UTC (rev 118344)
@@ -43,10 +43,10 @@
namespace JSC {
-extern "C" EncodedJSValue HOST_CALL_RETURN_VALUE_OPTION getHostCallReturnValue();
+extern "C" EncodedJSValue HOST_CALL_RETURN_VALUE_OPTION getHostCallReturnValue() REFERENCED_FROM_ASM;
// This is a public declaration only to convince CLANG not to elide it.
-extern "C" EncodedJSValue HOST_CALL_RETURN_VALUE_OPTION getHostCallReturnValueWithExecState(ExecState*);
+extern "C" EncodedJSValue HOST_CALL_RETURN_VALUE_OPTION getHostCallReturnValueWithExecState(ExecState*) REFERENCED_FROM_ASM;
inline void initializeHostCallReturnValue()
{
Modified: trunk/Source/_javascript_Core/jit/JITStubs.h (118343 => 118344)
--- trunk/Source/_javascript_Core/jit/JITStubs.h 2012-05-24 10:30:27 UTC (rev 118343)
+++ trunk/Source/_javascript_Core/jit/JITStubs.h 2012-05-24 10:50:40 UTC (rev 118344)
@@ -463,7 +463,7 @@
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);
+ void* JIT_STUB cti_vm_throw(STUB_ARGS_DECLARATION) REFERENCED_FROM_ASM;
} // extern "C"
#endif // ENABLE(JIT)
Modified: trunk/Source/_javascript_Core/jit/ThunkGenerators.cpp (118343 => 118344)
--- trunk/Source/_javascript_Core/jit/ThunkGenerators.cpp 2012-05-24 10:30:27 UTC (rev 118343)
+++ trunk/Source/_javascript_Core/jit/ThunkGenerators.cpp 2012-05-24 10:50:40 UTC (rev 118344)
@@ -118,7 +118,7 @@
typedef MathThunkCallingConvention(*MathThunk)(MathThunkCallingConvention);
extern "C" {
-double jsRound(double);
+double jsRound(double) REFERENCED_FROM_ASM;
double jsRound(double d)
{
double integer = ceil(d);
Modified: trunk/Source/WTF/ChangeLog (118343 => 118344)
--- trunk/Source/WTF/ChangeLog 2012-05-24 10:30:27 UTC (rev 118343)
+++ trunk/Source/WTF/ChangeLog 2012-05-24 10:50:40 UTC (rev 118344)
@@ -1,3 +1,14 @@
+2012-05-24 Allan Sandfeld Jensen <[email protected]>
+
+ cti_vm_throw gets kicked out by gcc 4.6 -flto
+ https://bugs.webkit.org/show_bug.cgi?id=56088
+
+ Reviewed by Darin Adler.
+
+ Define REFERENCED_FROM_ASM to __attribute__((used)) on GCC.
+
+ * wtf/Compiler.h:
+
2012-05-23 Darin Adler <[email protected]>
Optimize iteration of empty hash tables
Modified: trunk/Source/WTF/wtf/Compiler.h (118343 => 118344)
--- trunk/Source/WTF/wtf/Compiler.h 2012-05-24 10:30:27 UTC (rev 118343)
+++ trunk/Source/WTF/wtf/Compiler.h 2012-05-24 10:50:40 UTC (rev 118344)
@@ -251,6 +251,16 @@
#define FINAL
#endif
+/* REFERENCED_FROM_ASM */
+
+#ifndef REFERENCED_FROM_ASM
+#if COMPILER(GCC)
+#define REFERENCED_FROM_ASM __attribute__((used))
+#else
+#define REFERENCED_FROM_ASM
+#endif
+#endif
+
/* OBJC_CLASS */
#ifndef OBJC_CLASS