| Index: src/arm64/instrument-arm64.cc
|
| diff --git a/src/arm64/instrument-arm64.cc b/src/arm64/instrument-arm64.cc
|
| index 7a8e2f4ee1dd4a02d66fe2b2fc48fbdfe274d79a..dad89fe6bffff03ffb695a53e0617c5cd4779e14 100644
|
| --- a/src/arm64/instrument-arm64.cc
|
| +++ b/src/arm64/instrument-arm64.cc
|
| @@ -429,6 +429,31 @@ void Instrument::VisitLoadStoreUnsignedOffset(Instruction* instr) {
|
| InstrumentLoadStore(instr);
|
| }
|
|
|
| +void Instrument::VisitLoadStoreAcquireRelease(Instruction* instr) {
|
| + Update();
|
| + static Counter* load_counter = GetCounter("Load Acquire");
|
| + static Counter* store_counter = GetCounter("Store Release");
|
| +
|
| + switch (instr->Mask(LoadStoreAcquireReleaseMask)) {
|
| + case LDAR_b: // Fall-through.
|
| + case LDAR_h: // Fall-through.
|
| + case LDAR_w: // Fall-through.
|
| + case LDAR_x: // Fall-through.
|
| + case LDAXR_b: // Fall-through.
|
| + case LDAXR_h: // Fall-through.
|
| + case LDAXR_w: // Fall-through.
|
| + case LDAXR_x: load_counter->Increment(); break;
|
| + case STLR_b: // Fall-through.
|
| + case STLR_h: // Fall-through.
|
| + case STLR_w: // Fall-through.
|
| + case STLR_x: // Fall-through.
|
| + case STLXR_b: // Fall-through.
|
| + case STLXR_h: // Fall-through.
|
| + case STLXR_w: // Fall-through.
|
| + case STLXR_x: store_counter->Increment(); break;
|
| + default: UNREACHABLE();
|
| + }
|
| +}
|
|
|
| void Instrument::VisitLogicalShifted(Instruction* instr) {
|
| Update();
|
|
|