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/interface-descriptors.h

Issue 1197703002: Use big-boy Types to annotate interface descriptor parameters (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Latest Created 5 years, 6 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/ia32/interface-descriptors-ia32.cc ('k') | src/interface-descriptors.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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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 #ifndef V8_CALL_INTERFACE_DESCRIPTOR_H_ 5 #ifndef V8_CALL_INTERFACE_DESCRIPTOR_H_
6 #define V8_CALL_INTERFACE_DESCRIPTOR_H_ 6 #define V8_CALL_INTERFACE_DESCRIPTOR_H_
7 7
8 #include "src/assembler.h" 8 #include "src/assembler.h"
9 #include "src/macro-assembler.h" 9 #include "src/macro-assembler.h"
10 10
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 V(Named) \ 52 V(Named) \
53 V(CallHandler) \ 53 V(CallHandler) \
54 V(ArgumentAdaptor) \ 54 V(ArgumentAdaptor) \
55 V(ApiFunction) \ 55 V(ApiFunction) \
56 V(ApiAccessor) \ 56 V(ApiAccessor) \
57 V(ApiGetter) \ 57 V(ApiGetter) \
58 V(ArgumentsAccessRead) \ 58 V(ArgumentsAccessRead) \
59 V(StoreArrayLiteralElement) \ 59 V(StoreArrayLiteralElement) \
60 V(MathPowTagged) \ 60 V(MathPowTagged) \
61 V(MathPowInteger) \ 61 V(MathPowInteger) \
62 V(MathRoundVariant) \
63 V(ContextOnly) \ 62 V(ContextOnly) \
64 V(GrowArrayElements) 63 V(GrowArrayElements) \
64 V(MathRoundVariant)
65 65
66 66
67 class CallInterfaceDescriptorData { 67 class CallInterfaceDescriptorData {
68 public: 68 public:
69 CallInterfaceDescriptorData() : register_param_count_(-1) {} 69 CallInterfaceDescriptorData()
70 : stack_paramater_count_(-1),
71 register_param_count_(-1),
72 function_type_(nullptr) {}
70 73
71 // A copy of the passed in registers and param_representations is made 74 // A copy of the passed in registers and param_representations is made
72 // and owned by the CallInterfaceDescriptorData. 75 // and owned by the CallInterfaceDescriptorData.
73 76
77 void InitializePlatformIndependent(int stack_paramater_count,
78 Type::FunctionType* function_type) {
79 function_type_ = function_type;
80 stack_paramater_count_ = stack_paramater_count;
81 }
82
74 // TODO(mvstanton): Instead of taking parallel arrays register and 83 // TODO(mvstanton): Instead of taking parallel arrays register and
75 // param_representations, how about a struct that puts the representation 84 // param_representations, how about a struct that puts the representation
76 // and register side by side (eg, RegRep(r1, Representation::Tagged()). 85 // and register side by side (eg, RegRep(r1, Representation::Tagged()).
77 // The same should go for the CodeStubDescriptor class. 86 // The same should go for the CodeStubDescriptor class.
78 void Initialize(int register_parameter_count, Register* registers, 87 void InitializePlatformSpecific(
79 Representation* param_representations, 88 int register_parameter_count, Register* registers,
80 PlatformInterfaceDescriptor* platform_descriptor = NULL); 89 PlatformInterfaceDescriptor* platform_descriptor = NULL);
81 90
82 bool IsInitialized() const { return register_param_count_ >= 0; } 91 bool IsInitialized() const { return register_param_count_ >= 0; }
83 92
84 int register_param_count() const { return register_param_count_; } 93 int register_param_count() const { return register_param_count_; }
85 Register register_param(int index) const { return register_params_[index]; } 94 Register register_param(int index) const { return register_params_[index]; }
86 Register* register_params() const { return register_params_.get(); } 95 Register* register_params() const { return register_params_.get(); }
87 Representation register_param_representation(int index) const { 96 Type* register_param_type(int index) const {
88 return register_param_representations_[index]; 97 return function_type_->Parameter(index);
89 }
90 Representation* register_param_representations() const {
91 return register_param_representations_.get();
92 } 98 }
93 PlatformInterfaceDescriptor* platform_specific_descriptor() const { 99 PlatformInterfaceDescriptor* platform_specific_descriptor() const {
94 return platform_specific_descriptor_; 100 return platform_specific_descriptor_;
95 } 101 }
96 102
103 Type::FunctionType* function_type() const { return function_type_; }
104
97 private: 105 private:
106 int stack_paramater_count_;
98 int register_param_count_; 107 int register_param_count_;
99 108
100 // The Register params are allocated dynamically by the 109 // The Register params are allocated dynamically by the
101 // InterfaceDescriptor, and freed on destruction. This is because static 110 // InterfaceDescriptor, and freed on destruction. This is because static
102 // arrays of Registers cause creation of runtime static initializers 111 // arrays of Registers cause creation of runtime static initializers
103 // which we don't want. 112 // which we don't want.
104 SmartArrayPointer<Register> register_params_; 113 SmartArrayPointer<Register> register_params_;
105 // Specifies Representations for the stub's parameter. Points to an array of 114
106 // Representations of the same length of the numbers of parameters to the 115 // Specifies types for parameters and return
107 // stub, or if NULL (the default value), Representation of each parameter 116 Type::FunctionType* function_type_;
108 // assumed to be Tagged().
109 SmartArrayPointer<Representation> register_param_representations_;
110 117
111 PlatformInterfaceDescriptor* platform_specific_descriptor_; 118 PlatformInterfaceDescriptor* platform_specific_descriptor_;
112 119
113 DISALLOW_COPY_AND_ASSIGN(CallInterfaceDescriptorData); 120 DISALLOW_COPY_AND_ASSIGN(CallInterfaceDescriptorData);
114 }; 121 };
115 122
116 123
117 class CallDescriptors { 124 class CallDescriptors {
118 public: 125 public:
119 enum Key { 126 enum Key {
120 #define DEF_ENUM(name) name, 127 #define DEF_ENUM(name) name,
121 INTERFACE_DESCRIPTOR_LIST(DEF_ENUM) 128 INTERFACE_DESCRIPTOR_LIST(DEF_ENUM)
122 #undef DEF_ENUM 129 #undef DEF_ENUM
123 NUMBER_OF_DESCRIPTORS 130 NUMBER_OF_DESCRIPTORS
124 }; 131 };
125 }; 132 };
126 133
127 134
128 class CallInterfaceDescriptor { 135 class CallInterfaceDescriptor {
129 public: 136 public:
130 CallInterfaceDescriptor() : data_(NULL) {} 137 CallInterfaceDescriptor() : data_(NULL) {}
138 virtual ~CallInterfaceDescriptor() {}
131 139
132 CallInterfaceDescriptor(Isolate* isolate, CallDescriptors::Key key) 140 CallInterfaceDescriptor(Isolate* isolate, CallDescriptors::Key key)
133 : data_(isolate->call_descriptor_data(key)) {} 141 : data_(isolate->call_descriptor_data(key)) {}
134 142
135 int GetEnvironmentLength() const { return data()->register_param_count(); } 143 int GetEnvironmentLength() const { return data()->register_param_count(); }
136 144
137 int GetRegisterParameterCount() const { 145 int GetRegisterParameterCount() const {
138 return data()->register_param_count(); 146 return data()->register_param_count();
139 } 147 }
140 148
141 Register GetParameterRegister(int index) const { 149 Register GetParameterRegister(int index) const {
142 return data()->register_param(index); 150 return data()->register_param(index);
143 } 151 }
144 152
145 Representation GetParameterRepresentation(int index) const { 153 Type* GetParameterType(int index) const {
146 DCHECK(index < data()->register_param_count()); 154 DCHECK(index < data()->register_param_count());
147 if (data()->register_param_representations() == NULL) { 155 return data()->register_param_type(index);
148 return Representation::Tagged();
149 }
150
151 return data()->register_param_representation(index);
152 } 156 }
153 157
154 // "Environment" versions of parameter functions. The first register 158 // "Environment" versions of parameter functions. The first register
155 // parameter (context) is not included. 159 // parameter (context) is not included.
156 int GetEnvironmentParameterCount() const { 160 int GetEnvironmentParameterCount() const {
157 return GetEnvironmentLength() - 1; 161 return GetEnvironmentLength() - 1;
158 } 162 }
159 163
160 Register GetEnvironmentParameterRegister(int index) const { 164 Register GetEnvironmentParameterRegister(int index) const {
161 return GetParameterRegister(index + 1); 165 return GetParameterRegister(index + 1);
162 } 166 }
163 167
164 Representation GetEnvironmentParameterRepresentation(int index) const { 168 Type* GetEnvironmentParameterType(int index) const {
165 return GetParameterRepresentation(index + 1); 169 return GetParameterType(index + 1);
166 } 170 }
167 171
168 // Some platforms have extra information to associate with the descriptor. 172 // Some platforms have extra information to associate with the descriptor.
169 PlatformInterfaceDescriptor* platform_specific_descriptor() const { 173 PlatformInterfaceDescriptor* platform_specific_descriptor() const {
170 return data()->platform_specific_descriptor(); 174 return data()->platform_specific_descriptor();
171 } 175 }
172 176
177 Type::FunctionType* GetFunctionType() const {
178 return data()->function_type();
179 }
180
173 static const Register ContextRegister(); 181 static const Register ContextRegister();
174 182
175 const char* DebugName(Isolate* isolate) const; 183 const char* DebugName(Isolate* isolate) const;
176 184
185 static Type::FunctionType* BuildDefaultFunctionType(Isolate* isolate,
186 int paramater_count);
187
177 protected: 188 protected:
178 const CallInterfaceDescriptorData* data() const { return data_; } 189 const CallInterfaceDescriptorData* data() const { return data_; }
179 190
191 virtual Type::FunctionType* BuildCallInterfaceDescriptorFunctionType(
192 Isolate* isolate, int register_param_count) {
193 return BuildDefaultFunctionType(isolate, register_param_count);
194 }
195
196 virtual void InitializePlatformSpecific(CallInterfaceDescriptorData* data) {
197 UNREACHABLE();
198 }
199
200 void Initialize(Isolate* isolate, CallDescriptors::Key key) {
201 if (!data()->IsInitialized()) {
202 CallInterfaceDescriptorData* d = isolate->call_descriptor_data(key);
203 InitializePlatformSpecific(d);
204 Type::FunctionType* function_type =
205 BuildCallInterfaceDescriptorFunctionType(isolate,
206 d->register_param_count());
207 d->InitializePlatformIndependent(0, function_type);
208 }
209 }
210
180 private: 211 private:
181 const CallInterfaceDescriptorData* data_; 212 const CallInterfaceDescriptorData* data_;
182 }; 213 };
183 214
184 215
185 #define DECLARE_DESCRIPTOR(name, base) \ 216 #define DECLARE_DESCRIPTOR(name, base) \
186 explicit name(Isolate* isolate) : base(isolate, key()) { \ 217 explicit name(Isolate* isolate) : base(isolate, key()) { \
187 if (!data()->IsInitialized()) \ 218 Initialize(isolate, key()); \
188 Initialize(isolate->call_descriptor_data(key())); \ 219 } \
189 } \ 220 \
190 \ 221 protected: \
191 protected: \ 222 void InitializePlatformSpecific(CallInterfaceDescriptorData* data) override; \
192 void Initialize(CallInterfaceDescriptorData* data); \ 223 name(Isolate* isolate, CallDescriptors::Key key) : base(isolate, key) {} \
193 name(Isolate* isolate, CallDescriptors::Key key) : base(isolate, key) {} \ 224 \
194 \ 225 public: \
195 public: \
196 static inline CallDescriptors::Key key(); 226 static inline CallDescriptors::Key key();
197 227
198 228
229 #define DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(name, base) \
230 DECLARE_DESCRIPTOR(name, base) \
231 protected: \
232 virtual Type::FunctionType* BuildCallInterfaceDescriptorFunctionType( \
233 Isolate* isolate, int register_param_count) override; \
234 \
235 public:
199 // LoadDescriptor is used by all stubs that implement Load/KeyedLoad ICs. 236 // LoadDescriptor is used by all stubs that implement Load/KeyedLoad ICs.
200 class LoadDescriptor : public CallInterfaceDescriptor { 237 class LoadDescriptor : public CallInterfaceDescriptor {
201 public: 238 public:
202 DECLARE_DESCRIPTOR(LoadDescriptor, CallInterfaceDescriptor) 239 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(LoadDescriptor,
240 CallInterfaceDescriptor)
203 241
204 enum ParameterIndices { kReceiverIndex, kNameIndex, kSlotIndex }; 242 enum ParameterIndices { kReceiverIndex, kNameIndex, kSlotIndex };
205 static const Register ReceiverRegister(); 243 static const Register ReceiverRegister();
206 static const Register NameRegister(); 244 static const Register NameRegister();
207 static const Register SlotRegister(); 245 static const Register SlotRegister();
208 }; 246 };
209 247
210 248
211 class StoreDescriptor : public CallInterfaceDescriptor { 249 class StoreDescriptor : public CallInterfaceDescriptor {
212 public: 250 public:
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 DECLARE_DESCRIPTOR(InstanceofDescriptor, CallInterfaceDescriptor) 291 DECLARE_DESCRIPTOR(InstanceofDescriptor, CallInterfaceDescriptor)
254 292
255 enum ParameterIndices { kLeftIndex, kRightIndex, kParameterCount }; 293 enum ParameterIndices { kLeftIndex, kRightIndex, kParameterCount };
256 static const Register left(); 294 static const Register left();
257 static const Register right(); 295 static const Register right();
258 }; 296 };
259 297
260 298
261 class VectorStoreICTrampolineDescriptor : public StoreDescriptor { 299 class VectorStoreICTrampolineDescriptor : public StoreDescriptor {
262 public: 300 public:
263 DECLARE_DESCRIPTOR(VectorStoreICTrampolineDescriptor, StoreDescriptor) 301 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(
302 VectorStoreICTrampolineDescriptor, StoreDescriptor)
264 303
265 enum ParameterIndices { kReceiverIndex, kNameIndex, kValueIndex, kSlotIndex }; 304 enum ParameterIndices { kReceiverIndex, kNameIndex, kValueIndex, kSlotIndex };
266 305
267 static const Register SlotRegister(); 306 static const Register SlotRegister();
268 }; 307 };
269 308
270 309
271 class VectorStoreICDescriptor : public VectorStoreICTrampolineDescriptor { 310 class VectorStoreICDescriptor : public VectorStoreICTrampolineDescriptor {
272 public: 311 public:
273 DECLARE_DESCRIPTOR(VectorStoreICDescriptor, VectorStoreICTrampolineDescriptor) 312 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(
313 VectorStoreICDescriptor, VectorStoreICTrampolineDescriptor)
274 314
275 enum ParameterIndices { 315 enum ParameterIndices {
276 kReceiverIndex, 316 kReceiverIndex,
277 kNameIndex, 317 kNameIndex,
278 kValueIndex, 318 kValueIndex,
279 kSlotIndex, 319 kSlotIndex,
280 kVectorIndex 320 kVectorIndex
281 }; 321 };
282 322
283 static const Register VectorRegister(); 323 static const Register VectorRegister();
284 }; 324 };
285 325
286 326
287 class LoadWithVectorDescriptor : public LoadDescriptor { 327 class LoadWithVectorDescriptor : public LoadDescriptor {
288 public: 328 public:
289 DECLARE_DESCRIPTOR(LoadWithVectorDescriptor, LoadDescriptor) 329 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(LoadWithVectorDescriptor,
330 LoadDescriptor)
290 331
291 enum ParameterIndices { 332 enum ParameterIndices {
292 kReceiverIndex, 333 kReceiverIndex,
293 kNameIndex, 334 kNameIndex,
294 kSlotIndex, 335 kSlotIndex,
295 kVectorIndex 336 kVectorIndex
296 }; 337 };
297 338
298 static const Register VectorRegister(); 339 static const Register VectorRegister();
299 }; 340 };
(...skipping 24 matching lines...) Expand all
324 365
325 366
326 class TypeofDescriptor : public CallInterfaceDescriptor { 367 class TypeofDescriptor : public CallInterfaceDescriptor {
327 public: 368 public:
328 DECLARE_DESCRIPTOR(TypeofDescriptor, CallInterfaceDescriptor) 369 DECLARE_DESCRIPTOR(TypeofDescriptor, CallInterfaceDescriptor)
329 }; 370 };
330 371
331 372
332 class FastCloneShallowArrayDescriptor : public CallInterfaceDescriptor { 373 class FastCloneShallowArrayDescriptor : public CallInterfaceDescriptor {
333 public: 374 public:
334 DECLARE_DESCRIPTOR(FastCloneShallowArrayDescriptor, CallInterfaceDescriptor) 375 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(FastCloneShallowArrayDescriptor,
376 CallInterfaceDescriptor)
335 }; 377 };
336 378
337 379
338 class FastCloneShallowObjectDescriptor : public CallInterfaceDescriptor { 380 class FastCloneShallowObjectDescriptor : public CallInterfaceDescriptor {
339 public: 381 public:
340 DECLARE_DESCRIPTOR(FastCloneShallowObjectDescriptor, CallInterfaceDescriptor) 382 DECLARE_DESCRIPTOR(FastCloneShallowObjectDescriptor, CallInterfaceDescriptor)
341 }; 383 };
342 384
343 385
344 class CreateAllocationSiteDescriptor : public CallInterfaceDescriptor { 386 class CreateAllocationSiteDescriptor : public CallInterfaceDescriptor {
345 public: 387 public:
346 DECLARE_DESCRIPTOR(CreateAllocationSiteDescriptor, CallInterfaceDescriptor) 388 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(CreateAllocationSiteDescriptor,
389 CallInterfaceDescriptor)
347 }; 390 };
348 391
349 392
350 class CreateWeakCellDescriptor : public CallInterfaceDescriptor { 393 class CreateWeakCellDescriptor : public CallInterfaceDescriptor {
351 public: 394 public:
352 enum ParameterIndices { 395 enum ParameterIndices {
353 kVectorIndex, 396 kVectorIndex,
354 kSlotIndex, 397 kSlotIndex,
355 kValueIndex, 398 kValueIndex,
356 kParameterCount 399 kParameterCount
357 }; 400 };
358 401
359 DECLARE_DESCRIPTOR(CreateWeakCellDescriptor, CallInterfaceDescriptor) 402 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(CreateWeakCellDescriptor,
403 CallInterfaceDescriptor)
360 }; 404 };
361 405
362 406
363 class CallFunctionDescriptor : public CallInterfaceDescriptor { 407 class CallFunctionDescriptor : public CallInterfaceDescriptor {
364 public: 408 public:
365 DECLARE_DESCRIPTOR(CallFunctionDescriptor, CallInterfaceDescriptor) 409 DECLARE_DESCRIPTOR(CallFunctionDescriptor, CallInterfaceDescriptor)
366 }; 410 };
367 411
368 412
369 class CallFunctionWithFeedbackDescriptor : public CallInterfaceDescriptor { 413 class CallFunctionWithFeedbackDescriptor : public CallInterfaceDescriptor {
370 public: 414 public:
371 DECLARE_DESCRIPTOR(CallFunctionWithFeedbackDescriptor, 415 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(
372 CallInterfaceDescriptor) 416 CallFunctionWithFeedbackDescriptor, CallInterfaceDescriptor)
373 }; 417 };
374 418
375 419
376 class CallFunctionWithFeedbackAndVectorDescriptor 420 class CallFunctionWithFeedbackAndVectorDescriptor
377 : public CallInterfaceDescriptor { 421 : public CallInterfaceDescriptor {
378 public: 422 public:
379 DECLARE_DESCRIPTOR(CallFunctionWithFeedbackAndVectorDescriptor, 423 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(
380 CallInterfaceDescriptor) 424 CallFunctionWithFeedbackAndVectorDescriptor, CallInterfaceDescriptor)
381 }; 425 };
382 426
383 427
384 class CallConstructDescriptor : public CallInterfaceDescriptor { 428 class CallConstructDescriptor : public CallInterfaceDescriptor {
385 public: 429 public:
386 DECLARE_DESCRIPTOR(CallConstructDescriptor, CallInterfaceDescriptor) 430 DECLARE_DESCRIPTOR(CallConstructDescriptor, CallInterfaceDescriptor)
387 }; 431 };
388 432
389 433
390 class RegExpConstructResultDescriptor : public CallInterfaceDescriptor { 434 class RegExpConstructResultDescriptor : public CallInterfaceDescriptor {
(...skipping 17 matching lines...) Expand all
408 class ArrayConstructorConstantArgCountDescriptor 452 class ArrayConstructorConstantArgCountDescriptor
409 : public CallInterfaceDescriptor { 453 : public CallInterfaceDescriptor {
410 public: 454 public:
411 DECLARE_DESCRIPTOR(ArrayConstructorConstantArgCountDescriptor, 455 DECLARE_DESCRIPTOR(ArrayConstructorConstantArgCountDescriptor,
412 CallInterfaceDescriptor) 456 CallInterfaceDescriptor)
413 }; 457 };
414 458
415 459
416 class ArrayConstructorDescriptor : public CallInterfaceDescriptor { 460 class ArrayConstructorDescriptor : public CallInterfaceDescriptor {
417 public: 461 public:
418 DECLARE_DESCRIPTOR(ArrayConstructorDescriptor, CallInterfaceDescriptor) 462 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(ArrayConstructorDescriptor,
463 CallInterfaceDescriptor)
419 }; 464 };
420 465
421 466
422 class InternalArrayConstructorConstantArgCountDescriptor 467 class InternalArrayConstructorConstantArgCountDescriptor
423 : public CallInterfaceDescriptor { 468 : public CallInterfaceDescriptor {
424 public: 469 public:
425 DECLARE_DESCRIPTOR(InternalArrayConstructorConstantArgCountDescriptor, 470 DECLARE_DESCRIPTOR(InternalArrayConstructorConstantArgCountDescriptor,
426 CallInterfaceDescriptor) 471 CallInterfaceDescriptor)
427 }; 472 };
428 473
429 474
430 class InternalArrayConstructorDescriptor : public CallInterfaceDescriptor { 475 class InternalArrayConstructorDescriptor : public CallInterfaceDescriptor {
431 public: 476 public:
432 DECLARE_DESCRIPTOR(InternalArrayConstructorDescriptor, 477 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(
433 CallInterfaceDescriptor) 478 InternalArrayConstructorDescriptor, CallInterfaceDescriptor)
434 }; 479 };
435 480
436 481
437 class CompareDescriptor : public CallInterfaceDescriptor { 482 class CompareDescriptor : public CallInterfaceDescriptor {
438 public: 483 public:
439 DECLARE_DESCRIPTOR(CompareDescriptor, CallInterfaceDescriptor) 484 DECLARE_DESCRIPTOR(CompareDescriptor, CallInterfaceDescriptor)
440 }; 485 };
441 486
442 487
443 class CompareNilDescriptor : public CallInterfaceDescriptor { 488 class CompareNilDescriptor : public CallInterfaceDescriptor {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 529
485 530
486 class CallHandlerDescriptor : public CallInterfaceDescriptor { 531 class CallHandlerDescriptor : public CallInterfaceDescriptor {
487 public: 532 public:
488 DECLARE_DESCRIPTOR(CallHandlerDescriptor, CallInterfaceDescriptor) 533 DECLARE_DESCRIPTOR(CallHandlerDescriptor, CallInterfaceDescriptor)
489 }; 534 };
490 535
491 536
492 class ArgumentAdaptorDescriptor : public CallInterfaceDescriptor { 537 class ArgumentAdaptorDescriptor : public CallInterfaceDescriptor {
493 public: 538 public:
494 DECLARE_DESCRIPTOR(ArgumentAdaptorDescriptor, CallInterfaceDescriptor) 539 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(ArgumentAdaptorDescriptor,
540 CallInterfaceDescriptor)
495 }; 541 };
496 542
497 543
498 class ApiFunctionDescriptor : public CallInterfaceDescriptor { 544 class ApiFunctionDescriptor : public CallInterfaceDescriptor {
499 public: 545 public:
500 DECLARE_DESCRIPTOR(ApiFunctionDescriptor, CallInterfaceDescriptor) 546 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(ApiFunctionDescriptor,
547 CallInterfaceDescriptor)
501 }; 548 };
502 549
503 550
504 class ApiAccessorDescriptor : public CallInterfaceDescriptor { 551 class ApiAccessorDescriptor : public CallInterfaceDescriptor {
505 public: 552 public:
506 DECLARE_DESCRIPTOR(ApiAccessorDescriptor, CallInterfaceDescriptor) 553 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(ApiAccessorDescriptor,
554 CallInterfaceDescriptor)
507 }; 555 };
508 556
509 557
510 class ApiGetterDescriptor : public CallInterfaceDescriptor { 558 class ApiGetterDescriptor : public CallInterfaceDescriptor {
511 public: 559 public:
512 DECLARE_DESCRIPTOR(ApiGetterDescriptor, CallInterfaceDescriptor) 560 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(ApiGetterDescriptor,
561 CallInterfaceDescriptor)
513 562
514 static const Register function_address(); 563 static const Register function_address();
515 }; 564 };
516 565
517 566
518 class ArgumentsAccessReadDescriptor : public CallInterfaceDescriptor { 567 class ArgumentsAccessReadDescriptor : public CallInterfaceDescriptor {
519 public: 568 public:
520 DECLARE_DESCRIPTOR(ArgumentsAccessReadDescriptor, CallInterfaceDescriptor) 569 DECLARE_DESCRIPTOR(ArgumentsAccessReadDescriptor, CallInterfaceDescriptor)
521 570
522 static const Register index(); 571 static const Register index();
(...skipping 19 matching lines...) Expand all
542 class MathPowIntegerDescriptor : public CallInterfaceDescriptor { 591 class MathPowIntegerDescriptor : public CallInterfaceDescriptor {
543 public: 592 public:
544 DECLARE_DESCRIPTOR(MathPowIntegerDescriptor, CallInterfaceDescriptor) 593 DECLARE_DESCRIPTOR(MathPowIntegerDescriptor, CallInterfaceDescriptor)
545 594
546 static const Register exponent(); 595 static const Register exponent();
547 }; 596 };
548 597
549 598
550 class MathRoundVariantDescriptor : public CallInterfaceDescriptor { 599 class MathRoundVariantDescriptor : public CallInterfaceDescriptor {
551 public: 600 public:
552 DECLARE_DESCRIPTOR(MathRoundVariantDescriptor, CallInterfaceDescriptor) 601 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(MathRoundVariantDescriptor,
602 CallInterfaceDescriptor)
553 }; 603 };
554 604
555 605
556 class ContextOnlyDescriptor : public CallInterfaceDescriptor { 606 class ContextOnlyDescriptor : public CallInterfaceDescriptor {
557 public: 607 public:
558 DECLARE_DESCRIPTOR(ContextOnlyDescriptor, CallInterfaceDescriptor) 608 DECLARE_DESCRIPTOR(ContextOnlyDescriptor, CallInterfaceDescriptor)
559 }; 609 };
560 610
561 611
562 class GrowArrayElementsDescriptor : public CallInterfaceDescriptor { 612 class GrowArrayElementsDescriptor : public CallInterfaceDescriptor {
(...skipping 18 matching lines...) Expand all
581 } // namespace v8::internal 631 } // namespace v8::internal
582 632
583 633
584 #if V8_TARGET_ARCH_ARM64 634 #if V8_TARGET_ARCH_ARM64
585 #include "src/arm64/interface-descriptors-arm64.h" 635 #include "src/arm64/interface-descriptors-arm64.h"
586 #elif V8_TARGET_ARCH_ARM 636 #elif V8_TARGET_ARCH_ARM
587 #include "src/arm/interface-descriptors-arm.h" 637 #include "src/arm/interface-descriptors-arm.h"
588 #endif 638 #endif
589 639
590 #endif // V8_CALL_INTERFACE_DESCRIPTOR_H_ 640 #endif // V8_CALL_INTERFACE_DESCRIPTOR_H_
OLDNEW
« no previous file with comments | « src/ia32/interface-descriptors-ia32.cc ('k') | src/interface-descriptors.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698