Mercurial > hg > graal-compiler
view src/share/vm/includeDB_compiler1 @ 1941:79d04223b8a5
Added caching for resolved types and resolved fields.
This is crucial, because the local load elimination will lead to wrong results, if field equality (of two RiField objects with the same object and the same RiType) is not given. The caching makes sure that the default equals implementation is sufficient.
author | Thomas Wuerthinger <wuerthinger@ssw.jku.at> |
---|---|
date | Tue, 28 Dec 2010 18:33:26 +0100 |
parents | 2d26b0046e0d |
children |
line wrap: on
line source
// // Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. // // This code is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License version 2 only, as // published by the Free Software Foundation. // // This code is distributed in the hope that it will be useful, but WITHOUT // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License // version 2 for more details (a copy is included in the LICENSE file that // accompanied this code). // // You should have received a copy of the GNU General Public License version // 2 along with this work; if not, write to the Free Software Foundation, // Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. // // Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA // or visit www.oracle.com if you need additional information or have any // questions. // // NOTE: DO NOT CHANGE THIS COPYRIGHT TO NEW STYLE - IT WILL BREAK makeDeps! allocation.hpp c1_globals.hpp c1_CFGPrinter.cpp c1_CFGPrinter.hpp c1_CFGPrinter.cpp c1_IR.hpp c1_CFGPrinter.cpp c1_InstructionPrinter.hpp c1_CFGPrinter.cpp c1_LIR.hpp c1_CFGPrinter.cpp c1_LinearScan.hpp c1_CFGPrinter.cpp c1_ValueStack.hpp c1_CFGPrinter.hpp c1_Compilation.hpp c1_CFGPrinter.hpp c1_Instruction.hpp cardTableModRefBS.cpp c1_LIR.hpp cardTableModRefBS.cpp c1_LIRGenerator.hpp c1_Canonicalizer.cpp c1_Canonicalizer.hpp c1_Canonicalizer.cpp c1_InstructionPrinter.hpp c1_Canonicalizer.cpp ciArray.hpp c1_Canonicalizer.cpp sharedRuntime.hpp c1_Canonicalizer.hpp c1_Instruction.hpp c1_CodeStubs.hpp array.hpp c1_CodeStubs.hpp c1_FrameMap.hpp c1_CodeStubs.hpp c1_IR.hpp c1_CodeStubs.hpp c1_Instruction.hpp c1_CodeStubs.hpp c1_LIR.hpp c1_CodeStubs.hpp c1_Runtime1.hpp c1_CodeStubs_<arch>.cpp c1_CodeStubs.hpp c1_CodeStubs_<arch>.cpp c1_FrameMap.hpp c1_CodeStubs_<arch>.cpp c1_LIRAssembler.hpp c1_CodeStubs_<arch>.cpp c1_MacroAssembler.hpp c1_CodeStubs_<arch>.cpp c1_Runtime1.hpp c1_CodeStubs_<arch>.cpp g1SATBCardTableModRefBS.hpp c1_CodeStubs_<arch>.cpp nativeInst_<arch>.hpp c1_CodeStubs_<arch>.cpp sharedRuntime.hpp c1_CodeStubs_<arch>.cpp vmreg_<arch>.inline.hpp c1_Compilation.cpp c1_CFGPrinter.hpp c1_Compilation.cpp c1_Compilation.hpp c1_Compilation.cpp c1_IR.hpp c1_Compilation.cpp c1_LIRAssembler.hpp c1_Compilation.cpp c1_LinearScan.hpp c1_Compilation.cpp c1_MacroAssembler.hpp c1_Compilation.cpp c1_ValueMap.hpp c1_Compilation.cpp c1_ValueStack.hpp c1_Compilation.cpp debugInfoRec.hpp c1_Compilation.hpp ciEnv.hpp c1_Compilation.hpp exceptionHandlerTable.hpp c1_Compilation.hpp resourceArea.hpp c1_Compiler.cpp allocation.hpp c1_Compiler.cpp allocation.inline.hpp c1_Compiler.cpp arguments.hpp c1_Compiler.cpp c1_Compilation.hpp c1_Compiler.cpp c1_Compiler.hpp c1_Compiler.cpp c1_FrameMap.hpp c1_Compiler.cpp c1_GraphBuilder.hpp c1_Compiler.cpp c1_LinearScan.hpp c1_Compiler.cpp c1_MacroAssembler.hpp c1_Compiler.cpp c1_Runtime1.hpp c1_Compiler.cpp c1_ValueType.hpp c1_Compiler.cpp compileBroker.hpp c1_Compiler.cpp compilerOracle.hpp c1_Compiler.cpp interfaceSupport.hpp c1_Compiler.cpp linkResolver.hpp c1_Compiler.cpp nativeLookup.hpp c1_Compiler.cpp resourceArea.hpp c1_Compiler.cpp sharedRuntime.hpp c1_Compiler.hpp abstractCompiler.hpp c1_Defs.cpp c1_Defs.hpp c1_Defs.hpp globalDefinitions.hpp c1_Defs.hpp register_<arch>.hpp c1_Defs_<arch>.hpp generate_platform_dependent_include c1_FpuStackSim.hpp allocation.hpp c1_FpuStackSim.hpp c1_FrameMap.hpp c1_FpuStackSim_<arch>.cpp array.hpp c1_FpuStackSim_<arch>.cpp c1_FpuStackSim.hpp c1_FpuStackSim_<arch>.cpp c1_FrameMap.hpp c1_FpuStackSim_<arch>.cpp ostream.hpp c1_FpuStackSim_<arch>.hpp generate_platform_dependent_include c1_FrameMap.cpp c1_FrameMap.hpp c1_FrameMap.cpp c1_LIR.hpp c1_FrameMap.cpp sharedRuntime.hpp c1_FrameMap.cpp vmreg_<arch>.inline.hpp c1_FrameMap.hpp allocation.hpp c1_FrameMap.hpp assembler.hpp c1_FrameMap.hpp c1_Defs.hpp c1_FrameMap.hpp c1_LIR.hpp c1_FrameMap.hpp frame.hpp c1_FrameMap.hpp globalDefinitions.hpp c1_FrameMap.hpp synchronizer.hpp c1_FrameMap.hpp vmreg.hpp c1_FrameMap_<arch>.cpp c1_FrameMap.hpp c1_FrameMap_<arch>.cpp c1_LIR.hpp c1_FrameMap_<arch>.cpp sharedRuntime.hpp c1_FrameMap_<arch>.cpp vmreg_<arch>.inline.hpp c1_FrameMap_<arch>.hpp generate_platform_dependent_include c1_globals.cpp c1_globals.hpp c1_globals.hpp c1_globals_<arch>.hpp c1_globals.hpp c1_globals_<os_family>.hpp c1_globals.hpp globals.hpp c1_globals_<arch>.hpp globalDefinitions.hpp c1_globals_<arch>.hpp macros.hpp c1_globals_<os_family>.hpp globalDefinitions.hpp c1_globals_<os_family>.hpp macros.hpp c1_GraphBuilder.cpp bitMap.inline.hpp c1_GraphBuilder.cpp bytecode.hpp c1_GraphBuilder.cpp c1_CFGPrinter.hpp c1_GraphBuilder.cpp c1_Canonicalizer.hpp c1_GraphBuilder.cpp c1_Compilation.hpp c1_GraphBuilder.cpp c1_GraphBuilder.hpp c1_GraphBuilder.cpp c1_InstructionPrinter.hpp c1_GraphBuilder.cpp ciField.hpp c1_GraphBuilder.cpp ciKlass.hpp c1_GraphBuilder.cpp sharedRuntime.hpp c1_GraphBuilder.hpp c1_IR.hpp c1_GraphBuilder.hpp c1_Instruction.hpp c1_GraphBuilder.hpp c1_ValueMap.hpp c1_GraphBuilder.hpp c1_ValueStack.hpp c1_GraphBuilder.hpp ciMethodData.hpp c1_GraphBuilder.hpp ciStreams.hpp c1_IR.cpp bitMap.inline.hpp c1_IR.cpp c1_Compilation.hpp c1_IR.cpp c1_FrameMap.hpp c1_IR.cpp c1_GraphBuilder.hpp c1_IR.cpp c1_IR.hpp c1_IR.cpp c1_InstructionPrinter.hpp c1_IR.cpp c1_Optimizer.hpp c1_IR.hpp allocation.hpp c1_IR.hpp c1_Instruction.hpp c1_IR.hpp ciExceptionHandler.hpp c1_IR.hpp ciMethod.hpp c1_IR.hpp ciStreams.hpp c1_Instruction.cpp c1_IR.hpp c1_Instruction.cpp c1_Instruction.hpp c1_Instruction.cpp c1_InstructionPrinter.hpp c1_Instruction.cpp c1_ValueStack.hpp c1_Instruction.cpp ciObjArrayKlass.hpp c1_Instruction.cpp ciTypeArrayKlass.hpp c1_Instruction.hpp c1_Compilation.hpp c1_Instruction.hpp c1_LIR.hpp c1_Instruction.hpp c1_ValueType.hpp c1_Instruction.hpp ciField.hpp c1_InstructionPrinter.cpp c1_InstructionPrinter.hpp c1_InstructionPrinter.cpp c1_ValueStack.hpp c1_InstructionPrinter.cpp ciArray.hpp c1_InstructionPrinter.cpp ciInstance.hpp c1_InstructionPrinter.cpp ciObject.hpp c1_InstructionPrinter.hpp c1_IR.hpp c1_InstructionPrinter.hpp c1_Instruction.hpp c1_InstructionPrinter.hpp c1_Runtime1.hpp c1_LIR.cpp c1_InstructionPrinter.hpp c1_LIR.cpp c1_LIR.hpp c1_LIR.cpp c1_LIRAssembler.hpp c1_LIR.cpp ciInstance.hpp c1_LIR.cpp sharedRuntime.hpp c1_LIR.hpp c1_ValueType.hpp c1_LIRAssembler.cpp c1_Compilation.hpp c1_LIRAssembler.cpp c1_Instruction.hpp c1_LIRAssembler.cpp c1_InstructionPrinter.hpp c1_LIRAssembler.cpp c1_LIRAssembler.hpp c1_LIRAssembler.cpp c1_MacroAssembler.hpp c1_LIRAssembler.cpp c1_ValueStack.hpp c1_LIRAssembler.cpp ciInstance.hpp c1_LIRAssembler.cpp nativeInst_<arch>.hpp c1_LIRAssembler.cpp vmreg_<arch>.inline.hpp c1_LIRAssembler.hpp c1_CodeStubs.hpp c1_LIRAssembler.hpp ciMethodData.hpp c1_LIRAssembler.hpp methodDataOop.hpp c1_LIRAssembler.hpp top.hpp c1_LIRAssembler_<arch>.cpp barrierSet.hpp c1_LIRAssembler_<arch>.cpp c1_Compilation.hpp c1_LIRAssembler_<arch>.cpp c1_LIRAssembler.hpp c1_LIRAssembler_<arch>.cpp c1_MacroAssembler.hpp c1_LIRAssembler_<arch>.cpp c1_Runtime1.hpp c1_LIRAssembler_<arch>.cpp c1_ValueStack.hpp c1_LIRAssembler_<arch>.cpp cardTableModRefBS.hpp c1_LIRAssembler_<arch>.cpp ciArrayKlass.hpp c1_LIRAssembler_<arch>.cpp ciInstance.hpp c1_LIRAssembler_<arch>.cpp collectedHeap.hpp c1_LIRAssembler_<arch>.cpp nativeInst_<arch>.hpp c1_LIRAssembler_<arch>.cpp objArrayKlass.hpp c1_LIRAssembler_<arch>.cpp sharedRuntime.hpp c1_LIRAssembler_<arch>.hpp generate_platform_dependent_include c1_LIRGenerator.cpp bitMap.inline.hpp c1_LIRGenerator.cpp c1_Compilation.hpp c1_LIRGenerator.cpp c1_FrameMap.hpp c1_LIRGenerator.cpp c1_Instruction.hpp c1_LIRGenerator.cpp c1_LIRAssembler.hpp c1_LIRGenerator.cpp c1_LIRGenerator.hpp c1_LIRGenerator.cpp c1_ValueStack.hpp c1_LIRGenerator.cpp ciArrayKlass.hpp c1_LIRGenerator.cpp ciCPCache.hpp c1_LIRGenerator.cpp ciInstance.hpp c1_LIRGenerator.cpp heapRegion.hpp c1_LIRGenerator.cpp sharedRuntime.hpp c1_LIRGenerator.cpp stubRoutines.hpp c1_LIRGenerator.hpp c1_Instruction.hpp c1_LIRGenerator.hpp c1_LIR.hpp c1_LIRGenerator.hpp ciMethodData.hpp c1_LIRGenerator.hpp sizes.hpp c1_LIRGenerator_<arch>.cpp c1_Compilation.hpp c1_LIRGenerator_<arch>.cpp c1_FrameMap.hpp c1_LIRGenerator_<arch>.cpp c1_Instruction.hpp c1_LIRGenerator_<arch>.cpp c1_LIRAssembler.hpp c1_LIRGenerator_<arch>.cpp c1_LIRGenerator.hpp c1_LIRGenerator_<arch>.cpp c1_Runtime1.hpp c1_LIRGenerator_<arch>.cpp c1_ValueStack.hpp c1_LIRGenerator_<arch>.cpp ciArray.hpp c1_LIRGenerator_<arch>.cpp ciObjArrayKlass.hpp c1_LIRGenerator_<arch>.cpp ciTypeArrayKlass.hpp c1_LIRGenerator_<arch>.cpp sharedRuntime.hpp c1_LIRGenerator_<arch>.cpp vmreg_<arch>.inline.hpp c1_LIRGenerator_<arch>.cpp stubRoutines.hpp c1_LinearScan.cpp bitMap.inline.hpp c1_LinearScan.cpp c1_CFGPrinter.hpp c1_LinearScan.cpp c1_CodeStubs.hpp c1_LinearScan.cpp c1_Compilation.hpp c1_LinearScan.cpp c1_FrameMap.hpp c1_LinearScan.cpp c1_IR.hpp c1_LinearScan.cpp c1_LIRGenerator.hpp c1_LinearScan.cpp c1_LinearScan.hpp c1_LinearScan.cpp c1_ValueStack.hpp c1_LinearScan.cpp vmreg_<arch>.inline.hpp c1_LinearScan.hpp c1_FpuStackSim.hpp c1_LinearScan.hpp c1_FrameMap.hpp c1_LinearScan.hpp c1_IR.hpp c1_LinearScan.hpp c1_Instruction.hpp c1_LinearScan.hpp c1_LIR.hpp c1_LinearScan.hpp c1_LIRGenerator.hpp c1_LinearScan_<arch>.cpp bitMap.inline.hpp c1_LinearScan_<arch>.cpp c1_Instruction.hpp c1_LinearScan_<arch>.cpp c1_LinearScan.hpp c1_LinearScan_<arch>.hpp generate_platform_dependent_include c1_MacroAssembler.hpp assembler.hpp c1_MacroAssembler.hpp assembler_<arch>.inline.hpp c1_MacroAssembler_<arch>.cpp arrayOop.hpp c1_MacroAssembler_<arch>.cpp basicLock.hpp c1_MacroAssembler_<arch>.cpp biasedLocking.hpp c1_MacroAssembler_<arch>.cpp c1_MacroAssembler.hpp c1_MacroAssembler_<arch>.cpp c1_Runtime1.hpp c1_MacroAssembler_<arch>.cpp collectedHeap.hpp c1_MacroAssembler_<arch>.cpp interpreter.hpp c1_MacroAssembler_<arch>.cpp markOop.hpp c1_MacroAssembler_<arch>.cpp os.hpp c1_MacroAssembler_<arch>.cpp stubRoutines.hpp c1_MacroAssembler_<arch>.cpp systemDictionary.hpp c1_MacroAssembler_<arch>.hpp generate_platform_dependent_include c1_Optimizer.cpp bitMap.inline.hpp c1_Optimizer.cpp c1_Canonicalizer.hpp c1_Optimizer.cpp c1_Optimizer.hpp c1_Optimizer.cpp c1_ValueMap.hpp c1_Optimizer.cpp c1_ValueSet.hpp c1_Optimizer.cpp c1_ValueStack.hpp c1_Optimizer.hpp allocation.hpp c1_Optimizer.hpp c1_IR.hpp c1_Optimizer.hpp c1_Instruction.hpp c1_Runtime1.cpp allocation.inline.hpp c1_Runtime1.cpp barrierSet.hpp c1_Runtime1.cpp biasedLocking.hpp c1_Runtime1.cpp bytecode.hpp c1_Runtime1.cpp c1_CodeStubs.hpp c1_Runtime1.cpp c1_Defs.hpp c1_Runtime1.cpp c1_FrameMap.hpp c1_Runtime1.cpp c1_LIRAssembler.hpp c1_Runtime1.cpp c1_MacroAssembler.hpp c1_Runtime1.cpp c1_Runtime1.hpp c1_Runtime1.cpp codeBlob.hpp c1_Runtime1.cpp codeBuffer.hpp c1_Runtime1.cpp collectedHeap.hpp c1_Runtime1.cpp compilationPolicy.hpp c1_Runtime1.cpp compiledIC.hpp c1_Runtime1.cpp copy.hpp c1_Runtime1.cpp disassembler.hpp c1_Runtime1.cpp events.hpp c1_Runtime1.cpp interfaceSupport.hpp c1_Runtime1.cpp interpreter.hpp c1_Runtime1.cpp javaCalls.hpp c1_Runtime1.cpp objArrayKlass.hpp c1_Runtime1.cpp oop.inline.hpp c1_Runtime1.cpp oopFactory.hpp c1_Runtime1.cpp pcDesc.hpp c1_Runtime1.cpp resourceArea.hpp c1_Runtime1.cpp scopeDesc.hpp c1_Runtime1.cpp sharedRuntime.hpp c1_Runtime1.cpp systemDictionary.hpp c1_Runtime1.cpp threadCritical.hpp c1_Runtime1.cpp vframe.hpp c1_Runtime1.cpp vframeArray.hpp c1_Runtime1.cpp vmSymbols.hpp c1_Runtime1.cpp vtableStubs.hpp c1_Runtime1.hpp allocation.hpp c1_Runtime1.hpp c1_FrameMap.hpp c1_Runtime1.hpp deoptimization.hpp c1_Runtime1.hpp interpreter.hpp c1_Runtime1.hpp stubs.hpp c1_Runtime1_<arch>.cpp c1_Defs.hpp c1_Runtime1_<arch>.cpp c1_MacroAssembler.hpp c1_Runtime1_<arch>.cpp c1_Runtime1.hpp c1_Runtime1_<arch>.cpp compiledICHolderOop.hpp c1_Runtime1_<arch>.cpp interpreter.hpp c1_Runtime1_<arch>.cpp jvmtiExport.hpp c1_Runtime1_<arch>.cpp nativeInst_<arch>.hpp c1_Runtime1_<arch>.cpp oop.inline.hpp c1_Runtime1_<arch>.cpp register_<arch>.hpp c1_Runtime1_<arch>.cpp sharedRuntime.hpp c1_Runtime1_<arch>.cpp signature.hpp c1_Runtime1_<arch>.cpp vframeArray.hpp c1_Runtime1_<arch>.cpp vmreg_<arch>.inline.hpp c1_ValueMap.cpp bitMap.inline.hpp c1_ValueMap.cpp c1_Canonicalizer.hpp c1_ValueMap.cpp c1_IR.hpp c1_ValueMap.cpp c1_ValueMap.hpp c1_ValueMap.hpp allocation.hpp c1_ValueMap.hpp c1_Instruction.hpp c1_ValueMap.hpp c1_ValueSet.hpp c1_ValueSet.cpp c1_ValueSet.hpp c1_ValueSet.hpp allocation.hpp c1_ValueSet.hpp bitMap.inline.hpp c1_ValueSet.hpp c1_Instruction.hpp c1_ValueStack.cpp c1_IR.hpp c1_ValueStack.cpp c1_InstructionPrinter.hpp c1_ValueStack.cpp c1_ValueStack.hpp c1_ValueStack.hpp c1_Instruction.hpp c1_ValueType.cpp c1_ValueType.hpp c1_ValueType.cpp ciArray.hpp c1_ValueType.cpp ciInstance.hpp c1_ValueType.cpp ciNullObject.hpp c1_ValueType.hpp c1_Compilation.hpp c1_ValueType.hpp ciConstant.hpp ciEnv.cpp c1_Runtime1.hpp codeBlob.cpp c1_Runtime1.hpp compileBroker.cpp c1_Compiler.hpp frame_<arch>.cpp c1_Runtime1.hpp frame_<arch>.cpp vframeArray.hpp globals.cpp c1_globals.hpp globals.hpp c1_globals_<arch>.hpp globals.hpp c1_globals_<os_family>.hpp instanceKlass.cpp c1_Compiler.hpp interpreter_<arch_model>.cpp c1_Runtime1.hpp java.cpp c1_Compiler.hpp java.cpp c1_Runtime1.hpp nativeInst_<arch>.cpp c1_Runtime1.hpp oopMap.cpp c1_Defs.hpp os_<os_family>.cpp c1_Runtime1.hpp os_<os_arch>.cpp c1_Runtime1.hpp safepoint.cpp c1_globals.hpp sharedRuntime.cpp c1_Runtime1.hpp sharedRuntime_<arch_model>.cpp c1_Runtime1.hpp thread.cpp c1_Compiler.hpp top.hpp c1_globals.hpp vmStructs.hpp c1_Runtime1.hpp compileBroker.cpp c1x_Compiler.hpp c1_Canonicalizer.cpp c1_ValueStack.hpp c1x_CodeInstaller.hpp c1x_Compiler.hpp c1x_CodeInstaller.cpp c1x_CodeInstaller.hpp c1x_CodeInstaller.cpp c1x_Compiler.hpp c1x_CodeInstaller.cpp c1x_TargetMethod.hpp c1x_CodeInstaller.cpp c1x_VmIds.hpp c1x_CodeInstaller.cpp c1_Runtime1.hpp c1x_CodeInstaller.cpp vmreg.hpp c1x_CodeInstaller.cpp vmreg_<arch>.inline.hpp c1x_Compiler.hpp abstractCompiler.hpp c1x_Compiler.cpp c1x_Compiler.hpp c1x_Compiler.cpp c1x_TargetMethod.hpp c1x_Compiler.cpp c1x_VMExits.hpp c1x_Compiler.cpp c1x_VMEntries.hpp c1x_Compiler.cpp c1x_VmIds.hpp c1x_TargetMethod.cpp c1x_TargetMethod.hpp c1x_VMEntries.cpp c1x_CodeInstaller.hpp c1x_VMEntries.cpp c1x_VMEntries.hpp c1x_VMEntries.cpp c1x_Compiler.hpp c1x_VMEntries.cpp c1x_TargetMethod.hpp c1x_VMEntries.cpp c1x_VMExits.hpp c1x_VMEntries.cpp c1x_VmIds.hpp c1x_VMEntries.cpp oopFactory.hpp c1x_VMEntries.cpp c1_Runtime1.hpp c1x_VMExits.cpp c1x_Compiler.hpp c1x_VMExits.cpp javaCalls.hpp c1x_VMExits.cpp c1x_VMExits.hpp c1x_VmIds.cpp c1x_VmIds.hpp c1_LIR.cpp c1_ValueStack.hpp