/* * 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. */ package org.jikesrvm.compilers.opt.ir; import org.jikesrvm.compilers.common.CodeArray; import org.jikesrvm.compilers.opt.mir2mc.MachineCodeOffsets; import org.jikesrvm.compilers.opt.regalloc.LinearScanState; import org.jikesrvm.compilers.opt.regalloc.RegisterAllocatorState; import org.jikesrvm.osr.VariableMap; /** * Wrapper class around IR info that is valid on the MIR */ public final class MIRInfo { /** * The generated machinecodes produced by this compilation of 'method' */ public CodeArray machinecode; /** * Estimate produced by FinalMIRExpansion and used by * Assembler to create code array; only meaningful on PowerPC */ public int mcSizeEstimate; /** * The IRMap for the method (symbolic GCMapping info) */ public GCIRMap gcIRMap; public VariableMap osrVarMap; /** * The frame size of the current method */ public int frameSize; /** * The number of floating point stack slots allocated. * (Only used on IA32) */ public int fpStackHeight; /** * A basic block holding the call to Thread.threadSwitch for a * prologue. */ public BasicBlock prologueYieldpointBlock = null; /** * A basic block holding the call to Thread.threadSwitch for an * epilogue. */ public BasicBlock epilogueYieldpointBlock = null; /** * A basic block holding the call to Thread.threadSwitch for a * backedge. */ public BasicBlock backedgeYieldpointBlock = null; /** * A basic block holding the call to yieldpointFromOsrOpt for an * OSR invalidation. */ public BasicBlock osrYieldpointBlock = null; /** * Information needed for linear scan. */ public LinearScanState linearScanState = null; public RegisterAllocatorState regAllocState = null; public MachineCodeOffsets mcOffsets = null; public MIRInfo(IR ir) { ir.compiledMethod.setSaveVolatile(ir.method.getDeclaringClass().hasSaveVolatileAnnotation()); ir.compiledMethod.setOptLevel(ir.options.getOptLevel()); } }