Index: src/x64/deoptimizer-x64.cc |
=================================================================== |
--- src/x64/deoptimizer-x64.cc (revision 9327) |
+++ src/x64/deoptimizer-x64.cc (working copy) |
@@ -220,7 +220,8 @@ |
} |
-void Deoptimizer::PatchStackCheckCodeAt(Address pc_after, |
+void Deoptimizer::PatchStackCheckCodeAt(Code* unoptimized_code, |
+ Address pc_after, |
Code* check_code, |
Code* replacement_code) { |
Address call_target_address = pc_after - kIntSize; |
@@ -250,6 +251,13 @@ |
*(call_target_address - 2) = 0x90; // nop |
Assembler::set_target_address_at(call_target_address, |
replacement_code->entry()); |
+ |
+ RelocInfo rinfo(call_target_address, |
+ RelocInfo::CODE_TARGET, |
+ NULL, |
+ unoptimized_code); |
+ unoptimized_code->GetHeap()->incremental_marking()->RecordWriteIntoCode( |
+ unoptimized_code, &rinfo, replacement_code); |
} |
@@ -268,6 +276,8 @@ |
*(call_target_address - 2) = 0x07; // offset |
Assembler::set_target_address_at(call_target_address, |
check_code->entry()); |
+ check_code->GetHeap()->incremental_marking()-> |
+ RecordCodeTargetPatch(call_target_address, check_code); |
} |