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_STUB_ASSEMBLER_H_ | 5 #ifndef V8_COMPILER_CODE_STUB_ASSEMBLER_H_ |
6 #define V8_COMPILER_CODE_STUB_ASSEMBLER_H_ | 6 #define V8_COMPILER_CODE_STUB_ASSEMBLER_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 | 9 |
10 // Clients of this interface shouldn't depend on lots of compiler internals. | 10 // Clients of this interface shouldn't depend on lots of compiler internals. |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
188 // Access to the frame pointer | 188 // Access to the frame pointer |
189 Node* LoadFramePointer(); | 189 Node* LoadFramePointer(); |
190 Node* LoadParentFramePointer(); | 190 Node* LoadParentFramePointer(); |
191 | 191 |
192 // Access to the stack pointer | 192 // Access to the stack pointer |
193 Node* LoadStackPointer(); | 193 Node* LoadStackPointer(); |
194 | 194 |
195 // Load raw memory location. | 195 // Load raw memory location. |
196 Node* Load(MachineType rep, Node* base); | 196 Node* Load(MachineType rep, Node* base); |
197 Node* Load(MachineType rep, Node* base, Node* index); | 197 Node* Load(MachineType rep, Node* base, Node* index); |
198 Node* AtomicLoad(MachineType rep, Node* base, Node* index); | |
199 | 198 |
200 // Store value to raw memory location. | 199 // Store value to raw memory location. |
201 Node* Store(MachineRepresentation rep, Node* base, Node* value); | 200 Node* Store(MachineRepresentation rep, Node* base, Node* value); |
202 Node* Store(MachineRepresentation rep, Node* base, Node* index, Node* value); | 201 Node* Store(MachineRepresentation rep, Node* base, Node* index, Node* value); |
203 Node* StoreNoWriteBarrier(MachineRepresentation rep, Node* base, Node* value); | 202 Node* StoreNoWriteBarrier(MachineRepresentation rep, Node* base, Node* value); |
204 Node* StoreNoWriteBarrier(MachineRepresentation rep, Node* base, Node* index, | 203 Node* StoreNoWriteBarrier(MachineRepresentation rep, Node* base, Node* index, |
205 Node* value); | 204 Node* value); |
206 | 205 |
207 // Basic arithmetic operations. | 206 // Basic arithmetic operations. |
208 #define DECLARE_CODE_STUB_ASSEMBER_BINARY_OP(name) Node* name(Node* a, Node* b); | 207 #define DECLARE_CODE_STUB_ASSEMBER_BINARY_OP(name) Node* name(Node* a, Node* b); |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
387 Node* BitFieldDecode(Node* word32, uint32_t shift, uint32_t mask); | 386 Node* BitFieldDecode(Node* word32, uint32_t shift, uint32_t mask); |
388 | 387 |
389 // Conversions. | 388 // Conversions. |
390 Node* ChangeFloat64ToTagged(Node* value); | 389 Node* ChangeFloat64ToTagged(Node* value); |
391 Node* ChangeInt32ToTagged(Node* value); | 390 Node* ChangeInt32ToTagged(Node* value); |
392 Node* ChangeUint32ToTagged(Node* value); | 391 Node* ChangeUint32ToTagged(Node* value); |
393 Node* TruncateTaggedToFloat64(Node* context, Node* value); | 392 Node* TruncateTaggedToFloat64(Node* context, Node* value); |
394 Node* TruncateTaggedToWord32(Node* context, Node* value); | 393 Node* TruncateTaggedToWord32(Node* context, Node* value); |
395 // Truncate to int32 using JavaScript truncation mode. | 394 // Truncate to int32 using JavaScript truncation mode. |
396 Node* TruncateFloat64ToInt32(Node* value); | 395 Node* TruncateFloat64ToInt32(Node* value); |
397 // No-op on 32-bit, otherwise zero extend. | |
398 Node* ChangeUint32ToWord(Node* value); | |
399 | 396 |
400 // Type conversions. | 397 // Type conversions. |
401 // Throws a TypeError for {method_name} if {value} is not coercible to Object, | 398 // Throws a TypeError for {method_name} if {value} is not coercible to Object, |
402 // or returns the {value} converted to a String otherwise. | 399 // or returns the {value} converted to a String otherwise. |
403 Node* ToThisString(Node* context, Node* value, char const* method_name); | 400 Node* ToThisString(Node* context, Node* value, char const* method_name); |
404 | 401 |
405 // String helpers. | 402 // String helpers. |
406 // Load a character from a String (might flatten a ConsString). | 403 // Load a character from a String (might flatten a ConsString). |
407 Node* StringCharCodeAt(Node* string, Node* smi_index); | 404 Node* StringCharCodeAt(Node* string, Node* smi_index); |
408 // Return the single character string with only {code}. | 405 // Return the single character string with only {code}. |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
508 // Map of variables to the list of value nodes that have been added from each | 505 // Map of variables to the list of value nodes that have been added from each |
509 // merge path in their order of merging. | 506 // merge path in their order of merging. |
510 std::map<Variable::Impl*, std::vector<Node*>> variable_merges_; | 507 std::map<Variable::Impl*, std::vector<Node*>> variable_merges_; |
511 }; | 508 }; |
512 | 509 |
513 } // namespace compiler | 510 } // namespace compiler |
514 } // namespace internal | 511 } // namespace internal |
515 } // namespace v8 | 512 } // namespace v8 |
516 | 513 |
517 #endif // V8_COMPILER_CODE_STUB_ASSEMBLER_H_ | 514 #endif // V8_COMPILER_CODE_STUB_ASSEMBLER_H_ |
OLD | NEW |