| 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 |