Index: src/objects-inl.h |
diff --git a/src/objects-inl.h b/src/objects-inl.h |
index 24c8c14f1ced7a1b8a266342cf287cf81f22b18a..2eb0073ef6558f53dd9d6fe23dbd4b3b0be8a3a6 100644 |
--- a/src/objects-inl.h |
+++ b/src/objects-inl.h |
@@ -6161,9 +6161,25 @@ bool JSFunction::IsInOptimizationQueue() { |
} |
-bool JSFunction::IsInobjectSlackTrackingInProgress() { |
- return has_initial_map() && |
- initial_map()->counter() >= Map::kSlackTrackingCounterEnd; |
+void JSFunction::CompleteInobjectSlackTrackingIfActive() { |
+ if (has_initial_map() && initial_map()->IsInobjectSlackTrackingInProgress()) { |
+ initial_map()->CompleteInobjectSlackTracking(); |
+ } |
+} |
+ |
+ |
+bool Map::IsInobjectSlackTrackingInProgress() { |
+ return counter() >= Map::kSlackTrackingCounterEnd; |
+} |
+ |
+ |
+void Map::InobjectSlackTrackingStep() { |
+ if (!IsInobjectSlackTrackingInProgress()) return; |
+ int counter = this->counter(); |
+ set_counter(counter - 1); |
+ if (counter == kSlackTrackingCounterEnd) { |
+ CompleteInobjectSlackTracking(); |
+ } |
} |