if (asm.fits(match, 16)) {
if (VM_Assembler.fits(match, 16)) {
  protected final void emit_lookupswitch(int defaultval, int npairs) {    if (options.EDGE_COUNTERS) {      // Load counter array for this method      asm.emitLAddrToc (T2, VM_Entrypoints.edgeCountersField.getOffset());      asm.emitLAddrOffset(T2, T2, getEdgeCounterOffset());    }    popInt(T0); // T0 is key    for (int i=0; i<npairs; i++) {      int match   = bcodes.getLookupSwitchValue(i);      if (asm.fits(match, 16)) {        asm.emitCMPI(T0, match);      } else {        asm.emitLVAL(T1, match);        asm.emitCMP(T0, T1);      }      int offset  = bcodes.getLookupSwitchOffset(i);      int bTarget = biStart + offset;      int mTarget = bytecodeMap[bTarget];      if (options.EDGE_COUNTERS) {        // Flip conditions so we can jump over the increment of the taken counter.        VM_ForwardReference fr = asm.emitForwardBC(NE);        // Increment counter & jump to target        incEdgeCounter(T2, S0, edgeCounterIdx++);        asm.emitB(mTarget, bTarget);        fr.resolve(asm);      } else {        if (bTarget - SHORT_FORWARD_LIMIT < biStart) {          asm.emitShortBC(EQ, mTarget, bTarget);        } else {          asm.emitBC(EQ, mTarget, bTarget);        }      }    }    bcodes.skipLookupSwitchPairs(npairs);    int bTarget = biStart + defaultval;    int mTarget = bytecodeMap[bTarget];    if (options.EDGE_COUNTERS) {      incEdgeCounter(T2, S0, edgeCounterIdx++);    }    asm.emitB(mTarget, bTarget);  }