Chromium Code Reviews| 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: |