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 #include "src/compiler/code-stub-assembler.h" | 5 #include "src/compiler/code-stub-assembler.h" |
6 | 6 |
7 #include <ostream> | 7 #include <ostream> |
8 | 8 |
9 #include "src/code-factory.h" | 9 #include "src/code-factory.h" |
10 #include "src/compiler/graph.h" | 10 #include "src/compiler/graph.h" |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 } | 98 } |
99 | 99 |
100 Node* CodeStubAssembler::ExternalConstant(ExternalReference address) { | 100 Node* CodeStubAssembler::ExternalConstant(ExternalReference address) { |
101 return raw_assembler_->ExternalConstant(address); | 101 return raw_assembler_->ExternalConstant(address); |
102 } | 102 } |
103 | 103 |
104 Node* CodeStubAssembler::Float64Constant(double value) { | 104 Node* CodeStubAssembler::Float64Constant(double value) { |
105 return raw_assembler_->Float64Constant(value); | 105 return raw_assembler_->Float64Constant(value); |
106 } | 106 } |
107 | 107 |
| 108 Node* CodeStubAssembler::BooleanMapConstant() { |
| 109 return HeapConstant(isolate()->factory()->boolean_map()); |
| 110 } |
| 111 |
108 Node* CodeStubAssembler::HeapNumberMapConstant() { | 112 Node* CodeStubAssembler::HeapNumberMapConstant() { |
109 return HeapConstant(isolate()->factory()->heap_number_map()); | 113 return HeapConstant(isolate()->factory()->heap_number_map()); |
110 } | 114 } |
111 | 115 |
112 Node* CodeStubAssembler::Parameter(int value) { | 116 Node* CodeStubAssembler::Parameter(int value) { |
113 return raw_assembler_->Parameter(value); | 117 return raw_assembler_->Parameter(value); |
114 } | 118 } |
115 | 119 |
116 | 120 |
117 void CodeStubAssembler::Return(Node* value) { | 121 void CodeStubAssembler::Return(Node* value) { |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 Node* CodeStubAssembler::LoadObjectField(Node* object, int offset) { | 219 Node* CodeStubAssembler::LoadObjectField(Node* object, int offset) { |
216 return raw_assembler_->Load(MachineType::AnyTagged(), object, | 220 return raw_assembler_->Load(MachineType::AnyTagged(), object, |
217 IntPtrConstant(offset - kHeapObjectTag)); | 221 IntPtrConstant(offset - kHeapObjectTag)); |
218 } | 222 } |
219 | 223 |
220 Node* CodeStubAssembler::LoadHeapNumberValue(Node* object) { | 224 Node* CodeStubAssembler::LoadHeapNumberValue(Node* object) { |
221 return Load(MachineType::Float64(), object, | 225 return Load(MachineType::Float64(), object, |
222 IntPtrConstant(HeapNumber::kValueOffset - kHeapObjectTag)); | 226 IntPtrConstant(HeapNumber::kValueOffset - kHeapObjectTag)); |
223 } | 227 } |
224 | 228 |
| 229 Node* CodeStubAssembler::LoadMapBitField(Node* map) { |
| 230 return Load(MachineType::Uint8(), map, |
| 231 IntPtrConstant(Map::kBitFieldOffset - kHeapObjectTag)); |
| 232 } |
| 233 |
225 Node* CodeStubAssembler::LoadMapInstanceType(Node* map) { | 234 Node* CodeStubAssembler::LoadMapInstanceType(Node* map) { |
226 return Load(MachineType::Uint8(), map, | 235 return Load(MachineType::Uint8(), map, |
227 IntPtrConstant(Map::kInstanceTypeOffset - kHeapObjectTag)); | 236 IntPtrConstant(Map::kInstanceTypeOffset - kHeapObjectTag)); |
228 } | 237 } |
229 | 238 |
230 Node* CodeStubAssembler::LoadFixedArrayElementSmiIndex(Node* object, | 239 Node* CodeStubAssembler::LoadFixedArrayElementSmiIndex(Node* object, |
231 Node* smi_index, | 240 Node* smi_index, |
232 int additional_offset) { | 241 int additional_offset) { |
233 int const kSmiShiftBits = kSmiShiftSize + kSmiTagSize; | 242 int const kSmiShiftBits = kSmiShiftSize + kSmiTagSize; |
234 Node* header_size = IntPtrConstant(additional_offset + | 243 Node* header_size = IntPtrConstant(additional_offset + |
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
519 Label* if_false) { | 528 Label* if_false) { |
520 Label if_greaterthanorequal(this), if_notgreaterthanorequal(this); | 529 Label if_greaterthanorequal(this), if_notgreaterthanorequal(this); |
521 Branch(Float64GreaterThanOrEqual(a, b), &if_greaterthanorequal, | 530 Branch(Float64GreaterThanOrEqual(a, b), &if_greaterthanorequal, |
522 &if_notgreaterthanorequal); | 531 &if_notgreaterthanorequal); |
523 Bind(&if_greaterthanorequal); | 532 Bind(&if_greaterthanorequal); |
524 Goto(if_true); | 533 Goto(if_true); |
525 Bind(&if_notgreaterthanorequal); | 534 Bind(&if_notgreaterthanorequal); |
526 Goto(if_false); | 535 Goto(if_false); |
527 } | 536 } |
528 | 537 |
| 538 void CodeStubAssembler::BranchIfWord32Equal(Node* a, Node* b, Label* if_true, |
| 539 Label* if_false) { |
| 540 Label if_equal(this), if_notequal(this); |
| 541 Branch(Word32Equal(a, b), &if_equal, &if_notequal); |
| 542 Bind(&if_equal); |
| 543 Goto(if_true); |
| 544 Bind(&if_notequal); |
| 545 Goto(if_false); |
| 546 } |
| 547 |
529 Node* CodeStubAssembler::CallN(CallDescriptor* descriptor, Node* code_target, | 548 Node* CodeStubAssembler::CallN(CallDescriptor* descriptor, Node* code_target, |
530 Node** args) { | 549 Node** args) { |
531 CallPrologue(); | 550 CallPrologue(); |
532 Node* return_value = raw_assembler_->CallN(descriptor, code_target, args); | 551 Node* return_value = raw_assembler_->CallN(descriptor, code_target, args); |
533 CallEpilogue(); | 552 CallEpilogue(); |
534 return return_value; | 553 return return_value; |
535 } | 554 } |
536 | 555 |
537 | 556 |
538 Node* CodeStubAssembler::TailCallN(CallDescriptor* descriptor, | 557 Node* CodeStubAssembler::TailCallN(CallDescriptor* descriptor, |
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
927 } | 946 } |
928 } | 947 } |
929 } | 948 } |
930 | 949 |
931 bound_ = true; | 950 bound_ = true; |
932 } | 951 } |
933 | 952 |
934 } // namespace compiler | 953 } // namespace compiler |
935 } // namespace internal | 954 } // namespace internal |
936 } // namespace v8 | 955 } // namespace v8 |
OLD | NEW |