int[] bytecodeMap, int numInstructions) { this.method = method; if (saveBytecodeMap) _bytecodeMap = bytecodeMap;   referenceMaps.translateByte2Machine(bytecodeMap); this.referenceMaps = referenceMaps;   VM_ExceptionHandlerMap emap = method.getExceptionHandlerMap(); if (emap != null) { int[] startPCs = emap.startPCs; int[] endPCs = emap.endPCs; int[] handlerPCs = emap.handlerPCs; tryStartInstructionOffsets = new int[startPCs.length]; tryEndInstructionOffsets = new int[endPCs.length]; catchInstructionOffsets = new int[handlerPCs.length]; for (int i = 0, n = startPCs.length; i < n; ++i) { tryStartInstructionOffsets[i] = (bytecodeMap[startPCs[i]] << VM.LG_INSTRUCTION_WIDTH); tryEndInstructionOffsets[i] = (bytecodeMap[endPCs[i]] << VM.LG_INSTRUCTION_WIDTH); catchInstructionOffsets[i] = (bytecodeMap[handlerPCs[i]] << VM.LG_INSTRUCTION_WIDTH); } exceptionTypes = emap.exceptionTypes; }   VM_LineNumberMap lmap = method.getLineNumberMap(); if (lmap != null) { int[] startPCs = lmap.startPCs; lineInstructionOffsets = new int[startPCs.length]; for (int i = 0, n = startPCs.length; i < n; ++i) lineInstructionOffsets[i] = (bytecodeMap[startPCs[i]] << VM.LG_INSTRUCTION_WIDTH); lineNumbers = lmap.lineNumbers; }   VM_LocalVariable vmap[] = method.getLocalVariables(); if (vmap != null) { localVariables = vmap; localStartInstructionOffsets = new int[vmap.length]; localEndInstructionOffsets = new int[vmap.length]; for (int i = 0, n = vmap.length; i < n; ++i) { VM_LocalVariable v = vmap[i]; localStartInstructionOffsets[i] = (bytecodeMap[v.startPC] << VM.LG_INSTRUCTION_WIDTH); localEndInstructionOffsets[i] = v.endPC < bytecodeMap.length ? (bytecodeMap[v.endPC] << VM.LG_INSTRUCTION_WIDTH) : (numInstructions << VM.LG_INSTRUCTION_WIDTH); } }
int[] bytecodeMap, int numInstructions, int lockOffset) { this(method, referenceMaps, bytecodeMap, numInstructions); this.lockAcquisitionOffset = lockOffset;
  VM_BaselineCompilerInfo (VM_Method method, VM_ReferenceMaps referenceMaps, 			   int[] bytecodeMap, int numInstructions) {    this.method = method;    if (saveBytecodeMap)      _bytecodeMap = bytecodeMap;    // create stack-slot reference map    //    referenceMaps.translateByte2Machine(bytecodeMap);    this.referenceMaps = referenceMaps;    // create exception tables    //    VM_ExceptionHandlerMap emap = method.getExceptionHandlerMap();    if (emap != null) {      int[] startPCs = emap.startPCs;      int[] endPCs = emap.endPCs;      int[] handlerPCs = emap.handlerPCs;      tryStartInstructionOffsets = new int[startPCs.length];      tryEndInstructionOffsets = new int[endPCs.length];      catchInstructionOffsets = new int[handlerPCs.length];      for (int i = 0, n = startPCs.length; i < n; ++i) {        tryStartInstructionOffsets[i] = (bytecodeMap[startPCs[i]] << VM.LG_INSTRUCTION_WIDTH);        tryEndInstructionOffsets[i] = (bytecodeMap[endPCs[i]] << VM.LG_INSTRUCTION_WIDTH);        catchInstructionOffsets[i] = (bytecodeMap[handlerPCs[i]] << VM.LG_INSTRUCTION_WIDTH);      }      exceptionTypes = emap.exceptionTypes;    }    // create line tables    //    VM_LineNumberMap lmap = method.getLineNumberMap();    if (lmap != null) {      int[] startPCs = lmap.startPCs;      lineInstructionOffsets = new int[startPCs.length];      for (int i = 0, n = startPCs.length; i < n; ++i)        lineInstructionOffsets[i] = (bytecodeMap[startPCs[i]] << VM.LG_INSTRUCTION_WIDTH);      lineNumbers = lmap.lineNumbers;    }    // create local variable tables    //    VM_LocalVariable vmap[] = method.getLocalVariables();    if (vmap != null) {      localVariables = vmap;      localStartInstructionOffsets = new int[vmap.length];      localEndInstructionOffsets = new int[vmap.length];      for (int i = 0, n = vmap.length; i < n; ++i) {        VM_LocalVariable v = vmap[i];        localStartInstructionOffsets[i] = (bytecodeMap[v.startPC] << VM.LG_INSTRUCTION_WIDTH);        localEndInstructionOffsets[i] = v.endPC < bytecodeMap.length ?            (bytecodeMap[v.endPC] << VM.LG_INSTRUCTION_WIDTH) 	  : (numInstructions << VM.LG_INSTRUCTION_WIDTH);      }    }  }