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 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 V(ChangeUint32ToFloat64) \ | 155 V(ChangeUint32ToFloat64) \ |
156 V(ChangeUint32ToUint64) \ | 156 V(ChangeUint32ToUint64) \ |
157 V(RoundFloat64ToInt32) \ | 157 V(RoundFloat64ToInt32) \ |
158 V(RoundInt32ToFloat32) \ | 158 V(RoundInt32ToFloat32) \ |
159 V(Float64SilenceNaN) \ | 159 V(Float64SilenceNaN) \ |
160 V(Float64RoundDown) \ | 160 V(Float64RoundDown) \ |
161 V(Float64RoundUp) \ | 161 V(Float64RoundUp) \ |
162 V(Float64RoundTiesEven) \ | 162 V(Float64RoundTiesEven) \ |
163 V(Float64RoundTruncate) \ | 163 V(Float64RoundTruncate) \ |
164 V(Word32Clz) \ | 164 V(Word32Clz) \ |
| 165 V(Word32Not) \ |
165 V(Word32BinaryNot) | 166 V(Word32BinaryNot) |
166 | 167 |
167 // A "public" interface used by components outside of compiler directory to | 168 // A "public" interface used by components outside of compiler directory to |
168 // create code objects with TurboFan's backend. This class is mostly a thin shim | 169 // create code objects with TurboFan's backend. This class is mostly a thin shim |
169 // around the RawMachineAssembler, and its primary job is to ensure that the | 170 // around the RawMachineAssembler, and its primary job is to ensure that the |
170 // innards of the RawMachineAssembler and other compiler implementation details | 171 // innards of the RawMachineAssembler and other compiler implementation details |
171 // don't leak outside of the the compiler directory.. | 172 // don't leak outside of the the compiler directory.. |
172 // | 173 // |
173 // V8 components that need to generate low-level code using this interface | 174 // V8 components that need to generate low-level code using this interface |
174 // should include this header--and this header only--from the compiler directory | 175 // should include this header--and this header only--from the compiler directory |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
428 Node* receiver, Node* arg1, Node* arg2, size_t result_size = 1); | 429 Node* receiver, Node* arg1, Node* arg2, size_t result_size = 1); |
429 Node* CallJS(Callable const& callable, Node* context, Node* function, | 430 Node* CallJS(Callable const& callable, Node* context, Node* function, |
430 Node* receiver, Node* arg1, Node* arg2, Node* arg3, | 431 Node* receiver, Node* arg1, Node* arg2, Node* arg3, |
431 size_t result_size = 1); | 432 size_t result_size = 1); |
432 | 433 |
433 // Call to a C function with two arguments. | 434 // Call to a C function with two arguments. |
434 Node* CallCFunction2(MachineType return_type, MachineType arg0_type, | 435 Node* CallCFunction2(MachineType return_type, MachineType arg0_type, |
435 MachineType arg1_type, Node* function, Node* arg0, | 436 MachineType arg1_type, Node* function, Node* arg0, |
436 Node* arg1); | 437 Node* arg1); |
437 | 438 |
| 439 // Call to a C function with three arguments. |
| 440 Node* CallCFunction3(MachineType return_type, MachineType arg0_type, |
| 441 MachineType arg1_type, MachineType arg2_type, |
| 442 Node* function, Node* arg0, Node* arg1, Node* arg2); |
| 443 |
438 // Exception handling support. | 444 // Exception handling support. |
439 void GotoIfException(Node* node, Label* if_exception, | 445 void GotoIfException(Node* node, Label* if_exception, |
440 Variable* exception_var = nullptr); | 446 Variable* exception_var = nullptr); |
441 | 447 |
442 // Helpers which delegate to RawMachineAssembler. | 448 // Helpers which delegate to RawMachineAssembler. |
443 Factory* factory() const; | 449 Factory* factory() const; |
444 Isolate* isolate() const; | 450 Isolate* isolate() const; |
445 Zone* zone() const; | 451 Zone* zone() const; |
446 | 452 |
447 CodeAssemblerState* state() { return state_; } | 453 CodeAssemblerState* state() { return state_; } |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
559 ZoneSet<CodeAssemblerVariable::Impl*> variables_; | 565 ZoneSet<CodeAssemblerVariable::Impl*> variables_; |
560 | 566 |
561 DISALLOW_COPY_AND_ASSIGN(CodeAssemblerState); | 567 DISALLOW_COPY_AND_ASSIGN(CodeAssemblerState); |
562 }; | 568 }; |
563 | 569 |
564 } // namespace compiler | 570 } // namespace compiler |
565 } // namespace internal | 571 } // namespace internal |
566 } // namespace v8 | 572 } // namespace v8 |
567 | 573 |
568 #endif // V8_COMPILER_CODE_ASSEMBLER_H_ | 574 #endif // V8_COMPILER_CODE_ASSEMBLER_H_ |
OLD | NEW |