/* * This file is part of the Jikes RVM project (http://jikesrvm.org). * * This file is licensed to You under the Eclipse Public License (EPL); * You may not use this file except in compliance with the License. You * may obtain a copy of the License at * * http://www.opensource.org/licenses/eclipse-1.0.php * * See the COPYRIGHT.txt file distributed with this work for information * regarding copyright ownership. */ /** * Provides classes that implement the transformation from bytecode to the * high-level intermediate representation (HIR). * <p> * {@link org.jikesrvm.compilers.opt.bc2ir.ConvertBCtoHIR} is the very first * compiler phase in the optimizing compiler. Its job is to call * {@link org.jikesrvm.compilers.opt.bc2ir.BC2IR} which generates the initial HIR. * BC2IR collaborates with {@link org.jikesrvm.compilers.opt.bc2ir.BBSet} * (for basic block management), {@link org.jikesrvm.compilers.opt.bc2ir.GenerationContext} * (for information about the generation process and the method * that is to be compiled) and {@link org.jikesrvm.compilers.opt.bc2ir.GenerateMagic} * (for non-machine specific magics) and one implementation of * GenerateMachineSpecificMagic. * BC2IR is also responsible for generating code to deal with on-stack-replacement. * <p> * Note that all inlining of application level methods in the optimizing compiler * happens in BC2IR. Inlining of runtime services (e.g. creation of new objects, * implementation of monitorexit and monitorenter, write barriers, ...) * happens during the transition from high-level IR to low-level IR. * <p> * Important classes from other packages that relate to the job of BC2IR are the * classes that form the IR and the classes that are related to inlining. * <p> * For debugging aids, see {@link org.jikesrvm.compilers.opt.bc2ir.IRGenOptions} * and the source code of BC2IR. * <p> * Please consult the User Guide and the "Recommended Reading" section on the * website for more information about the optimizing compiler and the intermediate * representations. * * @see org.jikesrvm.compilers.opt.ir.IR * @see org.jikesrvm.compilers.opt.inlining */ package org.jikesrvm.compilers.opt.bc2ir;