| 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 437 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 448 void GotoIfException(Node* node, Label* if_exception, | 448 void GotoIfException(Node* node, Label* if_exception, |
| 449 Variable* exception_var = nullptr); | 449 Variable* exception_var = nullptr); |
| 450 | 450 |
| 451 // Helpers which delegate to RawMachineAssembler. | 451 // Helpers which delegate to RawMachineAssembler. |
| 452 Factory* factory() const; | 452 Factory* factory() const; |
| 453 Isolate* isolate() const; | 453 Isolate* isolate() const; |
| 454 Zone* zone() const; | 454 Zone* zone() const; |
| 455 | 455 |
| 456 CodeAssemblerState* state() { return state_; } | 456 CodeAssemblerState* state() { return state_; } |
| 457 | 457 |
| 458 void BreakOnNode(int node_id); |
| 459 |
| 458 protected: | 460 protected: |
| 459 // Enables subclasses to perform operations before and after a call. | 461 // Enables subclasses to perform operations before and after a call. |
| 460 virtual void CallPrologue(); | 462 virtual void CallPrologue(); |
| 461 virtual void CallEpilogue(); | 463 virtual void CallEpilogue(); |
| 462 | 464 |
| 463 private: | 465 private: |
| 464 Node* CallN(CallDescriptor* descriptor, Node* code_target, Node** args); | 466 Node* CallN(CallDescriptor* descriptor, Node* code_target, Node** args); |
| 465 Node* TailCallN(CallDescriptor* descriptor, Node* code_target, Node** args); | 467 Node* TailCallN(CallDescriptor* descriptor, Node* code_target, Node** args); |
| 466 | 468 |
| 469 void InstallBreakOnNodeDecorator(); |
| 470 |
| 467 RawMachineAssembler* raw_assembler() const; | 471 RawMachineAssembler* raw_assembler() const; |
| 468 | 472 |
| 469 CodeAssemblerState* state_; | 473 CodeAssemblerState* state_; |
| 470 | 474 |
| 471 DISALLOW_COPY_AND_ASSIGN(CodeAssembler); | 475 DISALLOW_COPY_AND_ASSIGN(CodeAssembler); |
| 472 }; | 476 }; |
| 473 | 477 |
| 474 class CodeAssemblerVariable { | 478 class CodeAssemblerVariable { |
| 475 public: | 479 public: |
| 476 explicit CodeAssemblerVariable(CodeAssembler* assembler, | 480 explicit CodeAssemblerVariable(CodeAssembler* assembler, |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 539 const CallInterfaceDescriptor& descriptor, | 543 const CallInterfaceDescriptor& descriptor, |
| 540 Code::Flags flags, const char* name, | 544 Code::Flags flags, const char* name, |
| 541 size_t result_size = 1); | 545 size_t result_size = 1); |
| 542 | 546 |
| 543 // Create with JSCall linkage. | 547 // Create with JSCall linkage. |
| 544 CodeAssemblerState(Isolate* isolate, Zone* zone, int parameter_count, | 548 CodeAssemblerState(Isolate* isolate, Zone* zone, int parameter_count, |
| 545 Code::Flags flags, const char* name); | 549 Code::Flags flags, const char* name); |
| 546 | 550 |
| 547 ~CodeAssemblerState(); | 551 ~CodeAssemblerState(); |
| 548 | 552 |
| 553 const char* name() const { return name_; } |
| 554 |
| 549 private: | 555 private: |
| 550 friend class CodeAssembler; | 556 friend class CodeAssembler; |
| 551 friend class CodeAssemblerLabel; | 557 friend class CodeAssemblerLabel; |
| 552 friend class CodeAssemblerVariable; | 558 friend class CodeAssemblerVariable; |
| 553 | 559 |
| 554 CodeAssemblerState(Isolate* isolate, Zone* zone, | 560 CodeAssemblerState(Isolate* isolate, Zone* zone, |
| 555 CallDescriptor* call_descriptor, Code::Flags flags, | 561 CallDescriptor* call_descriptor, Code::Flags flags, |
| 556 const char* name); | 562 const char* name); |
| 557 | 563 |
| 558 std::unique_ptr<RawMachineAssembler> raw_assembler_; | 564 std::unique_ptr<RawMachineAssembler> raw_assembler_; |
| 559 Code::Flags flags_; | 565 Code::Flags flags_; |
| 560 const char* name_; | 566 const char* name_; |
| 561 bool code_generated_; | 567 bool code_generated_; |
| 562 ZoneSet<CodeAssemblerVariable::Impl*> variables_; | 568 ZoneSet<CodeAssemblerVariable::Impl*> variables_; |
| 563 | 569 |
| 564 DISALLOW_COPY_AND_ASSIGN(CodeAssemblerState); | 570 DISALLOW_COPY_AND_ASSIGN(CodeAssemblerState); |
| 565 }; | 571 }; |
| 566 | 572 |
| 567 } // namespace compiler | 573 } // namespace compiler |
| 568 } // namespace internal | 574 } // namespace internal |
| 569 } // namespace v8 | 575 } // namespace v8 |
| 570 | 576 |
| 571 #endif // V8_COMPILER_CODE_ASSEMBLER_H_ | 577 #endif // V8_COMPILER_CODE_ASSEMBLER_H_ |
| OLD | NEW |