| 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 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 template <class... TArgs> | 330 template <class... TArgs> |
| 331 Node* TailCallStub(Callable const& callable, Node* context, TArgs... args) { | 331 Node* TailCallStub(Callable const& callable, Node* context, TArgs... args) { |
| 332 Node* target = HeapConstant(callable.code()); | 332 Node* target = HeapConstant(callable.code()); |
| 333 return TailCallStub(callable.descriptor(), target, context, args...); | 333 return TailCallStub(callable.descriptor(), target, context, args...); |
| 334 } | 334 } |
| 335 | 335 |
| 336 template <class... TArgs> | 336 template <class... TArgs> |
| 337 Node* TailCallStub(const CallInterfaceDescriptor& descriptor, Node* target, | 337 Node* TailCallStub(const CallInterfaceDescriptor& descriptor, Node* target, |
| 338 Node* context, TArgs... args); | 338 Node* context, TArgs... args); |
| 339 | 339 |
| 340 template <class... TArgs> |
| 340 Node* TailCallBytecodeDispatch(const CallInterfaceDescriptor& descriptor, | 341 Node* TailCallBytecodeDispatch(const CallInterfaceDescriptor& descriptor, |
| 341 Node* code_target_address, Node** args); | 342 Node* target, TArgs... args); |
| 342 | 343 |
| 343 template <class... TArgs> | 344 template <class... TArgs> |
| 344 Node* CallJS(Callable const& callable, Node* context, Node* function, | 345 Node* CallJS(Callable const& callable, Node* context, Node* function, |
| 345 Node* receiver, TArgs... args) { | 346 Node* receiver, TArgs... args) { |
| 346 int argc = static_cast<int>(sizeof...(args)); | 347 int argc = static_cast<int>(sizeof...(args)); |
| 347 Node* arity = Int32Constant(argc); | 348 Node* arity = Int32Constant(argc); |
| 348 return CallStub(callable, context, function, arity, receiver, args...); | 349 return CallStub(callable, context, function, arity, receiver, args...); |
| 349 } | 350 } |
| 350 | 351 |
| 351 // Call to a C function with two arguments. | 352 // Call to a C function with two arguments. |
| (...skipping 13 matching lines...) Expand all Loading... |
| 365 CodeAssemblerState* state() { return state_; } | 366 CodeAssemblerState* state() { return state_; } |
| 366 | 367 |
| 367 void BreakOnNode(int node_id); | 368 void BreakOnNode(int node_id); |
| 368 | 369 |
| 369 protected: | 370 protected: |
| 370 // Enables subclasses to perform operations before and after a call. | 371 // Enables subclasses to perform operations before and after a call. |
| 371 virtual void CallPrologue(); | 372 virtual void CallPrologue(); |
| 372 virtual void CallEpilogue(); | 373 virtual void CallEpilogue(); |
| 373 | 374 |
| 374 private: | 375 private: |
| 375 Node* CallN(CallDescriptor* descriptor, Node* code_target, Node** args); | |
| 376 Node* TailCallN(CallDescriptor* descriptor, Node* code_target, Node** args); | |
| 377 | |
| 378 RawMachineAssembler* raw_assembler() const; | 376 RawMachineAssembler* raw_assembler() const; |
| 379 | 377 |
| 380 CodeAssemblerState* state_; | 378 CodeAssemblerState* state_; |
| 381 | 379 |
| 382 DISALLOW_COPY_AND_ASSIGN(CodeAssembler); | 380 DISALLOW_COPY_AND_ASSIGN(CodeAssembler); |
| 383 }; | 381 }; |
| 384 | 382 |
| 385 class CodeAssemblerVariable { | 383 class CodeAssemblerVariable { |
| 386 public: | 384 public: |
| 387 explicit CodeAssemblerVariable(CodeAssembler* assembler, | 385 explicit CodeAssemblerVariable(CodeAssembler* assembler, |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 475 ZoneSet<CodeAssemblerVariable::Impl*> variables_; | 473 ZoneSet<CodeAssemblerVariable::Impl*> variables_; |
| 476 | 474 |
| 477 DISALLOW_COPY_AND_ASSIGN(CodeAssemblerState); | 475 DISALLOW_COPY_AND_ASSIGN(CodeAssemblerState); |
| 478 }; | 476 }; |
| 479 | 477 |
| 480 } // namespace compiler | 478 } // namespace compiler |
| 481 } // namespace internal | 479 } // namespace internal |
| 482 } // namespace v8 | 480 } // namespace v8 |
| 483 | 481 |
| 484 #endif // V8_COMPILER_CODE_ASSEMBLER_H_ | 482 #endif // V8_COMPILER_CODE_ASSEMBLER_H_ |
| OLD | NEW |