Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1152)

Side by Side Diff: src/ia32/interface-descriptors-ia32.cc

Issue 2890023004: [turbofan] Avoid allocating rest parameters for spread calls. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/compiler/verifier.cc ('k') | src/interface-descriptors.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #if V8_TARGET_ARCH_IA32 5 #if V8_TARGET_ARCH_IA32
6 6
7 #include "src/interface-descriptors.h" 7 #include "src/interface-descriptors.h"
8 8
9 namespace v8 { 9 namespace v8 {
10 namespace internal { 10 namespace internal {
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 void CallTrampolineDescriptor::InitializePlatformSpecific( 149 void CallTrampolineDescriptor::InitializePlatformSpecific(
150 CallInterfaceDescriptorData* data) { 150 CallInterfaceDescriptorData* data) {
151 // eax : number of arguments 151 // eax : number of arguments
152 // edi : the target to call 152 // edi : the target to call
153 Register registers[] = {edi, eax}; 153 Register registers[] = {edi, eax};
154 data->InitializePlatformSpecific(arraysize(registers), registers); 154 data->InitializePlatformSpecific(arraysize(registers), registers);
155 } 155 }
156 156
157 void CallForwardVarargsDescriptor::InitializePlatformSpecific( 157 void CallForwardVarargsDescriptor::InitializePlatformSpecific(
158 CallInterfaceDescriptorData* data) { 158 CallInterfaceDescriptorData* data) {
159 // eax : number of arguments
159 // ecx : start index (to support rest parameters) 160 // ecx : start index (to support rest parameters)
160 // edi : the target to call 161 // edi : the target to call
161 Register registers[] = {edi, ecx}; 162 Register registers[] = {edi, eax, ecx};
162 data->InitializePlatformSpecific(arraysize(registers), registers); 163 data->InitializePlatformSpecific(arraysize(registers), registers);
163 } 164 }
164 165
166 void ConstructForwardVarargsDescriptor::InitializePlatformSpecific(
167 CallInterfaceDescriptorData* data) {
168 // eax : number of arguments
169 // edx : the new target
170 // ecx : start index (to support rest parameters)
171 // edi : the target to call
172 Register registers[] = {edi, edx, eax, ecx};
173 data->InitializePlatformSpecific(arraysize(registers), registers);
174 }
175
165 void ConstructStubDescriptor::InitializePlatformSpecific( 176 void ConstructStubDescriptor::InitializePlatformSpecific(
166 CallInterfaceDescriptorData* data) { 177 CallInterfaceDescriptorData* data) {
167 // eax : number of arguments 178 // eax : number of arguments
168 // edx : the new target 179 // edx : the new target
169 // edi : the target to call 180 // edi : the target to call
170 // ebx : allocation site or undefined 181 // ebx : allocation site or undefined
171 Register registers[] = {edi, edx, eax, ebx}; 182 Register registers[] = {edi, edx, eax, ebx};
172 data->InitializePlatformSpecific(arraysize(registers), registers); 183 data->InitializePlatformSpecific(arraysize(registers), registers);
173 } 184 }
174 185
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 Register registers[] = { 383 Register registers[] = {
373 ebx, // loaded new FP 384 ebx, // loaded new FP
374 }; 385 };
375 data->InitializePlatformSpecific(arraysize(registers), registers); 386 data->InitializePlatformSpecific(arraysize(registers), registers);
376 } 387 }
377 388
378 } // namespace internal 389 } // namespace internal
379 } // namespace v8 390 } // namespace v8
380 391
381 #endif // V8_TARGET_ARCH_IA32 392 #endif // V8_TARGET_ARCH_IA32
OLDNEW
« no previous file with comments | « src/compiler/verifier.cc ('k') | src/interface-descriptors.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698