| Index: src/deoptimizer.cc
|
| diff --git a/src/deoptimizer.cc b/src/deoptimizer.cc
|
| index 21ffe07b64d477dbb71918e9fe6ce22e33087733..9f7bbec0d9ea619fb65c8751a3a78f3af6c8ab47 100644
|
| --- a/src/deoptimizer.cc
|
| +++ b/src/deoptimizer.cc
|
| @@ -1812,6 +1812,7 @@ void Deoptimizer::PatchStackCheckCode(Code* unoptimized_code,
|
| // Iterate over the stack check table and patch every stack check
|
| // call to an unconditional call to the replacement code.
|
| ASSERT(unoptimized_code->kind() == Code::FUNCTION);
|
| + ASSERT(!unoptimized_code->stack_check_patched_for_osr());
|
| Address stack_check_cursor = unoptimized_code->instruction_start() +
|
| unoptimized_code->stack_check_table_offset();
|
| uint32_t table_length = Memory::uint32_at(stack_check_cursor);
|
| @@ -1825,6 +1826,7 @@ void Deoptimizer::PatchStackCheckCode(Code* unoptimized_code,
|
| replacement_code);
|
| stack_check_cursor += 2 * kIntSize;
|
| }
|
| + unoptimized_code->set_stack_check_patched_for_osr(true);
|
| }
|
|
|
|
|
| @@ -1834,6 +1836,7 @@ void Deoptimizer::RevertStackCheckCode(Code* unoptimized_code,
|
| // Iterate over the stack check table and revert the patched
|
| // stack check calls.
|
| ASSERT(unoptimized_code->kind() == Code::FUNCTION);
|
| + ASSERT(unoptimized_code->stack_check_patched_for_osr());
|
| Address stack_check_cursor = unoptimized_code->instruction_start() +
|
| unoptimized_code->stack_check_table_offset();
|
| uint32_t table_length = Memory::uint32_at(stack_check_cursor);
|
| @@ -1847,6 +1850,7 @@ void Deoptimizer::RevertStackCheckCode(Code* unoptimized_code,
|
| replacement_code);
|
| stack_check_cursor += 2 * kIntSize;
|
| }
|
| + unoptimized_code->set_stack_check_patched_for_osr(false);
|
| }
|
|
|
|
|
|
|