| Index: runtime/vm/code_patcher_ia32.cc
|
| diff --git a/runtime/vm/code_patcher_ia32.cc b/runtime/vm/code_patcher_ia32.cc
|
| index de3f74c493d55ecd4132d462bbbf3717fbc6d9dd..db04cdf5bd8555c5b6f466729df706a1748ab34b 100644
|
| --- a/runtime/vm/code_patcher_ia32.cc
|
| +++ b/runtime/vm/code_patcher_ia32.cc
|
| @@ -177,8 +177,13 @@ void CodePatcher::PatchStaticCallAt(uword return_address,
|
| }
|
|
|
|
|
| -void CodePatcher::InsertDeoptimizationCallAt(uword start) {
|
| - UNREACHABLE();
|
| +void CodePatcher::InsertDeoptimizationCallAt(uword start, uword target) {
|
| + // The inserted call should not overlap the lazy deopt jump code.
|
| + ASSERT(start + CallPattern::pattern_length_in_bytes() <= target);
|
| + *reinterpret_cast<uint8_t*>(start) = 0xE8;
|
| + CallPattern call(start);
|
| + call.SetTargetAddress(target);
|
| + CPU::FlushICache(start, CallPattern::pattern_length_in_bytes());
|
| }
|
|
|
|
|
|
|