Index: src/ia32/code-stubs-ia32.cc |
diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc |
index 0c38437e7cfb3c6d5d0ea515d5b9fa84b6f9be98..208bd91a0db7cc6a74fc879e681a8bece0e930e6 100644 |
--- a/src/ia32/code-stubs-ia32.cc |
+++ b/src/ia32/code-stubs-ia32.cc |
@@ -5457,13 +5457,18 @@ static void CreateArrayDispatchOneArgument(MacroAssembler* masm, |
template<class T> |
static void ArrayConstructorStubAheadOfTimeHelper(Isolate* isolate) { |
+ ElementsKind initial_kind = GetInitialFastElementsKind(); |
+ ElementsKind initial_holey_kind = GetHoleyElementsKind(initial_kind); |
+ |
int to_index = GetSequenceIndexFromFastElementsKind( |
TERMINAL_FAST_ELEMENTS_KIND); |
for (int i = 0; i <= to_index; ++i) { |
ElementsKind kind = GetFastElementsKindFromSequenceIndex(i); |
T stub(kind); |
stub.GetCode(isolate); |
- if (AllocationSite::GetMode(kind) != DONT_TRACK_ALLOCATION_SITE) { |
+ if (AllocationSite::GetMode(kind) != DONT_TRACK_ALLOCATION_SITE || |
+ (!FLAG_track_allocation_sites && |
+ (kind == initial_kind || kind == initial_holey_kind))) { |
T stub1(kind, CONTEXT_CHECK_REQUIRED, DISABLE_ALLOCATION_SITES); |
stub1.GetCode(isolate); |
} |