| Index: src/compiler/simplified-lowering.cc
|
| diff --git a/src/compiler/simplified-lowering.cc b/src/compiler/simplified-lowering.cc
|
| index 050d6ce0873211d55f179b50b1f4c1e88ef39b67..b70e128fcef4616581b198e044d2a3b9ea77ba04 100644
|
| --- a/src/compiler/simplified-lowering.cc
|
| +++ b/src/compiler/simplified-lowering.cc
|
| @@ -855,6 +855,15 @@ class RepresentationSelector {
|
| if (lower()) lowering->DoLoadElement(node);
|
| break;
|
| }
|
| + case IrOpcode::kLoadElementAtomic: {
|
| + ElementAccess access = ElementAccessOf(node->op());
|
| + ProcessInput(node, 0, changer_->TypeForBasePointer(access)); // base
|
| + ProcessInput(node, 1, kMachInt32); // index
|
| + ProcessRemainingInputs(node, 2);
|
| + SetOutput(node, access.machine_type);
|
| + if (lower()) lowering->DoLoadElementAtomic(node);
|
| + break;
|
| + }
|
| case IrOpcode::kStoreElement: {
|
| ElementAccess access = ElementAccessOf(node->op());
|
| ProcessInput(node, 0, changer_->TypeForBasePointer(access)); // base
|
| @@ -1300,6 +1309,13 @@ void SimplifiedLowering::DoLoadElement(Node* node) {
|
| }
|
|
|
|
|
| +void SimplifiedLowering::DoLoadElementAtomic(Node* node) {
|
| + const ElementAccess& access = ElementAccessOf(node->op());
|
| + node->set_op(machine()->LoadAtomic(access.machine_type));
|
| + node->ReplaceInput(1, ComputeIndex(access, node->InputAt(1)));
|
| +}
|
| +
|
| +
|
| void SimplifiedLowering::DoStoreElement(Node* node) {
|
| const ElementAccess& access = ElementAccessOf(node->op());
|
| Type* type = NodeProperties::GetBounds(node->InputAt(2)).upper;
|
|
|