|
From: <ans...@us...> - 2006-12-14 19:47:31
|
Revision: 2929
http://jnode.svn.sourceforge.net/jnode/?rev=2929&view=rev
Author: ansari82
Date: 2006-12-14 11:47:24 -0800 (Thu, 14 Dec 2006)
Log Message:
-----------
Summary
-------
This wide-ranging commit incorporates the JikesRVM runtime optimising compiler classes (com.ibm.JikesRVM.opt.*) into the JNode-Core source tree. Adapter/stub classes have been created to allow the optimising compiler to interface with JNode's runtime. These form the remaining com.ibm.JikesRVM.* packages (i.e. the non-opt packages).
Changes to JNode
----------------
1. Several classes and methods have had their visibility changed to public, or final attribute removed, or some basic methods added, so they can be accessed from com.ibm.JikesRVM.* adapter classes. Effort has been made to keep these changes to a minimum.
2. The L1A compiler has been modified to save and restore EBX and ESI at the start and end of a method, respectively. This is needed as the optimising compiler needs these to be non-volatile
3. Some methods have been added to org.vmmagic.unboxed.* magic classes.
4. Usage of magic classes has been modified so that they are not instantiated or compared to null. Although this has no effect on L1A, the optimising compiler recognises magic classes and does not allow them to be set to null, as they are not realy objects. The errors the opt-compiler throws are not helpful in this instance.
5. Added JNode-Core: core/src/test/org.jnode.test.jikesTests. This contains some basic tests for the opt-compiler.
6. Added appropriate descriptors to include opt-compiler into the system jar.
Notes
-----
1. The aim of this project has been to perform the minimum modification to both the opt compiler sources and the JNode sources. However, changes have occurred in both, and the changes in the JNode sources are outlined above (see commit transcript for detailed info). The changes to JNode have been tested and not found to break the existing build.or running environment.
2. Magic class variables should NOT be instaniated, set, or compared to null. This is illegal because they are not really objects. See the class descriptions for various methods to substitute null, e.g. Address myAddr = Address.Zero() instead of Address myAddr = null, or myAddr.isZero() instead of myAddr == null. Although comparison of magic variables does work, you should still do, e.g., myAddr.EQ(otherAddr), instead of myAddr == otherAddr.
Bugs
----
1. The build system has become unstable, and usually requires several runs of clean/cd-x86-lite before a successful build. The error is almost always a RuntimeException on VmSharedStatics during the 'java-image' ant task. This needs to be resolved urgently as it greatly impedes testing of bug fixes.
2. Opt-compiled code with yieldpoints does not work. Yieldpoints are critical, and need fixing
3. Opt-compiler class-init-test and object-init-test needs more scrutiny.
Short-term To Do's
------------------
1. Fix opt compiler to state where it boots image: the amount of bytecode combinations tested by successfully booting an image is close enough to saying the port is complete
Long-term To Do's
-----------------
1. Implement an adaptive system that automatically opt-compiles hot methods at runtime.
2. Move JNode sources changes into trunk, move opt compiler changes into JikesRVM trunk. For those that we can't do, move into adapter classes to reduce the effort in integrating new versions of JNode and the optimising compiler.
Modified Paths:
--------------
branches/jikesRVM/all/conf/system-plugin-list.xml
branches/jikesRVM/build.sh
branches/jikesRVM/builder/src/builder/org/jnode/build/x86/BootImageBuilder.java
branches/jikesRVM/core/src/core/org/jnode/assembler/x86/X86TextAssembler.java
branches/jikesRVM/core/src/core/org/jnode/vm/classmgr/VmCompiledCode.java
branches/jikesRVM/core/src/core/org/jnode/vm/classmgr/VmMember.java
branches/jikesRVM/core/src/core/org/jnode/vm/classmgr/VmStatics.java
branches/jikesRVM/core/src/core/org/jnode/vm/classmgr/VmType.java
branches/jikesRVM/core/src/core/org/jnode/vm/compiler/CompiledMethod.java
branches/jikesRVM/core/src/core/org/jnode/vm/compiler/NativeCodeCompiler.java
branches/jikesRVM/core/src/core/org/jnode/vm/memmgr/def/VmDefaultHeap.java
branches/jikesRVM/core/src/core/org/jnode/vm/scheduler/MonitorManager.java
branches/jikesRVM/core/src/core/org/jnode/vm/x86/VmX86Architecture.java
branches/jikesRVM/core/src/core/org/jnode/vm/x86/compiler/X86CompilerConstants.java
branches/jikesRVM/core/src/core/org/jnode/vm/x86/compiler/l1a/X86StackFrame.java
branches/jikesRVM/core/src/test/org/jnode/test/core/CompilerTest.java
branches/jikesRVM/core/src/vmmagic/org/vmmagic/unboxed/Offset.java
branches/jikesRVM/core/src/vmmagic/org/vmmagic/unboxed/WordArray.java
Added Paths:
-----------
branches/jikesRVM/core/descriptors/com.ibm.JikesRVM.xml
branches/jikesRVM/core/src/core/com/
branches/jikesRVM/core/src/core/com/ibm/
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/OSR/
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/OSR/OSR_AdjustBCIndexes.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/OSR/OSR_Constants.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/OSR/OSR_EncodedOSRMap.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/OSR/OSR_LocalRegPair.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/OSR/OSR_MethodVariables.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/OSR/OSR_ObjectHolder.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/OSR/OSR_VariableMap.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/OSR/OSR_VariableMapElement.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/PrintLN.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Assembler.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_AssemblerConstants.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_BootRecord.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_BranchProfile.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_BranchProfiles.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Callbacks.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_CodeArray.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_CommandLineArgs.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_CompiledMethod.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_CompiledMethods.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Compiler.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_ConditionalBranchProfile.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Constants.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_DynamicLink.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_EdgeCounts.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Entrypoints.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_ExceptionDeliverer.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_ExceptionTable.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_ForwardReference.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_HeapLayoutConstants.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Helper.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Lister.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Lock.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_MachineCode.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Magic.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_MagicNames.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Math.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Memory.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_ObjectModel.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Options.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_OutOfLineMachineCode.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Processor.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_RegisterConstants.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Registers.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Runtime.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_SaveVolatile.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Scheduler.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_SizeConstants.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_StackBrowser.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_StackframeLayoutConstants.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Statics.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_SwitchBranchProfile.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_TIBLayoutConstants.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_ThinLock.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_ThinLockConstants.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Thread.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Time.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_TrapConstants.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/adaptive/
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/adaptive/VM_AOSDatabase.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/adaptive/VM_AOSOptions.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/adaptive/VM_AdaptiveInlining.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/adaptive/VM_CallSite.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/adaptive/VM_Controller.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/adaptive/VM_CounterBasedSampling.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/adaptive/VM_Instrumentation.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/adaptive/VM_MethodInvocationCounterData.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/adaptive/VM_PartialCallGraph.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/adaptive/VM_StringEventCounterData.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/adaptive/VM_WeightedCallTargets.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/adaptive/VM_YieldpointCounterData.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/ApplicationClassLoader.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_AbstractMethod.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Array.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Atom.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_BootstrapClassLoader.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_BytecodeConstants.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_BytecodeStream.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Class.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_ClassLoader.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_ClassLoaderConstants.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_DynamicTypeCheck.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_ExceptionHandlerMap.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Field.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_FieldReference.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_InterfaceInvocation.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_InterfaceMethodSignature.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Member.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_MemberReference.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Method.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_MethodReference.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_NativeMethod.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_NormalMethod.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Primitive.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_TableBasedDynamicLinker.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Type.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_TypeDescriptorParsing.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_TypeReference.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_TypeReferenceVector.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_UTF8Convert.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/memoryManagers/
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/memoryManagers/mmInterface/
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/memoryManagers/mmInterface/MM_Interface.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/memoryManagers/mmInterface/VM_GCMapIterator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_AdjustBranchProbabilities.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_AggregateReplacer.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_AnnotatedLSTGraph.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_AnnotatedLSTNode.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Assembler.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_AssemblerBase.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_Common_Helpers.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_Debug.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_Definitions.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_Helpers.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_IntConstantTreeNode.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_MemOp_Helpers.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_STATE.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_TreeNode.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BitSet.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BitSetMapping.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BitVector.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Bits.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BlockCountSpillCost.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BrainDeadSpillCost.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BranchOptimizationDriver.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BranchOptimizations.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BranchSimplifier.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BreadthFirstEnumerator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BuildLST.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_CFGTransformations.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_CallSite.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_CallingConvention.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ClassLoaderProxy.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ClassLoadingDependencyManager.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ClassSummary.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Coalesce.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_CoalesceGraph.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_CoalesceMoves.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_CompilationPlan.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Compiler.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_CompilerPhase.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ComplexLIR2MIRExpansion.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_CompoundEnumerator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Constants.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ConvertALUOperators.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ConvertHIRtoLIR.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ConvertLIRtoMIR.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ConvertMIRtoMC.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ConvertToLowLevelIR.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DFS.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DFSenumerateByFinish.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DF_AbstractCell.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DF_Edge.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DF_Equation.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DF_Graph.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DF_LatticeCell.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DF_Operator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DF_Solution.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DF_System.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DefUse.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DefaultInlineOracle.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DefaultPriority.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DepGraph.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DepGraphConstants.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DepGraphEdge.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DepGraphNode.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DepGraphStats.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DepthFirstEnumerator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Diamond.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DominanceFrontier.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DominatorInfo.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DominatorTree.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DominatorTreeNode.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Dominators.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DominatorsPhase.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Dot.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DotConstants.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DotEdge.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DotGraph.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DotNode.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DotUtils.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DoublyLinkedList.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DoublyLinkedListElement.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DynamicTypeCheckExpansion.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_EdgelessGraph.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_EdgelessGraphNode.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_EmptyEnumerator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_EmptyIterator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_EmptySet.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_EnterSSA.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_EnumerationIterator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_EscapeTransformations.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_EstimateBlockFrequencies.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ExpandCallingConvention.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ExpandFPRStackConvention.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ExpandRuntimeServices.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ExpressionFolding.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_FI_EscapeSummary.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_FieldAnalysis.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_FieldDatabase.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_FilterEnumerator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_FilterIterator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_FilteredDFSenumerateByFinish.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_FinalMIRExpansion.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_GCP.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_GVCongruenceClass.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_GenericPhysicalRegisterTools.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_GenericRegisterPreferences.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_GenericRegisterRestrictions.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_GenericStackManager.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_GlobalCSE.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_GlobalValueNumber.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_GlobalValueNumberState.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Graph.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_GraphEdge.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_GraphEdgeFilter.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_GraphElement.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_GraphNode.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_GraphNodeEnumeration.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_GraphUtilities.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_HeapVariable.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_IRPrinter.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_IndexPropagation.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_IndexPropagationSystem.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_InlineDecision.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_InlineOracle.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_InlineTools.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_InsertInstructionCounters.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_InsertMethodInvocationCounter.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_InsertYieldpointCounters.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_InstrumentationPlan.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_InstrumentationSamplingFramework.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_InstrumentedEventCounterManager.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_InterfaceHierarchy.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_InvalidationDatabase.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_InvokeeThreadLocalContext.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_IteratorEnumerator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LICM.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LSTGraph.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LSTNode.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LTDominatorInfo.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LTDominators.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LeaveSSA.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LinearScan.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LinkedList.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LinkedListElement.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LinkedListEnumerator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LinkedListObjectElement.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LinkedListObjectEnumerator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LinkedListSet.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ListPriority.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LiveAnalysis.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LiveInterval.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LiveIntervalElement.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LiveIntervalEnumeration.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LiveRangeSplitting.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LiveSet.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LiveSetElement.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LiveSetEnumerator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LoadElimination.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LocalCSE.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LocalCastOptimization.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LocalConstantProp.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LocalCopyProp.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LoopAnalysis.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LoopUnrolling.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LoopVersioning.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_LowerInstrumentation.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_MIRBranchOptimizations.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_MIROptimizationPlanner.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_MIRSplitRanges.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_MagicNotImplementedException.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_MethodSummary.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_MinimalBURS.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_MutateSplits.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_NormalBURS.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_NormalizeConstants.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_NullCheckCombining.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ObjectReplacer.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_OperationNotImplementedException.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_OperatorClass.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_OptimizationPlanAtomicElement.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_OptimizationPlanCompositeElement.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_OptimizationPlanElement.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_OptimizationPlanner.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_OptimizingCompilerException.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Options.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Pair.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_PhysicalRegisterConstants.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_PhysicalRegisterTools.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_PiNodes.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_PrePassScheduler.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Priority.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_PrologueEpilogueCreator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Queue.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_RedundantBranchElimination.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_RegisterAllocator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_RegisterAllocatorState.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_RegisterPreferences.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_RegisterRestrictions.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ReorderingPhase.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ResourceMap.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ResourceReservation.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ReverseDFS.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ReverseDFSenumerateByFinish.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ReverseEnumerator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ReverseFilteredDFSenumerateByFinish.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SCC.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SCC_Engine.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SCC_Enumeration.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SCC_Graph.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SCC_Vertex.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SSA.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SSADictionary.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SSAOptions.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SSATuneUp.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Scheduler.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SchedulingInfo.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ScratchMap.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ShortArrayReplacer.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Simple.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SimpleEscape.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SimpleSpillCost.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Simplifier.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SingletonIterator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SingletonSet.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SmallStack.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Solvable.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SortedGraphIterator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SortedGraphNode.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SpaceEffGraph.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SpaceEffGraphEdge.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SpaceEffGraphEdgeList.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SpaceEffGraphEdgeListHeader.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SpaceEffGraphNode.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SpaceEffGraphNodeList.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SpaceEffGraphNodeListHeader.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SpecializationContext.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SpecializationDatabase.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SpecializedMethod.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SpecializedMethodPool.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SpillCostEstimator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SplitBasicBlock.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Stack.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_StackManager.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_StaticFieldReader.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_StaticSplitting.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SummaryDatabase.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_TailRecursionElimination.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_TopSort.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_TopSortInterface.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Tree.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_TreeBottomUpEnumerator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_TreeNode.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_TreeNodeChildrenEnumerator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_TreeTopDownEnumerator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_UnsyncReplacer.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_VCG.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_VCGConstants.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_VCGEdge.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_VCGGraph.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_VCGNode.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ValueGraph.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ValueGraphEdge.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ValueGraphParamLabel.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ValueGraphVertex.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ValueNumberPair.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_VisEdge.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_VisGraph.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_VisNode.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_YieldPoints.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OSR_OsrPointConstructor.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptCompiledMethod.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptEncodedCallSiteTree.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptExceptionDeliverer.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptExceptionTable.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptGCMap.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptGCMapIterator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptGCMapIteratorConstants.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptGenericGCMapIterator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptLinker.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptMachineCodeMap.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptSaveVolatile.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/ALoad.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/AStore.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/Athrow.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/Attempt.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/BBend.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/Binary.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/BinaryAcc.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/BooleanCmp.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/BoundsCheck.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/BranchProfileCarrier.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/CacheOp.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/Call.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/CondMove.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/Empty.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/GetField.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/GetStatic.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/Goto.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/GuardCarrier.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/GuardResultCarrier.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/GuardedBinary.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/GuardedSet.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/GuardedUnary.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/IfCmp.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/IfCmp2.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/InlineGuard.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/InstanceOf.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/InstrumentedCounter.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/JnodeMagic.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/Label.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/Load.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/LocationCarrier.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/LookupSwitch.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/LowTableSwitch.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_BinaryAcc.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_Branch.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_Call.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_CaseLabel.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_Compare.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_CompareExchange.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_CondBranch.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_CondBranch2.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_CondMove.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_ConvertDW2QW.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_Divide.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_DoubleShift.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_Empty.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_FSave.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_Lea.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_LowTableSwitch.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_Move.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_Multiply.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_Nullary.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_RDTSC.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_Return.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_Set.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_Test.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_Trap.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_TrapIf.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_Unary.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_UnaryAcc.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_UnaryNoRes.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MIR_XChng.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/MonitorOp.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/Move.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/Multianewarray.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/New.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/NewArray.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/NullCheck.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/Nullary.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_AbstractRegisterPool.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_AddressConstantOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_BC2IR.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_BURSManagedFPROperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_BasicBlock.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_BasicBlockEnumeration.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_BasicBlockOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_BranchOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_BranchProfileOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_CallSiteTree.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_CallSiteTreeNode.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_ClassConstantOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_CompilationState.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_ConditionOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_ConstantOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_ControlFlowGraph.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_ConvertBCtoHIR.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_DoubleConstantOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_EmptyBasicBlockEnumeration.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_EmptyInstructionEnumeration.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_ExceptionHandlerBasicBlock.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_ExceptionHandlerBasicBlockBag.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_FloatConstantOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_GCIRMap.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_GCIRMapElement.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_GCIRMapEnumerator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_GenerateJnodeMagic.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_GenerateMachineSpecificMagic.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_GenerateMagic.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_GenerationContext.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_GenericPhysicalRegisterSet.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_GenericRegisterPool.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_HIRInfo.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_HeapOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_IA32ConditionOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_IR.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_IREnumeration.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_IRGenOptions.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_IRSummary.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_IRTools.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_InlineSequence.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_InlinedOsrTypeInfoOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_Inliner.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_Instruction.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_InstructionEnumeration.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_InstructionFormat.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_IntConstantOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_LIRInfo.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_LocationOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_LongConstantOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_MIRInfo.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_MemoryOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_MethodOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_NullConstantOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_Operand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_OperandEnumeration.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_Operator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_OperatorNames.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_Operators.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_OsrTypeInfoOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_PhysicalDefUse.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_PhysicalRegisterSet.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_RegSpillListElement.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_RegSpillListEnumerator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_Register.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_RegisterOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_RegisterOperandEnumeration.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_RegisterPool.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_StackLocationOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_StringConstantOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_TrapCodeOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_TrueGuardOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_TypeOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_UnreachableOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_WeightedBranchTargets.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OsrBarrier.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OsrPoint.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/Phi.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/Prepare.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/Prologue.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/PutField.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/PutStatic.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/ResultCarrier.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/Return.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/Store.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/StoreCheck.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/TableSwitch.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/Trap.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/TrapIf.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/TypeCheck.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/Unary.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/UnaryAcc.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/ZeroCheck.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/util/
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/util/VM_HashMap.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/util/VM_HashSet.java
branches/jikesRVM/core/src/test/org/jnode/test/JikesTest.java
Modified: branches/jikesRVM/all/conf/system-plugin-list.xml
===================================================================
--- branches/jikesRVM/all/conf/system-plugin-list.xml 2006-12-14 14:56:03 UTC (rev 2928)
+++ branches/jikesRVM/all/conf/system-plugin-list.xml 2006-12-14 19:47:24 UTC (rev 2929)
@@ -16,5 +16,6 @@
<plugin id="org.jnode.util"/>
<plugin id="org.jnode.vm"/>
<plugin id="org.jnode.vm.core"/>
+ <plugin id="com.ibm.JikesRVM"/>
</plugin-list>
Modified: branches/jikesRVM/build.sh
===================================================================
--- branches/jikesRVM/build.sh 2006-12-14 14:56:03 UTC (rev 2928)
+++ branches/jikesRVM/build.sh 2006-12-14 19:47:24 UTC (rev 2929)
@@ -1,6 +1,6 @@
#!/bin/sh
dir=`dirname $0`
-java -Xmx512M -Xms128M -jar $dir/core/lib/ant-launcher.jar -lib $JAVA_HOME/lib -lib $dir/core/lib -f $dir/all/build.xml $*
+java -Xmx712M -Xms128M -jar $dir/core/lib/ant-launcher.jar -lib $JAVA_HOME/lib -lib $dir/core/lib -f $dir/all/build.xml $*
Modified: branches/jikesRVM/builder/src/builder/org/jnode/build/x86/BootImageBuilder.java
===================================================================
--- branches/jikesRVM/builder/src/builder/org/jnode/build/x86/BootImageBuilder.java 2006-12-14 14:56:03 UTC (rev 2928)
+++ branches/jikesRVM/builder/src/builder/org/jnode/build/x86/BootImageBuilder.java 2006-12-14 19:47:24 UTC (rev 2929)
@@ -73,6 +73,14 @@
import org.jnode.vm.x86.compiler.X86CompilerConstants;
import org.jnode.vm.x86.compiler.X86JumpTable;
+import com.ibm.JikesRVM.VM;
+import com.ibm.JikesRVM.VM_Processor;
+import com.ibm.JikesRVM.VM_Thread;
+import com.ibm.JikesRVM.classloader.VM_BootstrapClassLoader;
+import com.ibm.JikesRVM.classloader.VM_Method;
+import com.ibm.JikesRVM.classloader.VM_Type;
+import com.ibm.JikesRVM.classloader.VM_TypeReference;
+
/**
* @author epr
*/
@@ -279,6 +287,13 @@
loadClass(VmType.class);
loadClass(VmSystem.class);
loadClass(VmSystemObject.class);
+ loadClass(VM.class);
+ loadClass(VM_Method.class);
+ loadClass(VM_Processor.class);
+ loadClass(VM_BootstrapClassLoader.class);
+ loadClass(VM_Thread.class);
+ loadClass(VM_Type.class);
+ loadClass(VM_TypeReference.class);
final X86BinaryAssembler.ObjectInfo initCodeObject = os
.startObject(vmCodeClass);
Added: branches/jikesRVM/core/descriptors/com.ibm.JikesRVM.xml
===================================================================
--- branches/jikesRVM/core/descriptors/com.ibm.JikesRVM.xml (rev 0)
+++ branches/jikesRVM/core/descriptors/com.ibm.JikesRVM.xml 2006-12-14 19:47:24 UTC (rev 2929)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plugin SYSTEM "jnode.dtd">
+
+<plugin id="com.ibm.JikesRVM"
+ name="JikesRVM OptCompiler classes"
+ version="@VERSION@"
+ system="true"
+ license-name="cpl"
+ provider-name="IBM">
+
+ <requires>
+ </requires>
+
+ <runtime>
+ <library name="jnode-core.jar">
+ <export name="com.ibm.JikesRVM.*"/>
+ <export name="com.ibm.JikesRVM.adaptive.*"/>
+ <export name="com.ibm.JikesRVM.classloader.*"/>
+ <export name="com.ibm.JikesRVM.opt.*"/>
+ <export name="com.ibm.JikesRVM.opt.ir.*"/>
+ <export name="com.ibm.JikesRVM.OSR.*"/>
+ <export name="com.ibm.JikesRVM.memoryManagers.mmInterface.*"/>
+ <export name="com.ibm.JikesRVM.util.*"/>
+ </library>
+ </runtime>
+
+</plugin>
Added: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java (rev 0)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java 2006-12-14 19:47:24 UTC (rev 2929)
@@ -0,0 +1,409 @@
+package com.ibm.JikesRVM;
+
+import org.jnode.assembler.Label;
+import org.jnode.assembler.NativeStream;
+import org.jnode.assembler.ObjectResolver;
+import org.jnode.assembler.UnresolvedObjectRefException;
+import org.jnode.assembler.x86.X86Assembler;
+import org.jnode.assembler.x86.X86BinaryAssembler;
+import org.jnode.vm.Vm;
+import org.jnode.vm.VmAddress;
+import org.jnode.vm.VmMagic;
+import org.jnode.vm.classmgr.VmAddressMap;
+import org.jnode.vm.classmgr.VmByteCode;
+import org.jnode.vm.classmgr.VmCompiledExceptionHandler;
+import org.jnode.vm.classmgr.VmConstClass;
+import org.jnode.vm.classmgr.VmMethod;
+import org.jnode.vm.compiler.CompileError;
+import org.jnode.vm.compiler.CompiledExceptionHandler;
+import org.jnode.vm.compiler.CompiledMethod;
+import org.jnode.vm.compiler.CompilerBytecodeVisitor;
+import org.jnode.vm.compiler.GCMapIterator;
+import org.jnode.vm.scheduler.VmProcessor;
+import org.jnode.vm.x86.X86CpuID;
+import org.jnode.vm.x86.compiler.AbstractX86Compiler;
+import org.vmmagic.unboxed.Address;
+
+import com.ibm.JikesRVM.classloader.VM_Method;
+import com.ibm.JikesRVM.classloader.VM_NormalMethod;
+import com.ibm.JikesRVM.classloader.VM_Type;
+import com.ibm.JikesRVM.opt.OPT_CompilationPlan;
+import com.ibm.JikesRVM.opt.OPT_Compiler;
+import com.ibm.JikesRVM.opt.OPT_OptimizationPlanElement;
+import com.ibm.JikesRVM.opt.OPT_OptimizationPlanner;
+import com.ibm.JikesRVM.opt.OPT_OptimizingCompilerException;
+import com.ibm.JikesRVM.opt.OPT_Options;
+import com.ibm.JikesRVM.opt.VM_OptCompiledMethod;
+
+/**
+ * This is the main interface for JNode to use the optimizing compiler
+ * ported from JikesRVM
+ *
+ * @author Mohammad Ansari (ans...@us...)
+ */
+
+public class JikesRVMOptCompiler extends AbstractX86Compiler {
+
+ // is the opt compiler usable?
+ protected static boolean compilerEnabled = false;
+ protected static boolean compilationInProgress;
+
+ public static OPT_Options options;
+ public static OPT_OptimizationPlanElement[] optimizationPlan;
+ private boolean init = false;
+
+ public JikesRVMOptCompiler() {
+ options = new OPT_Options();
+ optimizationPlan = OPT_OptimizationPlanner
+ .createOptimizationPlan(options);
+ VM.getVM();
+ OPT_Compiler.init(options);
+ // VM_PreCompile.init();//Don't know what this is
+ compilerEnabled = true;
+
+ }
+
+ @Override
+ protected CompiledMethod doCompile(VmMethod method, NativeStream nos, int level, boolean isBootstrap) {
+
+ VM_Magic.jikesCompiled=true;
+ final CompiledMethod cm;
+ if (method.isNative()) {
+ Object label = new Label(method.getMangledName());
+ cm = new CompiledMethod(level);
+ cm.setCodeStart(nos.getObjectRef(label));
+ } else {
+ //Prevent recursive compilation, but in JNode this may lead to deadlock
+ while(compilationInProgress)
+ ;
+ compilationInProgress = true;
+ //Initialise Jikes' VM_Magic
+ VM_Magic.init(getEntryPoints());
+ //Create Jikes' version of the method to be compiled
+ VM_NormalMethod jikesMethod = (VM_NormalMethod)VM_Method.buildFromJnodeMethod(method);
+ //Create the optimization plan, the following is the default way to do it
+ OPT_CompilationPlan compPlan =
+ new OPT_CompilationPlan(jikesMethod, optimizationPlan, null, options);
+ //Compile with Jikes
+ VM_CompiledMethod jikescm = optCompileWithFallBackInternal(jikesMethod, compPlan);
+ //Build necessary result for JNode VM from Jikes compiled output
+ cm = ((VM_OptCompiledMethod)jikescm).buildJnodeCM((X86Assembler)nos, getEntryPoints());
+ compilationInProgress = false;
+ }
+ return cm;
+ }
+
+ private static VM_CompiledMethod optCompileWithFallBackInternal(
+ VM_NormalMethod method, OPT_CompilationPlan plan) {
+ if (method.hasNoOptCompilePragma())
+ return fallback(method);
+ try {
+ plan.method = method;
+ plan.options = options;
+ return OPT_Compiler.compile(plan);
+ }
+ catch (OPT_OptimizingCompilerException e) {
+ e.printStackTrace();
+ }
+ return fallback(method);
+
+ }
+
+ private static VM_CompiledMethod fallback(VM_NormalMethod method) {
+ // Some methods geniunely can't be optcompiled, so we need
+ // a way to fall back gracefully, this is a skeleton start.
+ return null;
+ }
+
+ public static boolean compilableMethod(VmMethod vmMethod) {
+ if (vmMethod.getDeclaringClass().getName().contains("org.jnode.test")
+// || vmMethod.getDeclaringClass().getName().contains("org.jnode.vm.classmgr")
+ ) {
+ return true;
+ }
+ else return false;
+ }
+
+ @Override
+ public NativeStream createNativeStream(ObjectResolver resolver) {
+ X86CpuID cpuid = (X86CpuID) VmProcessor.current().getCPUID();
+ X86BinaryAssembler os = new X86BinaryAssembler(cpuid, getMode(), 0);
+ os.setResolver(resolver);
+ return os;
+ }
+
+ @Override
+ protected CompilerBytecodeVisitor createBytecodeVisitor(VmMethod method,
+ CompiledMethod cm, NativeStream os, int level, boolean isBootstrap) {
+ return null;
+ }
+
+ @Override
+ public int getMagic() {
+ return JIKES_COMPILER_MAGIC;
+ }
+
+ @Override
+ public String getName() {
+ return "JikesOpt";
+ }
+
+ @Override
+ public GCMapIterator createGCMapIterator() {
+ // TODO
+ return null;
+ }
+
+
+ @Override
+ public String[] getCompilerPackages() {
+ return new String[] { "org.jnode.vm.x86.compiler",
+ "com.ibm.JikesRVM",
+ "com.ibm.JikesRVM.adaptive",
+ "com.ibm.JikesRVM.classloader",
+ "com.ibm.JikesRVM.memoryManagers.mmInterface",
+ "com.ibm.JikesRVM.opt",
+ "com.ibm.JikesRVM.opt.ir",
+ "com.ibm.JikesRVM.OSR",
+ "com.ibm.JikesRVM.util"};
+ }
+
+
+
+
+ public void compileBootstrap(VmMethod method, NativeStream os,
+ int level) {
+ int start = os.getLength();
+ final CompiledMethod cm;
+ final boolean abstractM = method.isAbstract();
+ if (abstractM) {
+ if (method.isStatic()) {
+ throw new Error("Abstract & static");
+ }
+ if (method.isNative()) {
+ throw new Error("Abstract & native");
+ }
+ cm = doCompileAbstract(method, os, level, true);
+ if (cm == null) {
+ return;
+ }
+ } else {
+ cm = doCompile(method, os, level, true);
+ }
+ int end = os.getLength();
+
+ final VmAddress nativeCode = (VmAddress) cm.getCodeStart().getObject();
+ VmCompiledExceptionHandler[] eTable;
+ final VmAddress defExHandler;
+ final VmByteCode bc;
+ final VmAddressMap aTable = cm.getAddressTable();
+
+ if (!(method.isNative() || abstractM)) {
+ final NativeStream.ObjectRef defExHRef = cm
+ .getDefExceptionHandler();
+ if (defExHRef != null) {
+ defExHandler = (VmAddress) defExHRef.getObject();
+ ...
[truncated message content] |