|
|
|
@@ -1,96 +0,0 @@
|
|
|
|
|
From 2a6731b62bf3043d095cbb7dc5731d7764933bed Mon Sep 17 00:00:00 2001
|
|
|
|
|
From: Michael Catanzaro <mcatanzaro@gnome.org>
|
|
|
|
|
Date: Mon, 9 Aug 2021 10:53:05 +0000
|
|
|
|
|
Subject: [PATCH] Adding missing REFERENCED_FROM_ASM annotations to facilitate
|
|
|
|
|
LTO https://bugs.webkit.org/show_bug.cgi?id=228865
|
|
|
|
|
|
|
|
|
|
Patch by Michael Catanzaro <mcatanzaro@gnome.org> on 2021-08-09
|
|
|
|
|
Reviewed by Yusuke Suzuki.
|
|
|
|
|
|
|
|
|
|
When investigating why WebKitGTK fails to build with LTO (link-time optimization) enabled,
|
|
|
|
|
one of the GCC developers noticed that we are missing __attribute__ (("used")) on several
|
|
|
|
|
C++ functions declared in LLIntSlowPaths.h and WasmSlowPaths.h that are called only from
|
|
|
|
|
asm. Without this attribute, GCC assumes the functions are unused and drops them, then
|
|
|
|
|
linking fails because they really are used.
|
|
|
|
|
|
|
|
|
|
* llint/LLIntSlowPaths.h:
|
|
|
|
|
* wasm/WasmSlowPaths.h:
|
|
|
|
|
|
|
|
|
|
Canonical link: https://commits.webkit.org/240354@main
|
|
|
|
|
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@280770 268f45cc-cd09-0410-ab3c-d52691b4dbfc
|
|
|
|
|
---
|
|
|
|
|
Source/JavaScriptCore/ChangeLog | 16 ++++++++++++++++
|
|
|
|
|
Source/JavaScriptCore/llint/LLIntSlowPaths.h | 20 ++++++++++----------
|
|
|
|
|
Source/JavaScriptCore/wasm/WasmSlowPaths.h | 8 ++++----
|
|
|
|
|
3 files changed, 30 insertions(+), 14 deletions(-)
|
|
|
|
|
|
|
|
|
|
diff --git a/Source/JavaScriptCore/llint/LLIntSlowPaths.h b/Source/JavaScriptCore/llint/LLIntSlowPaths.h
|
|
|
|
|
index fbfd53cc551f..e20a0dfc6b87 100644
|
|
|
|
|
--- a/Source/JavaScriptCore/llint/LLIntSlowPaths.h
|
|
|
|
|
+++ b/Source/JavaScriptCore/llint/LLIntSlowPaths.h
|
|
|
|
|
@@ -36,15 +36,15 @@ struct ProtoCallFrame;
|
|
|
|
|
|
|
|
|
|
namespace LLInt {
|
|
|
|
|
|
|
|
|
|
-extern "C" SlowPathReturnType llint_trace_operand(CallFrame*, const Instruction*, int fromWhere, int operand);
|
|
|
|
|
-extern "C" SlowPathReturnType llint_trace_value(CallFrame*, const Instruction*, int fromWhere, VirtualRegister operand);
|
|
|
|
|
-extern "C" void llint_write_barrier_slow(CallFrame*, JSCell*) WTF_INTERNAL;
|
|
|
|
|
+extern "C" SlowPathReturnType llint_trace_operand(CallFrame*, const Instruction*, int fromWhere, int operand) REFERENCED_FROM_ASM;
|
|
|
|
|
+extern "C" SlowPathReturnType llint_trace_value(CallFrame*, const Instruction*, int fromWhere, VirtualRegister operand) REFERENCED_FROM_ASM;
|
|
|
|
|
+extern "C" void llint_write_barrier_slow(CallFrame*, JSCell*) REFERENCED_FROM_ASM WTF_INTERNAL;
|
|
|
|
|
|
|
|
|
|
#define LLINT_SLOW_PATH_DECL(name) \
|
|
|
|
|
extern "C" SlowPathReturnType llint_##name(CallFrame* callFrame, const Instruction* pc)
|
|
|
|
|
|
|
|
|
|
#define LLINT_SLOW_PATH_HIDDEN_DECL(name) \
|
|
|
|
|
- LLINT_SLOW_PATH_DECL(name) WTF_INTERNAL
|
|
|
|
|
+ LLINT_SLOW_PATH_DECL(name) REFERENCED_FROM_ASM WTF_INTERNAL
|
|
|
|
|
|
|
|
|
|
LLINT_SLOW_PATH_HIDDEN_DECL(trace_prologue);
|
|
|
|
|
LLINT_SLOW_PATH_HIDDEN_DECL(trace_prologue_function_for_call);
|
|
|
|
|
@@ -149,13 +149,13 @@ LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_log_shadow_chicken_tail);
|
|
|
|
|
LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_super_sampler_begin);
|
|
|
|
|
LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_super_sampler_end);
|
|
|
|
|
LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_out_of_line_jump_target);
|
|
|
|
|
-extern "C" SlowPathReturnType llint_throw_stack_overflow_error(VM*, ProtoCallFrame*) WTF_INTERNAL;
|
|
|
|
|
-extern "C" SlowPathReturnType llint_slow_path_checkpoint_osr_exit(CallFrame* callFrame, EncodedJSValue unused) WTF_INTERNAL;
|
|
|
|
|
-extern "C" SlowPathReturnType llint_slow_path_checkpoint_osr_exit_from_inlined_call(CallFrame* callFrame, EncodedJSValue callResult) WTF_INTERNAL;
|
|
|
|
|
+extern "C" SlowPathReturnType llint_throw_stack_overflow_error(VM*, ProtoCallFrame*) REFERENCED_FROM_ASM WTF_INTERNAL;
|
|
|
|
|
+extern "C" SlowPathReturnType llint_slow_path_checkpoint_osr_exit(CallFrame* callFrame, EncodedJSValue unused) REFERENCED_FROM_ASM WTF_INTERNAL;
|
|
|
|
|
+extern "C" SlowPathReturnType llint_slow_path_checkpoint_osr_exit_from_inlined_call(CallFrame* callFrame, EncodedJSValue callResult) REFERENCED_FROM_ASM WTF_INTERNAL;
|
|
|
|
|
#if ENABLE(C_LOOP)
|
|
|
|
|
-extern "C" SlowPathReturnType llint_stack_check_at_vm_entry(VM*, Register*) WTF_INTERNAL;
|
|
|
|
|
+extern "C" SlowPathReturnType llint_stack_check_at_vm_entry(VM*, Register*) REFERENCED_FROM_ASM WTF_INTERNAL;
|
|
|
|
|
#endif
|
|
|
|
|
-extern "C" SlowPathReturnType llint_check_vm_entry_permission(VM*, ProtoCallFrame*) WTF_INTERNAL;
|
|
|
|
|
-extern "C" NO_RETURN_DUE_TO_CRASH void llint_crash() WTF_INTERNAL;
|
|
|
|
|
+extern "C" SlowPathReturnType llint_check_vm_entry_permission(VM*, ProtoCallFrame*) REFERENCED_FROM_ASM WTF_INTERNAL;
|
|
|
|
|
+extern "C" NO_RETURN_DUE_TO_CRASH void llint_crash() REFERENCED_FROM_ASM WTF_INTERNAL;
|
|
|
|
|
|
|
|
|
|
} } // namespace JSC::LLInt
|
|
|
|
|
diff --git a/Source/JavaScriptCore/wasm/WasmSlowPaths.h b/Source/JavaScriptCore/wasm/WasmSlowPaths.h
|
|
|
|
|
index 5b2b8f2895a1..7762118338a7 100644
|
|
|
|
|
--- a/Source/JavaScriptCore/wasm/WasmSlowPaths.h
|
|
|
|
|
+++ b/Source/JavaScriptCore/wasm/WasmSlowPaths.h
|
|
|
|
|
@@ -47,7 +47,7 @@ namespace LLInt {
|
|
|
|
|
extern "C" SlowPathReturnType slow_path_wasm_##name(CallFrame* callFrame, const Instruction* pc, Wasm::Instance* instance)
|
|
|
|
|
|
|
|
|
|
#define WASM_SLOW_PATH_HIDDEN_DECL(name) \
|
|
|
|
|
- WASM_SLOW_PATH_DECL(name) WTF_INTERNAL
|
|
|
|
|
+ WASM_SLOW_PATH_DECL(name) REFERENCED_FROM_ASM WTF_INTERNAL
|
|
|
|
|
|
|
|
|
|
#if ENABLE(WEBASSEMBLY_B3JIT)
|
|
|
|
|
WASM_SLOW_PATH_HIDDEN_DECL(prologue_osr);
|
|
|
|
|
@@ -84,9 +84,9 @@ WASM_SLOW_PATH_HIDDEN_DECL(memory_atomic_wait32);
|
|
|
|
|
WASM_SLOW_PATH_HIDDEN_DECL(memory_atomic_wait64);
|
|
|
|
|
WASM_SLOW_PATH_HIDDEN_DECL(memory_atomic_notify);
|
|
|
|
|
|
|
|
|
|
-extern "C" SlowPathReturnType slow_path_wasm_throw_exception(CallFrame*, const Instruction*, Wasm::Instance* instance, Wasm::ExceptionType) WTF_INTERNAL;
|
|
|
|
|
-extern "C" SlowPathReturnType slow_path_wasm_popcount(const Instruction* pc, uint32_t) WTF_INTERNAL;
|
|
|
|
|
-extern "C" SlowPathReturnType slow_path_wasm_popcountll(const Instruction* pc, uint64_t) WTF_INTERNAL;
|
|
|
|
|
+extern "C" SlowPathReturnType slow_path_wasm_throw_exception(CallFrame*, const Instruction*, Wasm::Instance* instance, Wasm::ExceptionType) REFERENCED_FROM_ASM WTF_INTERNAL;
|
|
|
|
|
+extern "C" SlowPathReturnType slow_path_wasm_popcount(const Instruction* pc, uint32_t) REFERENCED_FROM_ASM WTF_INTERNAL;
|
|
|
|
|
+extern "C" SlowPathReturnType slow_path_wasm_popcountll(const Instruction* pc, uint64_t) REFERENCED_FROM_ASM WTF_INTERNAL;
|
|
|
|
|
|
|
|
|
|
} } // namespace JSC::LLInt
|
|
|
|
|
|