Index: src/assembler.cc |
diff --git a/src/assembler.cc b/src/assembler.cc |
index b44bc06ba36aaff6cbd92c6a6f9a1f928e0f35a7..f34952fb07a3714658f522ec1925062b845f44c8 100644 |
--- a/src/assembler.cc |
+++ b/src/assembler.cc |
@@ -355,6 +355,22 @@ void RelocInfo::update_wasm_memory_reference( |
uint32_t offset = old_size - current_size_reference; |
DCHECK_GE(new_size, offset); |
uint32_t updated_size_reference = new_size - offset; |
+ |
+ if (old_size == 0) { |
+ switch (rmode_) { |
+ case RelocInfo::WASM_MEMORY_WORD_SIZE_REFERENCE: |
+ updated_size_reference = updated_size_reference - 1; |
+ break; |
+ case RelocInfo::WASM_MEMORY_DWORD_SIZE_REFERENCE: |
+ updated_size_reference = updated_size_reference - 3; |
+ break; |
+ case RelocInfo::WASM_MEMORY_QWORD_SIZE_REFERENCE: |
+ updated_size_reference = updated_size_reference - 7; |
+ break; |
+ default: |
+ DCHECK(rmode_ == RelocInfo::WASM_MEMORY_BYTE_SIZE_REFERENCE); |
bradn
2016/10/12 18:50:45
Handle explicit and make default unreachable?
gdeepti
2016/10/13 08:42:59
Got rid of additional RelocInfo modes, code remove
|
+ } |
+ } |
unchecked_update_wasm_memory_size(updated_size_reference, |
icache_flush_mode); |
} else { |
@@ -786,8 +802,14 @@ const char* RelocInfo::RelocModeName(RelocInfo::Mode rmode) { |
return "generator continuation"; |
case WASM_MEMORY_REFERENCE: |
return "wasm memory reference"; |
- case WASM_MEMORY_SIZE_REFERENCE: |
- return "wasm memory size reference"; |
+ case WASM_MEMORY_BYTE_SIZE_REFERENCE: |
+ return "wasm memory size byte reference"; |
+ case WASM_MEMORY_WORD_SIZE_REFERENCE: |
+ return "wasm memory size word reference"; |
+ case WASM_MEMORY_DWORD_SIZE_REFERENCE: |
+ return "wasm memory size dword reference"; |
+ case WASM_MEMORY_QWORD_SIZE_REFERENCE: |
+ return "wasm memory size qword reference"; |
case WASM_GLOBAL_REFERENCE: |
return "wasm global value reference"; |
case NUMBER_OF_MODES: |
@@ -885,7 +907,10 @@ void RelocInfo::Verify(Isolate* isolate) { |
case DEBUG_BREAK_SLOT_AT_TAIL_CALL: |
case GENERATOR_CONTINUATION: |
case WASM_MEMORY_REFERENCE: |
- case WASM_MEMORY_SIZE_REFERENCE: |
+ case WASM_MEMORY_BYTE_SIZE_REFERENCE: |
+ case WASM_MEMORY_WORD_SIZE_REFERENCE: |
+ case WASM_MEMORY_DWORD_SIZE_REFERENCE: |
+ case WASM_MEMORY_QWORD_SIZE_REFERENCE: |
case WASM_GLOBAL_REFERENCE: |
case NONE32: |
case NONE64: |