Revision: 21728
Author: [email protected]
Date: Tue Jun 10 04:47:06 2014 UTC
Log: Ensure that constant-capacity elements are initialized on copy
[email protected]
Review URL: https://codereview.chromium.org/308003015
http://code.google.com/p/v8/source/detail?r=21728
Modified:
/branches/bleeding_edge/src/hydrogen.cc
=======================================
--- /branches/bleeding_edge/src/hydrogen.cc Tue Jun 10 04:26:15 2014 UTC
+++ /branches/bleeding_edge/src/hydrogen.cc Tue Jun 10 04:47:06 2014 UTC
@@ -2575,6 +2575,17 @@
constant_capacity = constant_candidate;
}
}
+
+ bool pre_fill_with_holes =
+ IsFastDoubleElementsKind(from_elements_kind) &&
+ IsFastObjectElementsKind(to_elements_kind);
+ if (pre_fill_with_holes) {
+ // If the copy might trigger a GC, make sure that the FixedArray is
+ // pre-initialized with holes to make sure that it's always in a
+ // consistent state.
+ BuildFillElementsWithHole(to_elements, to_elements_kind,
+ graph()->GetConstant0(), NULL);
+ }
if (constant_capacity != -1) {
// Unroll the loop for small elements kinds.
@@ -2586,17 +2597,8 @@
Add<HStoreKeyed>(to_elements, key_constant, value, to_elements_kind);
}
} else {
- bool pre_fill_with_holes =
- IsFastDoubleElementsKind(from_elements_kind) &&
- IsFastObjectElementsKind(to_elements_kind);
-
- if (pre_fill_with_holes) {
- // If the copy might trigger a GC, make sure that the FixedArray is
- // pre-initialized with holes to make sure that it's always in a
- // consistent state.
- BuildFillElementsWithHole(to_elements, to_elements_kind,
- graph()->GetConstant0(), NULL);
- } else if (capacity == NULL || !length->Equals(capacity)) {
+ if (!pre_fill_with_holes &&
+ (capacity == NULL || !length->Equals(capacity))) {
BuildFillElementsWithHole(to_elements, to_elements_kind,
length, NULL);
}
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.