Index: src/ia32/assembler-ia32.cc |
diff --git a/src/ia32/assembler-ia32.cc b/src/ia32/assembler-ia32.cc |
index 01b366431b2753a2a8104aea1eb56815b43c4574..341a5e328b4e488e901aa163589228cd2a31d5d2 100644 |
--- a/src/ia32/assembler-ia32.cc |
+++ b/src/ia32/assembler-ia32.cc |
@@ -196,6 +196,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) { |
@@ -1603,6 +1608,14 @@ void Assembler::call(Handle<Code> code, |
emit(code, 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); |
+ |
+ emit(index); |
+} |
void Assembler::jmp(Label* L, Label::Distance distance) { |
EnsureSpace ensure_space(this); |