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 "src/compiler/code-assembler.h" | 8 #include "src/compiler/code-assembler.h" |
9 #include "src/objects.h" | 9 #include "src/objects.h" |
10 | 10 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 compiler::Node* Float64Round(compiler::Node* x); | 48 compiler::Node* Float64Round(compiler::Node* x); |
49 compiler::Node* Float64Trunc(compiler::Node* x); | 49 compiler::Node* Float64Trunc(compiler::Node* x); |
50 | 50 |
51 // Tag a Word as a Smi value. | 51 // Tag a Word as a Smi value. |
52 compiler::Node* SmiTag(compiler::Node* value); | 52 compiler::Node* SmiTag(compiler::Node* value); |
53 // Untag a Smi value as a Word. | 53 // Untag a Smi value as a Word. |
54 compiler::Node* SmiUntag(compiler::Node* value); | 54 compiler::Node* SmiUntag(compiler::Node* value); |
55 | 55 |
56 // Smi conversions. | 56 // Smi conversions. |
57 compiler::Node* SmiToFloat64(compiler::Node* value); | 57 compiler::Node* SmiToFloat64(compiler::Node* value); |
| 58 compiler::Node* SmiFromWord(compiler::Node* value) { return SmiTag(value); } |
58 compiler::Node* SmiFromWord32(compiler::Node* value); | 59 compiler::Node* SmiFromWord32(compiler::Node* value); |
59 compiler::Node* SmiToWord(compiler::Node* value) { return SmiUntag(value); } | 60 compiler::Node* SmiToWord(compiler::Node* value) { return SmiUntag(value); } |
60 compiler::Node* SmiToWord32(compiler::Node* value); | 61 compiler::Node* SmiToWord32(compiler::Node* value); |
61 | 62 |
62 // Smi operations. | 63 // Smi operations. |
63 compiler::Node* SmiAdd(compiler::Node* a, compiler::Node* b); | 64 compiler::Node* SmiAdd(compiler::Node* a, compiler::Node* b); |
64 compiler::Node* SmiAddWithOverflow(compiler::Node* a, compiler::Node* b); | 65 compiler::Node* SmiAddWithOverflow(compiler::Node* a, compiler::Node* b); |
65 compiler::Node* SmiSub(compiler::Node* a, compiler::Node* b); | 66 compiler::Node* SmiSub(compiler::Node* a, compiler::Node* b); |
66 compiler::Node* SmiSubWithOverflow(compiler::Node* a, compiler::Node* b); | 67 compiler::Node* SmiSubWithOverflow(compiler::Node* a, compiler::Node* b); |
67 compiler::Node* SmiEqual(compiler::Node* a, compiler::Node* b); | 68 compiler::Node* SmiEqual(compiler::Node* a, compiler::Node* b); |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 compiler::Node* StoreFixedDoubleArrayElement( | 169 compiler::Node* StoreFixedDoubleArrayElement( |
169 compiler::Node* object, compiler::Node* index, compiler::Node* value, | 170 compiler::Node* object, compiler::Node* index, compiler::Node* value, |
170 ParameterMode parameter_mode = INTEGER_PARAMETERS); | 171 ParameterMode parameter_mode = INTEGER_PARAMETERS); |
171 | 172 |
172 // Allocate a HeapNumber without initializing its value. | 173 // Allocate a HeapNumber without initializing its value. |
173 compiler::Node* AllocateHeapNumber(); | 174 compiler::Node* AllocateHeapNumber(); |
174 // Allocate a HeapNumber with a specific value. | 175 // Allocate a HeapNumber with a specific value. |
175 compiler::Node* AllocateHeapNumberWithValue(compiler::Node* value); | 176 compiler::Node* AllocateHeapNumberWithValue(compiler::Node* value); |
176 // Allocate a SeqOneByteString with the given length. | 177 // Allocate a SeqOneByteString with the given length. |
177 compiler::Node* AllocateSeqOneByteString(int length); | 178 compiler::Node* AllocateSeqOneByteString(int length); |
| 179 compiler::Node* AllocateSeqOneByteString(compiler::Node* context, |
| 180 compiler::Node* length); |
178 // Allocate a SeqTwoByteString with the given length. | 181 // Allocate a SeqTwoByteString with the given length. |
179 compiler::Node* AllocateSeqTwoByteString(int length); | 182 compiler::Node* AllocateSeqTwoByteString(int length); |
| 183 compiler::Node* AllocateSeqTwoByteString(compiler::Node* context, |
| 184 compiler::Node* length); |
180 // Allocated an JSArray | 185 // Allocated an JSArray |
181 compiler::Node* AllocateJSArray(ElementsKind kind, compiler::Node* array_map, | 186 compiler::Node* AllocateJSArray(ElementsKind kind, compiler::Node* array_map, |
182 compiler::Node* capacity, | 187 compiler::Node* capacity, |
183 compiler::Node* length, | 188 compiler::Node* length, |
184 compiler::Node* allocation_site = nullptr, | 189 compiler::Node* allocation_site = nullptr, |
185 ParameterMode mode = INTEGER_PARAMETERS); | 190 ParameterMode mode = INTEGER_PARAMETERS); |
186 | 191 |
187 // Allocation site manipulation | 192 // Allocation site manipulation |
188 void InitializeAllocationMemento(compiler::Node* base_allocation, | 193 void InitializeAllocationMemento(compiler::Node* base_allocation, |
189 int base_allocation_size, | 194 int base_allocation_size, |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
257 compiler::Node* top_adddress, | 262 compiler::Node* top_adddress, |
258 compiler::Node* limit_address); | 263 compiler::Node* limit_address); |
259 | 264 |
260 static const int kElementLoopUnrollThreshold = 8; | 265 static const int kElementLoopUnrollThreshold = 8; |
261 }; | 266 }; |
262 | 267 |
263 } // namespace internal | 268 } // namespace internal |
264 } // namespace v8 | 269 } // namespace v8 |
265 | 270 |
266 #endif // V8_CODE_STUB_ASSEMBLER_H_ | 271 #endif // V8_CODE_STUB_ASSEMBLER_H_ |
OLD | NEW |