Index: src/ia32/code-stubs-ia32.cc |
diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc |
index 0828eb1a8c34da848658e3191266f33838aa9e96..a00dabb3a17dbbb421dc05b5c3ef85cfe0ddb764 100644 |
--- a/src/ia32/code-stubs-ia32.cc |
+++ b/src/ia32/code-stubs-ia32.cc |
@@ -329,6 +329,7 @@ static void GenerateFastCloneShallowArrayCommon( |
// |
// ecx: boilerplate literal array. |
ASSERT(mode != FastCloneShallowArrayStub::CLONE_ANY_ELEMENTS); |
+ bool tracking_on = allocation_site_info_mode == TRACK_ALLOCATION_SITE_INFO; |
// All sizes here are multiples of kPointerSize. |
int elements_size = 0; |
@@ -339,10 +340,8 @@ static void GenerateFastCloneShallowArrayCommon( |
} |
int size = JSArray::kSize; |
int allocation_info_start = size; |
- if (allocation_site_info_mode == TRACK_ALLOCATION_SITE_INFO) { |
- size += AllocationSiteInfo::kSize; |
- } |
- size += elements_size; |
+ size += tracking_on ? AllocationSiteInfo::kSize + elements_size |
Toon Verwaest
2013/01/16 10:53:42
I prefer the original formatting for this piece of
mvstanton
2013/01/16 13:01:56
Done.
|
+ : elements_size; |
// Allocate both the JS array and the elements array in one big |
// allocation. This avoids multiple limit checks. |
@@ -352,7 +351,7 @@ static void GenerateFastCloneShallowArrayCommon( |
} |
__ AllocateInNewSpace(size, eax, ebx, edx, fail, flags); |
- if (allocation_site_info_mode == TRACK_ALLOCATION_SITE_INFO) { |
+ if (tracking_on) { |
__ mov(FieldOperand(eax, allocation_info_start), |
Immediate(Handle<Map>(masm->isolate()->heap()-> |
allocation_site_info_map()))); |
@@ -371,7 +370,7 @@ static void GenerateFastCloneShallowArrayCommon( |
// Get hold of the elements array of the boilerplate and setup the |
// elements pointer in the resulting object. |
__ mov(ecx, FieldOperand(ecx, JSArray::kElementsOffset)); |
- if (allocation_site_info_mode == TRACK_ALLOCATION_SITE_INFO) { |
+ if (tracking_on) { |
__ lea(edx, Operand(eax, JSArray::kSize + AllocationSiteInfo::kSize)); |
} else { |
__ lea(edx, Operand(eax, JSArray::kSize)); |
@@ -425,30 +424,21 @@ void FastCloneShallowArrayStub::Generate(MacroAssembler* masm) { |
FastCloneShallowArrayStub::Mode mode = mode_; |
// ecx is boilerplate object. |
- AllocationSiteInfoMode allocation_site_info_mode = |
- DONT_TRACK_ALLOCATION_SITE_INFO; |
- if (mode == CLONE_ANY_ELEMENTS_WITH_ALLOCATION_SITE_INFO) { |
- mode = CLONE_ANY_ELEMENTS; |
- allocation_site_info_mode = TRACK_ALLOCATION_SITE_INFO; |
- } |
- |
if (mode == CLONE_ANY_ELEMENTS) { |
Label double_elements, check_fast_elements; |
__ mov(ebx, FieldOperand(ecx, JSArray::kElementsOffset)); |
__ CheckMap(ebx, factory->fixed_cow_array_map(), |
&check_fast_elements, DONT_DO_SMI_CHECK); |
- GenerateFastCloneShallowArrayCommon(masm, 0, |
- COPY_ON_WRITE_ELEMENTS, |
- allocation_site_info_mode, |
+ GenerateFastCloneShallowArrayCommon(masm, 0, COPY_ON_WRITE_ELEMENTS, |
+ allocation_site_info_mode_, |
&slow_case); |
__ ret(3 * kPointerSize); |
__ bind(&check_fast_elements); |
__ CheckMap(ebx, factory->fixed_array_map(), |
&double_elements, DONT_DO_SMI_CHECK); |
- GenerateFastCloneShallowArrayCommon(masm, length_, |
- CLONE_ELEMENTS, |
- allocation_site_info_mode, |
+ GenerateFastCloneShallowArrayCommon(masm, length_, CLONE_ELEMENTS, |
+ allocation_site_info_mode_, |
&slow_case); |
__ ret(3 * kPointerSize); |
@@ -479,7 +469,9 @@ void FastCloneShallowArrayStub::Generate(MacroAssembler* masm) { |
} |
GenerateFastCloneShallowArrayCommon(masm, length_, mode, |
- allocation_site_info_mode, &slow_case); |
+ allocation_site_info_mode_, |
+ &slow_case); |
+ |
// Return and remove the on-stack parameters. |
__ ret(3 * kPointerSize); |