OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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_CODE_STUB_ASSEMBLER_H_ | 5 #ifndef V8_CODE_STUB_ASSEMBLER_H_ |
6 #define V8_CODE_STUB_ASSEMBLER_H_ | 6 #define V8_CODE_STUB_ASSEMBLER_H_ |
7 | 7 |
8 #include <functional> | 8 #include <functional> |
9 | 9 |
10 #include "src/compiler/code-assembler.h" | 10 #include "src/compiler/code-assembler.h" |
(...skipping 26 matching lines...) Expand all Loading... |
37 // Create with JSCall linkage. | 37 // Create with JSCall linkage. |
38 CodeStubAssembler(Isolate* isolate, Zone* zone, int parameter_count, | 38 CodeStubAssembler(Isolate* isolate, Zone* zone, int parameter_count, |
39 Code::Flags flags, const char* name); | 39 Code::Flags flags, const char* name); |
40 | 40 |
41 enum ParameterMode { INTEGER_PARAMETERS, SMI_PARAMETERS }; | 41 enum ParameterMode { INTEGER_PARAMETERS, SMI_PARAMETERS }; |
42 | 42 |
43 compiler::Node* BooleanMapConstant(); | 43 compiler::Node* BooleanMapConstant(); |
44 compiler::Node* EmptyStringConstant(); | 44 compiler::Node* EmptyStringConstant(); |
45 compiler::Node* HeapNumberMapConstant(); | 45 compiler::Node* HeapNumberMapConstant(); |
46 compiler::Node* NoContextConstant(); | 46 compiler::Node* NoContextConstant(); |
| 47 compiler::Node* MinusZeroConstant(); |
| 48 compiler::Node* NanConstant(); |
47 compiler::Node* NullConstant(); | 49 compiler::Node* NullConstant(); |
48 compiler::Node* UndefinedConstant(); | 50 compiler::Node* UndefinedConstant(); |
49 compiler::Node* TheHoleConstant(); | 51 compiler::Node* TheHoleConstant(); |
50 compiler::Node* HashSeed(); | 52 compiler::Node* HashSeed(); |
51 compiler::Node* StaleRegisterConstant(); | 53 compiler::Node* StaleRegisterConstant(); |
52 | 54 |
53 // Float64 operations. | 55 // Float64 operations. |
54 compiler::Node* Float64Ceil(compiler::Node* x); | 56 compiler::Node* Float64Ceil(compiler::Node* x); |
55 compiler::Node* Float64Floor(compiler::Node* x); | 57 compiler::Node* Float64Floor(compiler::Node* x); |
56 compiler::Node* Float64Round(compiler::Node* x); | 58 compiler::Node* Float64Round(compiler::Node* x); |
(...skipping 14 matching lines...) Expand all Loading... |
71 // Smi operations. | 73 // Smi operations. |
72 compiler::Node* SmiAdd(compiler::Node* a, compiler::Node* b); | 74 compiler::Node* SmiAdd(compiler::Node* a, compiler::Node* b); |
73 compiler::Node* SmiAddWithOverflow(compiler::Node* a, compiler::Node* b); | 75 compiler::Node* SmiAddWithOverflow(compiler::Node* a, compiler::Node* b); |
74 compiler::Node* SmiSub(compiler::Node* a, compiler::Node* b); | 76 compiler::Node* SmiSub(compiler::Node* a, compiler::Node* b); |
75 compiler::Node* SmiSubWithOverflow(compiler::Node* a, compiler::Node* b); | 77 compiler::Node* SmiSubWithOverflow(compiler::Node* a, compiler::Node* b); |
76 compiler::Node* SmiEqual(compiler::Node* a, compiler::Node* b); | 78 compiler::Node* SmiEqual(compiler::Node* a, compiler::Node* b); |
77 compiler::Node* SmiAboveOrEqual(compiler::Node* a, compiler::Node* b); | 79 compiler::Node* SmiAboveOrEqual(compiler::Node* a, compiler::Node* b); |
78 compiler::Node* SmiLessThan(compiler::Node* a, compiler::Node* b); | 80 compiler::Node* SmiLessThan(compiler::Node* a, compiler::Node* b); |
79 compiler::Node* SmiLessThanOrEqual(compiler::Node* a, compiler::Node* b); | 81 compiler::Node* SmiLessThanOrEqual(compiler::Node* a, compiler::Node* b); |
80 compiler::Node* SmiMin(compiler::Node* a, compiler::Node* b); | 82 compiler::Node* SmiMin(compiler::Node* a, compiler::Node* b); |
| 83 // Computes a % b for Smi inputs a and b; result is not necessarily a Smi. |
| 84 compiler::Node* SmiMod(compiler::Node* a, compiler::Node* b); |
81 | 85 |
82 // Allocate an object of the given size. | 86 // Allocate an object of the given size. |
83 compiler::Node* Allocate(compiler::Node* size, AllocationFlags flags = kNone); | 87 compiler::Node* Allocate(compiler::Node* size, AllocationFlags flags = kNone); |
84 compiler::Node* Allocate(int size, AllocationFlags flags = kNone); | 88 compiler::Node* Allocate(int size, AllocationFlags flags = kNone); |
85 compiler::Node* InnerAllocate(compiler::Node* previous, int offset); | 89 compiler::Node* InnerAllocate(compiler::Node* previous, int offset); |
86 compiler::Node* InnerAllocate(compiler::Node* previous, | 90 compiler::Node* InnerAllocate(compiler::Node* previous, |
87 compiler::Node* offset); | 91 compiler::Node* offset); |
88 | 92 |
89 void Assert(compiler::Node* condition); | 93 void Assert(compiler::Node* condition); |
90 | 94 |
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
470 AllocationFlags flags, | 474 AllocationFlags flags, |
471 compiler::Node* top_adddress, | 475 compiler::Node* top_adddress, |
472 compiler::Node* limit_address); | 476 compiler::Node* limit_address); |
473 | 477 |
474 static const int kElementLoopUnrollThreshold = 8; | 478 static const int kElementLoopUnrollThreshold = 8; |
475 }; | 479 }; |
476 | 480 |
477 } // namespace internal | 481 } // namespace internal |
478 } // namespace v8 | 482 } // namespace v8 |
479 #endif // V8_CODE_STUB_ASSEMBLER_H_ | 483 #endif // V8_CODE_STUB_ASSEMBLER_H_ |
OLD | NEW |