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/fast-accessor-assembler.h" | 5 #include "src/fast-accessor-assembler.h" |
6 | 6 |
7 #include "src/base/logging.h" | 7 #include "src/base/logging.h" |
8 #include "src/code-stub-assembler.h" | 8 #include "src/code-stub-assembler.h" |
9 #include "src/code-stubs.h" // For CallApiCallbackStub. | 9 #include "src/code-stubs.h" // For CallApiCallbackStub. |
10 #include "src/handles-inl.h" | 10 #include "src/handles-inl.h" |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 | 101 |
102 FastAccessorAssembler::ValueId FastAccessorAssembler::LoadObject(ValueId value, | 102 FastAccessorAssembler::ValueId FastAccessorAssembler::LoadObject(ValueId value, |
103 int offset) { | 103 int offset) { |
104 CHECK_EQ(kBuilding, state_); | 104 CHECK_EQ(kBuilding, state_); |
105 return FromRaw(assembler_->LoadBufferObject( | 105 return FromRaw(assembler_->LoadBufferObject( |
106 assembler_->LoadBufferObject(FromId(value), offset, | 106 assembler_->LoadBufferObject(FromId(value), offset, |
107 MachineType::Pointer()), | 107 MachineType::Pointer()), |
108 0, MachineType::AnyTagged())); | 108 0, MachineType::AnyTagged())); |
109 } | 109 } |
110 | 110 |
| 111 FastAccessorAssembler::ValueId FastAccessorAssembler::ToSmi(ValueId value) { |
| 112 CHECK_EQ(kBuilding, state_); |
| 113 return FromRaw(assembler_->SmiTag(FromId(value))); |
| 114 } |
| 115 |
111 void FastAccessorAssembler::ReturnValue(ValueId value) { | 116 void FastAccessorAssembler::ReturnValue(ValueId value) { |
112 CHECK_EQ(kBuilding, state_); | 117 CHECK_EQ(kBuilding, state_); |
113 assembler_->Return(FromId(value)); | 118 assembler_->Return(FromId(value)); |
114 } | 119 } |
115 | 120 |
116 void FastAccessorAssembler::CheckFlagSetOrReturnNull(ValueId value, int mask) { | 121 void FastAccessorAssembler::CheckFlagSetOrReturnNull(ValueId value, int mask) { |
117 CHECK_EQ(kBuilding, state_); | 122 CHECK_EQ(kBuilding, state_); |
118 CodeStubAssembler::Label pass(assembler_.get()); | 123 CodeStubAssembler::Label pass(assembler_.get()); |
119 CodeStubAssembler::Label fail(assembler_.get()); | 124 CodeStubAssembler::Label fail(assembler_.get()); |
120 assembler_->Branch( | 125 assembler_->Branch( |
(...skipping 21 matching lines...) Expand all Loading... |
142 FastAccessorAssembler::LabelId FastAccessorAssembler::MakeLabel() { | 147 FastAccessorAssembler::LabelId FastAccessorAssembler::MakeLabel() { |
143 CHECK_EQ(kBuilding, state_); | 148 CHECK_EQ(kBuilding, state_); |
144 return FromRaw(new CodeStubAssembler::Label(assembler_.get())); | 149 return FromRaw(new CodeStubAssembler::Label(assembler_.get())); |
145 } | 150 } |
146 | 151 |
147 void FastAccessorAssembler::SetLabel(LabelId label_id) { | 152 void FastAccessorAssembler::SetLabel(LabelId label_id) { |
148 CHECK_EQ(kBuilding, state_); | 153 CHECK_EQ(kBuilding, state_); |
149 assembler_->Bind(FromId(label_id)); | 154 assembler_->Bind(FromId(label_id)); |
150 } | 155 } |
151 | 156 |
| 157 void FastAccessorAssembler::Goto(LabelId label_id) { |
| 158 CHECK_EQ(kBuilding, state_); |
| 159 assembler_->Goto(FromId(label_id)); |
| 160 } |
| 161 |
152 void FastAccessorAssembler::CheckNotZeroOrJump(ValueId value_id, | 162 void FastAccessorAssembler::CheckNotZeroOrJump(ValueId value_id, |
153 LabelId label_id) { | 163 LabelId label_id) { |
154 CHECK_EQ(kBuilding, state_); | 164 CHECK_EQ(kBuilding, state_); |
155 CodeStubAssembler::Label pass(assembler_.get()); | 165 CodeStubAssembler::Label pass(assembler_.get()); |
156 assembler_->Branch( | 166 assembler_->Branch( |
157 assembler_->WordEqual(FromId(value_id), assembler_->IntPtrConstant(0)), | 167 assembler_->WordEqual(FromId(value_id), assembler_->IntPtrConstant(0)), |
158 FromId(label_id), &pass); | 168 FromId(label_id), &pass); |
159 assembler_->Bind(&pass); | 169 assembler_->Bind(&pass); |
160 } | 170 } |
161 | 171 |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 void FastAccessorAssembler::Clear() { | 274 void FastAccessorAssembler::Clear() { |
265 for (auto label : labels_) { | 275 for (auto label : labels_) { |
266 delete label; | 276 delete label; |
267 } | 277 } |
268 nodes_.clear(); | 278 nodes_.clear(); |
269 labels_.clear(); | 279 labels_.clear(); |
270 } | 280 } |
271 | 281 |
272 } // namespace internal | 282 } // namespace internal |
273 } // namespace v8 | 283 } // namespace v8 |
OLD | NEW |