001    /*
002     *  This file is part of the Jikes RVM project (http://jikesrvm.org).
003     *
004     *  This file is licensed to You under the Eclipse Public License (EPL);
005     *  You may not use this file except in compliance with the License. You
006     *  may obtain a copy of the License at
007     *
008     *      http://www.opensource.org/licenses/eclipse-1.0.php
009     *
010     *  See the COPYRIGHT.txt file distributed with this work for information
011     *  regarding copyright ownership.
012     */
013    package org.jikesrvm.ia32;
014    
015    import org.jikesrvm.ArchitectureSpecific;
016    
017    /**
018     * Representation of machine code instructions and a map from bytecode
019     * index to offset within code array
020     */
021    public abstract class MachineCode {
022      /** Executable instructions */
023      private final ArchitectureSpecific.CodeArray instructions;
024    
025      /**
026       * Array indexed by bytecode index, value is offset into code array
027       * TODO: This should really be a final field, but is not due to the way
028       *       OSR is currently implemented.
029       */
030      private int[] bytecodeMap;
031    
032      public MachineCode(ArchitectureSpecific.CodeArray i, int[] bm) {
033        instructions = i;
034        bytecodeMap = bm;
035      }
036    
037      public final ArchitectureSpecific.CodeArray getInstructions() {
038        return instructions;
039      }
040    
041      public final int[] getBytecodeMap() {
042        return bytecodeMap;
043      }
044    
045      public void setBytecodeMap(int[] b2m) {
046        bytecodeMap = b2m;
047      }
048    }