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