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

Side by Side Diff: src/compiler/machine-operator.cc

Issue 1124813005: WIP Atomics (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: fix AtomicsLoad type in typer.cc Created 5 years, 7 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/compiler/machine-operator.h ('k') | src/compiler/opcodes.h » ('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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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/machine-operator.h" 5 #include "src/compiler/machine-operator.h"
6 6
7 #include "src/base/lazy-instance.h" 7 #include "src/base/lazy-instance.h"
8 #include "src/compiler/opcodes.h" 8 #include "src/compiler/opcodes.h"
9 #include "src/compiler/operator.h" 9 #include "src/compiler/operator.h"
10 10
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 IrOpcode::kLoad, Operator::kNoThrow | Operator::kNoWrite, \ 193 IrOpcode::kLoad, Operator::kNoThrow | Operator::kNoWrite, \
194 "Load", 2, 1, 1, 1, 1, 0, k##Type) {} \ 194 "Load", 2, 1, 1, 1, 1, 0, k##Type) {} \
195 }; \ 195 }; \
196 struct CheckedLoad##Type##Operator final \ 196 struct CheckedLoad##Type##Operator final \
197 : public Operator1<CheckedLoadRepresentation> { \ 197 : public Operator1<CheckedLoadRepresentation> { \
198 CheckedLoad##Type##Operator() \ 198 CheckedLoad##Type##Operator() \
199 : Operator1<CheckedLoadRepresentation>( \ 199 : Operator1<CheckedLoadRepresentation>( \
200 IrOpcode::kCheckedLoad, Operator::kNoThrow | Operator::kNoWrite, \ 200 IrOpcode::kCheckedLoad, Operator::kNoThrow | Operator::kNoWrite, \
201 "CheckedLoad", 3, 1, 1, 1, 1, 0, k##Type) {} \ 201 "CheckedLoad", 3, 1, 1, 1, 1, 0, k##Type) {} \
202 }; \ 202 }; \
203 struct LoadAtomic##Type##Operator final \
204 : public Operator1<LoadRepresentation> { \
205 LoadAtomic##Type##Operator() \
206 : Operator1<LoadRepresentation>( \
207 IrOpcode::kLoadAtomic, Operator::kNoThrow | Operator::kNoWrite, \
208 "LoadAtomic", 2, 1, 1, 1, 1, 0, k##Type) {} \
209 }; \
203 Load##Type##Operator kLoad##Type; \ 210 Load##Type##Operator kLoad##Type; \
204 CheckedLoad##Type##Operator kCheckedLoad##Type; 211 CheckedLoad##Type##Operator kCheckedLoad##Type; \
212 LoadAtomic##Type##Operator kLoadAtomic##Type;
205 MACHINE_TYPE_LIST(LOAD) 213 MACHINE_TYPE_LIST(LOAD)
206 #undef LOAD 214 #undef LOAD
207 215
208 #define STORE(Type) \ 216 #define STORE(Type) \
209 struct Store##Type##Operator : public Operator1<StoreRepresentation> { \ 217 struct Store##Type##Operator : public Operator1<StoreRepresentation> { \
210 explicit Store##Type##Operator(WriteBarrierKind write_barrier_kind) \ 218 explicit Store##Type##Operator(WriteBarrierKind write_barrier_kind) \
211 : Operator1<StoreRepresentation>( \ 219 : Operator1<StoreRepresentation>( \
212 IrOpcode::kStore, Operator::kNoRead | Operator::kNoThrow, \ 220 IrOpcode::kStore, Operator::kNoRead | Operator::kNoThrow, \
213 "Store", 3, 1, 1, 0, 1, 0, \ 221 "Store", 3, 1, 1, 0, 1, 0, \
214 StoreRepresentation(k##Type, write_barrier_kind)) {} \ 222 StoreRepresentation(k##Type, write_barrier_kind)) {} \
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 default: 274 default:
267 break; 275 break;
268 } 276 }
269 // Uncached. 277 // Uncached.
270 return new (zone_) Operator1<LoadRepresentation>( // -- 278 return new (zone_) Operator1<LoadRepresentation>( // --
271 IrOpcode::kLoad, Operator::kNoThrow | Operator::kNoWrite, "Load", 2, 1, 1, 279 IrOpcode::kLoad, Operator::kNoThrow | Operator::kNoWrite, "Load", 2, 1, 1,
272 1, 1, 0, rep); 280 1, 1, 0, rep);
273 } 281 }
274 282
275 283
284 const Operator* MachineOperatorBuilder::LoadAtomic(LoadRepresentation rep) {
285 switch (rep) {
286 #define LOAD(Type) \
287 case k##Type: \
288 return &cache_.kLoadAtomic##Type;
289 MACHINE_TYPE_LIST(LOAD)
290 #undef LOAD
291 default:
292 break;
293 }
294 // Uncached.
295 return new (zone_) Operator1<LoadRepresentation>( // --
296 IrOpcode::kLoad, Operator::kNoThrow | Operator::kNoWrite, "LoadAtomic", 2,
297 1, 1, 1, 1, 0, rep);
298 }
299
300
276 const Operator* MachineOperatorBuilder::Store(StoreRepresentation rep) { 301 const Operator* MachineOperatorBuilder::Store(StoreRepresentation rep) {
277 switch (rep.machine_type()) { 302 switch (rep.machine_type()) {
278 #define STORE(Type) \ 303 #define STORE(Type) \
279 case k##Type: \ 304 case k##Type: \
280 switch (rep.write_barrier_kind()) { \ 305 switch (rep.write_barrier_kind()) { \
281 case kNoWriteBarrier: \ 306 case kNoWriteBarrier: \
282 return &cache_.k##Store##Type##NoWriteBarrier; \ 307 return &cache_.k##Store##Type##NoWriteBarrier; \
283 case kFullWriteBarrier: \ 308 case kFullWriteBarrier: \
284 return &cache_.k##Store##Type##FullWriteBarrier; \ 309 return &cache_.k##Store##Type##FullWriteBarrier; \
285 } \ 310 } \
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 } 353 }
329 // Uncached. 354 // Uncached.
330 return new (zone_) Operator1<CheckedStoreRepresentation>( 355 return new (zone_) Operator1<CheckedStoreRepresentation>(
331 IrOpcode::kCheckedStore, Operator::kNoRead | Operator::kNoThrow, 356 IrOpcode::kCheckedStore, Operator::kNoRead | Operator::kNoThrow,
332 "CheckedStore", 4, 1, 1, 0, 1, 0, rep); 357 "CheckedStore", 4, 1, 1, 0, 1, 0, rep);
333 } 358 }
334 359
335 } // namespace compiler 360 } // namespace compiler
336 } // namespace internal 361 } // namespace internal
337 } // namespace v8 362 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/machine-operator.h ('k') | src/compiler/opcodes.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698