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

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

Issue 535103002: CallDescriptors::InitializeForIsolate() is no longer needed. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | src/arm64/interface-descriptors-arm64.cc » ('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 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #if V8_TARGET_ARCH_ARM 7 #if V8_TARGET_ARCH_ARM
8 8
9 #include "src/interface-descriptors.h" 9 #include "src/interface-descriptors.h"
10 10
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 } 52 }
53 53
54 54
55 const Register ElementTransitionAndStoreDescriptor::MapRegister() { return r3; } 55 const Register ElementTransitionAndStoreDescriptor::MapRegister() { return r3; }
56 56
57 57
58 const Register InstanceofDescriptor::left() { return r0; } 58 const Register InstanceofDescriptor::left() { return r0; }
59 const Register InstanceofDescriptor::right() { return r1; } 59 const Register InstanceofDescriptor::right() { return r1; }
60 60
61 61
62 void FastNewClosureDescriptor::Initialize(Isolate* isolate) { 62 void FastNewClosureDescriptor::Initialize(CallInterfaceDescriptorData* data) {
63 Register registers[] = {cp, r2}; 63 Register registers[] = {cp, r2};
64 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 64 data->Initialize(arraysize(registers), registers, NULL);
65 } 65 }
66 66
67 67
68 void FastNewContextDescriptor::Initialize(Isolate* isolate) { 68 void FastNewContextDescriptor::Initialize(CallInterfaceDescriptorData* data) {
69 Register registers[] = {cp, r1}; 69 Register registers[] = {cp, r1};
70 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 70 data->Initialize(arraysize(registers), registers, NULL);
71 } 71 }
72 72
73 73
74 void ToNumberDescriptor::Initialize(Isolate* isolate) { 74 void ToNumberDescriptor::Initialize(CallInterfaceDescriptorData* data) {
75 Register registers[] = {cp, r0}; 75 Register registers[] = {cp, r0};
76 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 76 data->Initialize(arraysize(registers), registers, NULL);
77 } 77 }
78 78
79 79
80 void NumberToStringDescriptor::Initialize(Isolate* isolate) { 80 void NumberToStringDescriptor::Initialize(CallInterfaceDescriptorData* data) {
81 Register registers[] = {cp, r0}; 81 Register registers[] = {cp, r0};
82 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 82 data->Initialize(arraysize(registers), registers, NULL);
83 } 83 }
84 84
85 85
86 void FastCloneShallowArrayDescriptor::Initialize(Isolate* isolate) { 86 void FastCloneShallowArrayDescriptor::Initialize(
87 CallInterfaceDescriptorData* data) {
87 Register registers[] = {cp, r3, r2, r1}; 88 Register registers[] = {cp, r3, r2, r1};
88 Representation representations[] = { 89 Representation representations[] = {
89 Representation::Tagged(), Representation::Tagged(), Representation::Smi(), 90 Representation::Tagged(), Representation::Tagged(), Representation::Smi(),
90 Representation::Tagged()}; 91 Representation::Tagged()};
91 InitializeData(isolate, key(), arraysize(registers), registers, 92 data->Initialize(arraysize(registers), registers, representations);
92 representations);
93 } 93 }
94 94
95 95
96 void FastCloneShallowObjectDescriptor::Initialize(Isolate* isolate) { 96 void FastCloneShallowObjectDescriptor::Initialize(
97 CallInterfaceDescriptorData* data) {
97 Register registers[] = {cp, r3, r2, r1, r0}; 98 Register registers[] = {cp, r3, r2, r1, r0};
98 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 99 data->Initialize(arraysize(registers), registers, NULL);
99 } 100 }
100 101
101 102
102 void CreateAllocationSiteDescriptor::Initialize(Isolate* isolate) { 103 void CreateAllocationSiteDescriptor::Initialize(
104 CallInterfaceDescriptorData* data) {
103 Register registers[] = {cp, r2, r3}; 105 Register registers[] = {cp, r2, r3};
104 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 106 data->Initialize(arraysize(registers), registers, NULL);
105 } 107 }
106 108
107 109
108 void CallFunctionDescriptor::Initialize(Isolate* isolate) { 110 void CallFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) {
109 Register registers[] = {cp, r1}; 111 Register registers[] = {cp, r1};
110 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 112 data->Initialize(arraysize(registers), registers, NULL);
111 } 113 }
112 114
113 115
114 void CallConstructDescriptor::Initialize(Isolate* isolate) { 116 void CallConstructDescriptor::Initialize(CallInterfaceDescriptorData* data) {
115 // r0 : number of arguments 117 // r0 : number of arguments
116 // r1 : the function to call 118 // r1 : the function to call
117 // r2 : feedback vector 119 // r2 : feedback vector
118 // r3 : (only if r2 is not the megamorphic symbol) slot in feedback 120 // r3 : (only if r2 is not the megamorphic symbol) slot in feedback
119 // vector (Smi) 121 // vector (Smi)
120 // TODO(turbofan): So far we don't gather type feedback and hence skip the 122 // TODO(turbofan): So far we don't gather type feedback and hence skip the
121 // slot parameter, but ArrayConstructStub needs the vector to be undefined. 123 // slot parameter, but ArrayConstructStub needs the vector to be undefined.
122 Register registers[] = {cp, r0, r1, r2}; 124 Register registers[] = {cp, r0, r1, r2};
123 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 125 data->Initialize(arraysize(registers), registers, NULL);
124 } 126 }
125 127
126 128
127 void RegExpConstructResultDescriptor::Initialize(Isolate* isolate) { 129 void RegExpConstructResultDescriptor::Initialize(
130 CallInterfaceDescriptorData* data) {
128 Register registers[] = {cp, r2, r1, r0}; 131 Register registers[] = {cp, r2, r1, r0};
129 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 132 data->Initialize(arraysize(registers), registers, NULL);
130 } 133 }
131 134
132 135
133 void TransitionElementsKindDescriptor::Initialize(Isolate* isolate) { 136 void TransitionElementsKindDescriptor::Initialize(
137 CallInterfaceDescriptorData* data) {
134 Register registers[] = {cp, r0, r1}; 138 Register registers[] = {cp, r0, r1};
135 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 139 data->Initialize(arraysize(registers), registers, NULL);
136 } 140 }
137 141
138 142
139 void ArrayConstructorConstantArgCountDescriptor::Initialize(Isolate* isolate) { 143 void ArrayConstructorConstantArgCountDescriptor::Initialize(
144 CallInterfaceDescriptorData* data) {
140 // register state 145 // register state
141 // cp -- context 146 // cp -- context
142 // r0 -- number of arguments 147 // r0 -- number of arguments
143 // r1 -- function 148 // r1 -- function
144 // r2 -- allocation site with elements kind 149 // r2 -- allocation site with elements kind
145 Register registers[] = {cp, r1, r2}; 150 Register registers[] = {cp, r1, r2};
146 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 151 data->Initialize(arraysize(registers), registers, NULL);
147 } 152 }
148 153
149 154
150 void ArrayConstructorDescriptor::Initialize(Isolate* isolate) { 155 void ArrayConstructorDescriptor::Initialize(CallInterfaceDescriptorData* data) {
151 // stack param count needs (constructor pointer, and single argument) 156 // stack param count needs (constructor pointer, and single argument)
152 Register registers[] = {cp, r1, r2, r0}; 157 Register registers[] = {cp, r1, r2, r0};
153 Representation representations[] = { 158 Representation representations[] = {
154 Representation::Tagged(), Representation::Tagged(), 159 Representation::Tagged(), Representation::Tagged(),
155 Representation::Tagged(), Representation::Integer32()}; 160 Representation::Tagged(), Representation::Integer32()};
156 InitializeData(isolate, key(), arraysize(registers), registers, 161 data->Initialize(arraysize(registers), registers, representations);
157 representations);
158 } 162 }
159 163
160 164
161 void InternalArrayConstructorConstantArgCountDescriptor::Initialize( 165 void InternalArrayConstructorConstantArgCountDescriptor::Initialize(
162 Isolate* isolate) { 166 CallInterfaceDescriptorData* data) {
163 // register state 167 // register state
164 // cp -- context 168 // cp -- context
165 // r0 -- number of arguments 169 // r0 -- number of arguments
166 // r1 -- constructor function 170 // r1 -- constructor function
167 Register registers[] = {cp, r1}; 171 Register registers[] = {cp, r1};
168 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 172 data->Initialize(arraysize(registers), registers, NULL);
169 } 173 }
170 174
171 175
172 void InternalArrayConstructorDescriptor::Initialize(Isolate* isolate) { 176 void InternalArrayConstructorDescriptor::Initialize(
177 CallInterfaceDescriptorData* data) {
173 // stack param count needs (constructor pointer, and single argument) 178 // stack param count needs (constructor pointer, and single argument)
174 Register registers[] = {cp, r1, r0}; 179 Register registers[] = {cp, r1, r0};
175 Representation representations[] = {Representation::Tagged(), 180 Representation representations[] = {Representation::Tagged(),
176 Representation::Tagged(), 181 Representation::Tagged(),
177 Representation::Integer32()}; 182 Representation::Integer32()};
178 InitializeData(isolate, key(), arraysize(registers), registers, 183 data->Initialize(arraysize(registers), registers, representations);
179 representations);
180 } 184 }
181 185
182 186
183 void CompareNilDescriptor::Initialize(Isolate* isolate) { 187 void CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) {
184 Register registers[] = {cp, r0}; 188 Register registers[] = {cp, r0};
185 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 189 data->Initialize(arraysize(registers), registers, NULL);
186 } 190 }
187 191
188 192
189 void ToBooleanDescriptor::Initialize(Isolate* isolate) { 193 void ToBooleanDescriptor::Initialize(CallInterfaceDescriptorData* data) {
190 Register registers[] = {cp, r0}; 194 Register registers[] = {cp, r0};
191 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 195 data->Initialize(arraysize(registers), registers, NULL);
192 } 196 }
193 197
194 198
195 void BinaryOpDescriptor::Initialize(Isolate* isolate) { 199 void BinaryOpDescriptor::Initialize(CallInterfaceDescriptorData* data) {
196 Register registers[] = {cp, r1, r0}; 200 Register registers[] = {cp, r1, r0};
197 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 201 data->Initialize(arraysize(registers), registers, NULL);
198 } 202 }
199 203
200 204
201 void BinaryOpWithAllocationSiteDescriptor::Initialize(Isolate* isolate) { 205 void BinaryOpWithAllocationSiteDescriptor::Initialize(
206 CallInterfaceDescriptorData* data) {
202 Register registers[] = {cp, r2, r1, r0}; 207 Register registers[] = {cp, r2, r1, r0};
203 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 208 data->Initialize(arraysize(registers), registers, NULL);
204 } 209 }
205 210
206 211
207 void StringAddDescriptor::Initialize(Isolate* isolate) { 212 void StringAddDescriptor::Initialize(CallInterfaceDescriptorData* data) {
208 Register registers[] = {cp, r1, r0}; 213 Register registers[] = {cp, r1, r0};
209 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 214 data->Initialize(arraysize(registers), registers, NULL);
210 } 215 }
211 216
212 217
213 void KeyedDescriptor::Initialize(Isolate* isolate) { 218 void KeyedDescriptor::Initialize(CallInterfaceDescriptorData* data) {
214 static PlatformInterfaceDescriptor noInlineDescriptor = 219 static PlatformInterfaceDescriptor noInlineDescriptor =
215 PlatformInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS); 220 PlatformInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS);
216 221
217 Register registers[] = { 222 Register registers[] = {
218 cp, // context 223 cp, // context
219 r2, // key 224 r2, // key
220 }; 225 };
221 Representation representations[] = { 226 Representation representations[] = {
222 Representation::Tagged(), // context 227 Representation::Tagged(), // context
223 Representation::Tagged(), // key 228 Representation::Tagged(), // key
224 }; 229 };
225 InitializeData(isolate, key(), arraysize(registers), registers, 230 data->Initialize(arraysize(registers), registers, representations,
226 representations, &noInlineDescriptor); 231 &noInlineDescriptor);
227 } 232 }
228 233
229 234
230 void NamedDescriptor::Initialize(Isolate* isolate) { 235 void NamedDescriptor::Initialize(CallInterfaceDescriptorData* data) {
231 static PlatformInterfaceDescriptor noInlineDescriptor = 236 static PlatformInterfaceDescriptor noInlineDescriptor =
232 PlatformInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS); 237 PlatformInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS);
233 238
234 Register registers[] = { 239 Register registers[] = {
235 cp, // context 240 cp, // context
236 r2, // name 241 r2, // name
237 }; 242 };
238 Representation representations[] = { 243 Representation representations[] = {
239 Representation::Tagged(), // context 244 Representation::Tagged(), // context
240 Representation::Tagged(), // name 245 Representation::Tagged(), // name
241 }; 246 };
242 InitializeData(isolate, key(), arraysize(registers), registers, 247 data->Initialize(arraysize(registers), registers, representations,
243 representations, &noInlineDescriptor); 248 &noInlineDescriptor);
244 } 249 }
245 250
246 251
247 void CallHandlerDescriptor::Initialize(Isolate* isolate) { 252 void CallHandlerDescriptor::Initialize(CallInterfaceDescriptorData* data) {
248 static PlatformInterfaceDescriptor default_descriptor = 253 static PlatformInterfaceDescriptor default_descriptor =
249 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); 254 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS);
250 255
251 Register registers[] = { 256 Register registers[] = {
252 cp, // context 257 cp, // context
253 r0, // receiver 258 r0, // receiver
254 }; 259 };
255 Representation representations[] = { 260 Representation representations[] = {
256 Representation::Tagged(), // context 261 Representation::Tagged(), // context
257 Representation::Tagged(), // receiver 262 Representation::Tagged(), // receiver
258 }; 263 };
259 InitializeData(isolate, key(), arraysize(registers), registers, 264 data->Initialize(arraysize(registers), registers, representations,
260 representations, &default_descriptor); 265 &default_descriptor);
261 } 266 }
262 267
263 268
264 void ArgumentAdaptorDescriptor::Initialize(Isolate* isolate) { 269 void ArgumentAdaptorDescriptor::Initialize(CallInterfaceDescriptorData* data) {
265 static PlatformInterfaceDescriptor default_descriptor = 270 static PlatformInterfaceDescriptor default_descriptor =
266 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); 271 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS);
267 272
268 Register registers[] = { 273 Register registers[] = {
269 cp, // context 274 cp, // context
270 r1, // JSFunction 275 r1, // JSFunction
271 r0, // actual number of arguments 276 r0, // actual number of arguments
272 r2, // expected number of arguments 277 r2, // expected number of arguments
273 }; 278 };
274 Representation representations[] = { 279 Representation representations[] = {
275 Representation::Tagged(), // context 280 Representation::Tagged(), // context
276 Representation::Tagged(), // JSFunction 281 Representation::Tagged(), // JSFunction
277 Representation::Integer32(), // actual number of arguments 282 Representation::Integer32(), // actual number of arguments
278 Representation::Integer32(), // expected number of arguments 283 Representation::Integer32(), // expected number of arguments
279 }; 284 };
280 InitializeData(isolate, key(), arraysize(registers), registers, 285 data->Initialize(arraysize(registers), registers, representations,
281 representations, &default_descriptor); 286 &default_descriptor);
282 } 287 }
283 288
284 289
285 void ApiFunctionDescriptor::Initialize(Isolate* isolate) { 290 void ApiFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) {
286 static PlatformInterfaceDescriptor default_descriptor = 291 static PlatformInterfaceDescriptor default_descriptor =
287 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); 292 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS);
288 293
289 Register registers[] = { 294 Register registers[] = {
290 cp, // context 295 cp, // context
291 r0, // callee 296 r0, // callee
292 r4, // call_data 297 r4, // call_data
293 r2, // holder 298 r2, // holder
294 r1, // api_function_address 299 r1, // api_function_address
295 }; 300 };
296 Representation representations[] = { 301 Representation representations[] = {
297 Representation::Tagged(), // context 302 Representation::Tagged(), // context
298 Representation::Tagged(), // callee 303 Representation::Tagged(), // callee
299 Representation::Tagged(), // call_data 304 Representation::Tagged(), // call_data
300 Representation::Tagged(), // holder 305 Representation::Tagged(), // holder
301 Representation::External(), // api_function_address 306 Representation::External(), // api_function_address
302 }; 307 };
303 InitializeData(isolate, key(), arraysize(registers), registers, 308 data->Initialize(arraysize(registers), registers, representations,
304 representations, &default_descriptor); 309 &default_descriptor);
305 } 310 }
306 } 311 }
307 } // namespace v8::internal 312 } // namespace v8::internal
308 313
309 #endif // V8_TARGET_ARCH_ARM 314 #endif // V8_TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « no previous file | src/arm64/interface-descriptors-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698