Title: [118344] trunk/Source
Revision
118344
Author
[email protected]
Date
2012-05-24 03:50:40 -0700 (Thu, 24 May 2012)

Log Message

cti_vm_throw gets kicked out by gcc 4.6 -flto
https://bugs.webkit.org/show_bug.cgi?id=56088

Patch by Allan Sandfeld Jensen <[email protected]> on 2012-05-24
Reviewed by Darin Adler.

Source/_javascript_Core:

Add REFERENCED_FROM_ASM to functions only referenced from assembler.

* dfg/DFGOperations.cpp:
* jit/HostCallReturnValue.h:
* jit/JITStubs.h:
* jit/ThunkGenerators.cpp:

Source/WTF:

Define REFERENCED_FROM_ASM to __attribute__((used)) on GCC.

* wtf/Compiler.h:

Modified Paths

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
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to