if (lastAcquire != null && p.isLoad()) {
if (lastAcquire != null && p.isImplicitLoad()) {
  private void computeControlAndBarrierDependences(OPT_Instruction start,                                                    OPT_Instruction end) {    // (1) In a forward pass, we add the following dependences:    //    a) No load instruction may rise above an acquire    //    b) No instruction may rise above an UNINT_BEGIN (conservative),     //       a yieldpoint (we placed the yieldpoints where we wanted them),    //       or an IR_PROLOGUE.    //    c) No GC point may rise above an UNINT_END    OPT_DepGraphNode lastTotalBarrier = null;    OPT_DepGraphNode lastGCBarrier = null;    OPT_DepGraphNode lastAcquire = null;    for (OPT_DepGraphNode pnode = (OPT_DepGraphNode) firstNode();         pnode != null;          pnode = (OPT_DepGraphNode) pnode.getNext())  {      OPT_Instruction p = pnode.instruction();      if (lastTotalBarrier != null) {        lastTotalBarrier.insertOutEdge(pnode, CONTROL);      }       if (lastGCBarrier != null) {        lastGCBarrier.insertOutEdge(pnode, CONTROL);      }      if (lastAcquire != null && p.isLoad()) {        lastAcquire.insertOutEdge(pnode, CONTROL);      }      OPT_Operator pop = p.operator();      if (p.isYieldPoint() || pop == IR_PROLOGUE ||          pop == UNINT_BEGIN || pop == GET_TIME_BASE) {        lastTotalBarrier = pnode;      }      if (pop == UNINT_END) {        lastGCBarrier = pnode;      }      if (p.isAcquire() || p.isDynamicLinkingPoint()) {        lastAcquire = pnode;      }    }    // (2) In a backward pass we add the following dependences:    //    a) No store instruction may sink below a release.    //    b) No instruction may sink below an UNINT_END (conservative),    //       a branch/return, or a yieldpoint (again want to pin yieldpoints).    //    c) No GC point may sink below an UNINT_BEGIN    lastTotalBarrier = null;    lastGCBarrier = null;    OPT_DepGraphNode lastRelease = null;    for (OPT_DepGraphNode pnode = (OPT_DepGraphNode) lastNode();         pnode != null;          pnode = (OPT_DepGraphNode) pnode.getPrev())   {      OPT_Instruction p = pnode.instruction();      if (lastTotalBarrier != null) {        pnode.insertOutEdge(lastTotalBarrier, CONTROL);      }      if (lastGCBarrier != null) {        pnode.insertOutEdge(lastGCBarrier, CONTROL);      }      if (lastRelease != null  && p.isStore()) {        pnode.insertOutEdge(lastRelease, CONTROL);      }      OPT_Operator pop = p.operator();      if (p.isBranch() || p.isReturn() || p.isYieldPoint() ||          pop == UNINT_END || pop == GET_TIME_BASE){        lastTotalBarrier = pnode;      }      if (pop == UNINT_BEGIN) {        lastGCBarrier = pnode;      }      if (p.isRelease() || p.isDynamicLinkingPoint()) {        lastRelease = pnode;      }    }      }