OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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_COMPILER_CODE_ASSEMBLER_H_ | 5 #ifndef V8_COMPILER_CODE_ASSEMBLER_H_ |
6 #define V8_COMPILER_CODE_ASSEMBLER_H_ | 6 #define V8_COMPILER_CODE_ASSEMBLER_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 return CallStubR(descriptor, 1, target, context, args...); | 320 return CallStubR(descriptor, 1, target, context, args...); |
321 } | 321 } |
322 | 322 |
323 template <class... TArgs> | 323 template <class... TArgs> |
324 Node* CallStubR(const CallInterfaceDescriptor& descriptor, size_t result_size, | 324 Node* CallStubR(const CallInterfaceDescriptor& descriptor, size_t result_size, |
325 Node* target, Node* context, TArgs... args); | 325 Node* target, Node* context, TArgs... args); |
326 | 326 |
327 Node* CallStubN(const CallInterfaceDescriptor& descriptor, size_t result_size, | 327 Node* CallStubN(const CallInterfaceDescriptor& descriptor, size_t result_size, |
328 int input_count, Node* const* inputs); | 328 int input_count, Node* const* inputs); |
329 | 329 |
330 Node* TailCallStub(Callable const& callable, Node* context, Node* arg1, | 330 template <class... TArgs> |
331 size_t result_size = 1); | 331 Node* TailCallStub(Callable const& callable, Node* context, TArgs... args) { |
332 Node* TailCallStub(Callable const& callable, Node* context, Node* arg1, | 332 Node* target = HeapConstant(callable.code()); |
333 Node* arg2, size_t result_size = 1); | 333 return TailCallStub(callable.descriptor(), target, context, args...); |
334 Node* TailCallStub(Callable const& callable, Node* context, Node* arg1, | 334 } |
335 Node* arg2, Node* arg3, size_t result_size = 1); | |
336 Node* TailCallStub(Callable const& callable, Node* context, Node* arg1, | |
337 Node* arg2, Node* arg3, Node* arg4, | |
338 size_t result_size = 1); | |
339 Node* TailCallStub(Callable const& callable, Node* context, Node* arg1, | |
340 Node* arg2, Node* arg3, Node* arg4, Node* arg5, | |
341 size_t result_size = 1); | |
342 | 335 |
| 336 template <class... TArgs> |
343 Node* TailCallStub(const CallInterfaceDescriptor& descriptor, Node* target, | 337 Node* TailCallStub(const CallInterfaceDescriptor& descriptor, Node* target, |
344 Node* context, Node* arg1, size_t result_size = 1); | 338 Node* context, TArgs... args); |
345 Node* TailCallStub(const CallInterfaceDescriptor& descriptor, Node* target, | |
346 Node* context, Node* arg1, Node* arg2, | |
347 size_t result_size = 1); | |
348 Node* TailCallStub(const CallInterfaceDescriptor& descriptor, Node* target, | |
349 Node* context, Node* arg1, Node* arg2, Node* arg3, | |
350 size_t result_size = 1); | |
351 Node* TailCallStub(const CallInterfaceDescriptor& descriptor, Node* target, | |
352 Node* context, Node* arg1, Node* arg2, Node* arg3, | |
353 Node* arg4, size_t result_size = 1); | |
354 Node* TailCallStub(const CallInterfaceDescriptor& descriptor, Node* target, | |
355 Node* context, Node* arg1, Node* arg2, Node* arg3, | |
356 Node* arg4, Node* arg5, size_t result_size = 1); | |
357 Node* TailCallStub(const CallInterfaceDescriptor& descriptor, Node* target, | |
358 Node* context, Node* arg1, Node* arg2, Node* arg3, | |
359 Node* arg4, Node* arg5, Node* arg6, | |
360 size_t result_size = 1); | |
361 | 339 |
362 Node* TailCallBytecodeDispatch(const CallInterfaceDescriptor& descriptor, | 340 Node* TailCallBytecodeDispatch(const CallInterfaceDescriptor& descriptor, |
363 Node* code_target_address, Node** args); | 341 Node* code_target_address, Node** args); |
364 | 342 |
365 template <class... TArgs> | 343 template <class... TArgs> |
366 Node* CallJS(Callable const& callable, Node* context, Node* function, | 344 Node* CallJS(Callable const& callable, Node* context, Node* function, |
367 Node* receiver, TArgs... args) { | 345 Node* receiver, TArgs... args) { |
368 int argc = static_cast<int>(sizeof...(args)); | 346 int argc = static_cast<int>(sizeof...(args)); |
369 Node* arity = Int32Constant(argc); | 347 Node* arity = Int32Constant(argc); |
370 return CallStub(callable, context, function, arity, receiver, args...); | 348 return CallStub(callable, context, function, arity, receiver, args...); |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
497 ZoneSet<CodeAssemblerVariable::Impl*> variables_; | 475 ZoneSet<CodeAssemblerVariable::Impl*> variables_; |
498 | 476 |
499 DISALLOW_COPY_AND_ASSIGN(CodeAssemblerState); | 477 DISALLOW_COPY_AND_ASSIGN(CodeAssemblerState); |
500 }; | 478 }; |
501 | 479 |
502 } // namespace compiler | 480 } // namespace compiler |
503 } // namespace internal | 481 } // namespace internal |
504 } // namespace v8 | 482 } // namespace v8 |
505 | 483 |
506 #endif // V8_COMPILER_CODE_ASSEMBLER_H_ | 484 #endif // V8_COMPILER_CODE_ASSEMBLER_H_ |
OLD | NEW |