Index: src/heap/heap.cc |
diff --git a/src/heap/heap.cc b/src/heap/heap.cc |
index d6a83346fab226b70ba9816222077bf99b14ffd9..e039633c2a0ef578e00db018330712d53eac713d 100644 |
--- a/src/heap/heap.cc |
+++ b/src/heap/heap.cc |
@@ -3373,6 +3373,12 @@ AllocationResult Heap::CopyCode(Code* code) { |
// We have to iterate over the object and process its pointers when black |
// allocation is on. |
incremental_marking()->IterateBlackObject(new_code); |
+ // Record all references to embedded objects in the new code object. |
+ for (RelocIterator it(new_code, |
Michael Lippautz
2016/08/02 19:07:57
That works, but ideally we would have fused visito
ahaas
2016/08/03 08:47:42
I think that this would be an optimization that we
ulan
2016/08/03 10:59:32
Yep, I would prefer decoding reloc info once. But
|
+ RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT)); |
+ !it.done(); it.next()) { |
+ RecordWriteIntoCode(new_code, it.rinfo(), it.rinfo()->target_object()); |
+ } |
return new_code; |
} |