Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(130)

Side by Side Diff: src/fast-accessor-assembler.cc

Issue 2237443002: Add ToSmi and Goto operations to FastAccessorAssembler. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix 32-bit SMI overflow in test Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/fast-accessor-assembler.h ('k') | test/cctest/test-api-fast-accessor-builder.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « src/fast-accessor-assembler.h ('k') | test/cctest/test-api-fast-accessor-builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698