Index: src/x64/assembler-x64.cc |
diff --git a/src/x64/assembler-x64.cc b/src/x64/assembler-x64.cc |
index 48f9a9a18364157a77769d60dc2d9564155ec8fa..7c992cbd88bc7062e96dc778f72de74fb4bed58a 100644 |
--- a/src/x64/assembler-x64.cc |
+++ b/src/x64/assembler-x64.cc |
@@ -127,6 +127,11 @@ uint32_t RelocInfo::wasm_memory_size_reference() { |
return Memory::uint32_at(pc_); |
} |
+uint32_t RelocInfo::wasm_function_index() { |
+ DCHECK(IsWasmDirectCall(rmode_)); |
+ return Memory::uint32_at(pc_); |
+} |
+ |
void RelocInfo::update_wasm_memory_reference( |
Address old_base, Address new_base, uint32_t old_size, uint32_t new_size, |
ICacheFlushMode icache_flush_mode) { |
@@ -888,6 +893,14 @@ void Assembler::call(Handle<Code> target, |
emit_code_target(target, rmode, ast_id); |
} |
+void Assembler::wasm_direct_call(uint32_t index) { |
+ positions_recorder()->WriteRecordedPositions(); |
+ EnsureSpace ensure_space(this); |
+ emit(0xE8); |
+ RecordRelocInfo(RelocInfo::WASM_DIRECT_CALL); |
+ |
+ emitl(index); |
+} |
void Assembler::call(Register adr) { |
positions_recorder()->WriteRecordedPositions(); |