File tree 1 file changed +8
-2
lines changed
chromium/v8/src/deoptimizer 1 file changed +8
-2
lines changed Original file line number Diff line number Diff line change @@ -525,6 +525,12 @@ Handle<Object> TranslatedValue::GetValue() {
525
525
// pass the verifier.
526
526
container_->EnsureObjectAllocatedAt (this );
527
527
528
+ // Finish any sweeping so that it becomes safe to overwrite the ByteArray
529
+ // headers.
530
+ // TODO(hpayer): Find a cleaner way to support a group of
531
+ // non-fully-initialized objects.
532
+ isolate ()->heap ()->mark_compact_collector ()->EnsureSweepingCompleted ();
533
+
528
534
// 2. Initialize the objects. If we have allocated only byte arrays
529
535
// for some objects, we now overwrite the byte arrays with the
530
536
// correct object fields. Note that this phase does not allocate
@@ -1398,9 +1404,9 @@ TranslatedValue* TranslatedState::GetValueByObjectIndex(int object_index) {
1398
1404
}
1399
1405
1400
1406
Handle <HeapObject> TranslatedState::InitializeObjectAt (TranslatedValue* slot) {
1401
- slot = ResolveCapturedObject (slot);
1402
-
1403
1407
DisallowGarbageCollection no_gc;
1408
+
1409
+ slot = ResolveCapturedObject (slot);
1404
1410
if (slot->materialization_state () != TranslatedValue::kFinished ) {
1405
1411
std::stack<int > worklist;
1406
1412
worklist.push (slot->object_index ());
You can’t perform that action at this time.
0 commit comments