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 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 Label* if_hole = nullptr); | 267 Label* if_hole = nullptr); |
268 | 268 |
269 // Load Float64 value by |base| + |offset| address. If the value is a double | 269 // Load Float64 value by |base| + |offset| address. If the value is a double |
270 // hole then jump to |if_hole|. If |machine_type| is None then only the hole | 270 // hole then jump to |if_hole|. If |machine_type| is None then only the hole |
271 // check is generated. | 271 // check is generated. |
272 compiler::Node* LoadDoubleWithHoleCheck( | 272 compiler::Node* LoadDoubleWithHoleCheck( |
273 compiler::Node* base, compiler::Node* offset, Label* if_hole, | 273 compiler::Node* base, compiler::Node* offset, Label* if_hole, |
274 MachineType machine_type = MachineType::Float64()); | 274 MachineType machine_type = MachineType::Float64()); |
275 | 275 |
276 // Context manipulation | 276 // Context manipulation |
| 277 compiler::Node* LoadContextElement(compiler::Node* context, int slot_index); |
277 compiler::Node* LoadNativeContext(compiler::Node* context); | 278 compiler::Node* LoadNativeContext(compiler::Node* context); |
278 | 279 |
279 compiler::Node* LoadJSArrayElementsMap(ElementsKind kind, | 280 compiler::Node* LoadJSArrayElementsMap(ElementsKind kind, |
280 compiler::Node* native_context); | 281 compiler::Node* native_context); |
281 | 282 |
282 // Store the floating point value of a HeapNumber. | 283 // Store the floating point value of a HeapNumber. |
283 compiler::Node* StoreHeapNumberValue(compiler::Node* object, | 284 compiler::Node* StoreHeapNumberValue(compiler::Node* object, |
284 compiler::Node* value); | 285 compiler::Node* value); |
285 // Store a field to an object on the heap. | 286 // Store a field to an object on the heap. |
286 compiler::Node* StoreObjectField( | 287 compiler::Node* StoreObjectField( |
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
651 return EmitKeyedSloppyArguments(receiver, key, nullptr, bailout); | 652 return EmitKeyedSloppyArguments(receiver, key, nullptr, bailout); |
652 } | 653 } |
653 | 654 |
654 // Emits keyed sloppy arguments store. | 655 // Emits keyed sloppy arguments store. |
655 void StoreKeyedSloppyArguments(compiler::Node* receiver, compiler::Node* key, | 656 void StoreKeyedSloppyArguments(compiler::Node* receiver, compiler::Node* key, |
656 compiler::Node* value, Label* bailout) { | 657 compiler::Node* value, Label* bailout) { |
657 DCHECK_NOT_NULL(value); | 658 DCHECK_NOT_NULL(value); |
658 EmitKeyedSloppyArguments(receiver, key, value, bailout); | 659 EmitKeyedSloppyArguments(receiver, key, value, bailout); |
659 } | 660 } |
660 | 661 |
| 662 // Loads script context from the script context table. |
| 663 compiler::Node* LoadScriptContext(compiler::Node* context, int context_index); |
| 664 |
661 void LoadIC(const LoadICParameters* p); | 665 void LoadIC(const LoadICParameters* p); |
662 void LoadGlobalIC(const LoadICParameters* p); | 666 void LoadGlobalIC(const LoadICParameters* p); |
663 void KeyedLoadIC(const LoadICParameters* p); | 667 void KeyedLoadIC(const LoadICParameters* p); |
664 void KeyedLoadICGeneric(const LoadICParameters* p); | 668 void KeyedLoadICGeneric(const LoadICParameters* p); |
665 | 669 |
666 // Get the enumerable length from |map| and return the result as a Smi. | 670 // Get the enumerable length from |map| and return the result as a Smi. |
667 compiler::Node* EnumLength(compiler::Node* map); | 671 compiler::Node* EnumLength(compiler::Node* map); |
668 | 672 |
669 // Check the cache validity for |receiver|. Branch to |use_cache| if | 673 // Check the cache validity for |receiver|. Branch to |use_cache| if |
670 // the cache is valid, otherwise branch to |use_runtime|. | 674 // the cache is valid, otherwise branch to |use_runtime|. |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
730 Label* bailout); | 734 Label* bailout); |
731 | 735 |
732 static const int kElementLoopUnrollThreshold = 8; | 736 static const int kElementLoopUnrollThreshold = 8; |
733 }; | 737 }; |
734 | 738 |
735 DEFINE_OPERATORS_FOR_FLAGS(CodeStubAssembler::AllocationFlags); | 739 DEFINE_OPERATORS_FOR_FLAGS(CodeStubAssembler::AllocationFlags); |
736 | 740 |
737 } // namespace internal | 741 } // namespace internal |
738 } // namespace v8 | 742 } // namespace v8 |
739 #endif // V8_CODE_STUB_ASSEMBLER_H_ | 743 #endif // V8_CODE_STUB_ASSEMBLER_H_ |
OLD | NEW |