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

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

Issue 1676883002: [runtime] Optimize and unify rest parameters. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 10 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
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 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 61
62 const Register ArgumentsAccessReadDescriptor::index() { return edx; } 62 const Register ArgumentsAccessReadDescriptor::index() { return edx; }
63 const Register ArgumentsAccessReadDescriptor::parameter_count() { return eax; } 63 const Register ArgumentsAccessReadDescriptor::parameter_count() { return eax; }
64 64
65 65
66 const Register ArgumentsAccessNewDescriptor::function() { return edi; } 66 const Register ArgumentsAccessNewDescriptor::function() { return edi; }
67 const Register ArgumentsAccessNewDescriptor::parameter_count() { return ecx; } 67 const Register ArgumentsAccessNewDescriptor::parameter_count() { return ecx; }
68 const Register ArgumentsAccessNewDescriptor::parameter_pointer() { return edx; } 68 const Register ArgumentsAccessNewDescriptor::parameter_pointer() { return edx; }
69 69
70 70
71 const Register RestParamAccessDescriptor::parameter_count() { return ecx; }
72 const Register RestParamAccessDescriptor::parameter_pointer() { return edx; }
73 const Register RestParamAccessDescriptor::rest_parameter_index() { return ebx; }
74
75
76 const Register ApiGetterDescriptor::function_address() { return edx; } 71 const Register ApiGetterDescriptor::function_address() { return edx; }
77 72
78 73
79 const Register MathPowTaggedDescriptor::exponent() { return eax; } 74 const Register MathPowTaggedDescriptor::exponent() { return eax; }
80 75
81 76
82 const Register MathPowIntegerDescriptor::exponent() { 77 const Register MathPowIntegerDescriptor::exponent() {
83 return MathPowTaggedDescriptor::exponent(); 78 return MathPowTaggedDescriptor::exponent();
84 } 79 }
85 80
86 81
87 const Register GrowArrayElementsDescriptor::ObjectRegister() { return eax; } 82 const Register GrowArrayElementsDescriptor::ObjectRegister() { return eax; }
88 const Register GrowArrayElementsDescriptor::KeyRegister() { return ebx; } 83 const Register GrowArrayElementsDescriptor::KeyRegister() { return ebx; }
89 84
90 85
91 void FastNewClosureDescriptor::InitializePlatformSpecific( 86 void FastNewClosureDescriptor::InitializePlatformSpecific(
92 CallInterfaceDescriptorData* data) { 87 CallInterfaceDescriptorData* data) {
93 Register registers[] = {ebx}; 88 Register registers[] = {ebx};
94 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 89 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
95 } 90 }
96 91
97 92
98 void FastNewContextDescriptor::InitializePlatformSpecific( 93 void FastNewContextDescriptor::InitializePlatformSpecific(
99 CallInterfaceDescriptorData* data) { 94 CallInterfaceDescriptorData* data) {
100 Register registers[] = {edi}; 95 Register registers[] = {edi};
101 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 96 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
102 } 97 }
103 98
104 99
100 void FastNewRestParameterDescriptor::InitializePlatformSpecific(
101 CallInterfaceDescriptorData* data) {
102 Register registers[] = {edi};
103 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
104 }
105
106
105 void ToNumberDescriptor::InitializePlatformSpecific( 107 void ToNumberDescriptor::InitializePlatformSpecific(
106 CallInterfaceDescriptorData* data) { 108 CallInterfaceDescriptorData* data) {
107 // ToNumberStub invokes a function, and therefore needs a context. 109 // ToNumberStub invokes a function, and therefore needs a context.
108 Register registers[] = {eax}; 110 Register registers[] = {eax};
109 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 111 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
110 } 112 }
111 113
112 114
113 // static 115 // static
114 const Register ToLengthDescriptor::ReceiverRegister() { return eax; } 116 const Register ToLengthDescriptor::ReceiverRegister() { return eax; }
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 ecx, // address of first argument (argv) 443 ecx, // address of first argument (argv)
442 ebx // the runtime function to call 444 ebx // the runtime function to call
443 }; 445 };
444 data->InitializePlatformSpecific(arraysize(registers), registers); 446 data->InitializePlatformSpecific(arraysize(registers), registers);
445 } 447 }
446 448
447 } // namespace internal 449 } // namespace internal
448 } // namespace v8 450 } // namespace v8
449 451
450 #endif // V8_TARGET_ARCH_IA32 452 #endif // V8_TARGET_ARCH_IA32
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698