|
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/sr...
[truncated message content] |
|
From: <ans...@us...> - 2006-12-15 16:55:42
|
Revision: 2932
http://jnode.svn.sourceforge.net/jnode/?rev=2932&view=rev
Author: ansari82
Date: 2006-12-15 08:55:41 -0800 (Fri, 15 Dec 2006)
Log Message:
-----------
Added to benchmarks in core/lib (JScience and SciMark 2), which get
loaded as part of the tests grub entry. Also amended necessary xml
files.
Notes
-----
Strangle, this has made the build much more stable. Could others check
and verify this?
Modified Paths:
--------------
branches/jikesRVM/all/build.xml
branches/jikesRVM/all/conf/tests-plugin-list.xml
branches/jikesRVM/build.sh
Added Paths:
-----------
branches/jikesRVM/core/descriptors/benchmarks.xml
branches/jikesRVM/core/lib/jscience.jar
branches/jikesRVM/core/lib/scimark2.jar
Modified: branches/jikesRVM/all/build.xml
===================================================================
--- branches/jikesRVM/all/build.xml 2006-12-15 01:51:58 UTC (rev 2931)
+++ branches/jikesRVM/all/build.xml 2006-12-15 16:55:41 UTC (rev 2932)
@@ -22,6 +22,8 @@
<property name="jnode-builder.jar" value="${build.dir}/descriptors/jnode-builder.jar"/>
<property name="jnode-core.jar" value="${root.dir}/core/build/classes"/>
+ <property name="jscience.jar" value="${root.dir}/core/lib"/>
+ <property name="scimark2.jar" value="${root.dir}/core/lib"/>
<property name="jnode-distr.jar" value="${root.dir}/distr/build/classes"/>
<property name="jnode-fs.jar" value="${root.dir}/fs/build/classes"/>
<property name="jnode-gui.jar" value="${root.dir}/gui/build/classes"/>
@@ -208,6 +210,8 @@
<libalias name="edtftpj.jar" alias="${edtftpj.jar}"/>
<libalias name="jcifs.jar" alias="${jcifs.jar}"/>
<libalias name="ejc.jar" alias="${ejc.jar}"/>
+ <libalias name="jscience.jar" alias="${jscience.jar}"/>
+ <libalias name="scimark2.jar" alias="${scimark2.jar}"/>
<descriptors dir="${descriptors.dir}/">
<include name="*.xml"/>
Modified: branches/jikesRVM/all/conf/tests-plugin-list.xml
===================================================================
--- branches/jikesRVM/all/conf/tests-plugin-list.xml 2006-12-15 01:51:58 UTC (rev 2931)
+++ branches/jikesRVM/all/conf/tests-plugin-list.xml 2006-12-15 16:55:41 UTC (rev 2932)
@@ -12,6 +12,7 @@
<plugin id="gnu.mauve.core"/>
<plugin id="gnu.mauve.java.util"/>
<plugin id="gnu.mauve.java.lang"/>
+ <plugin id="benchmark"/>
<plugin id="org.objectweb.asm"/>
<plugin id="net.sf.cglib"/>
@@ -28,4 +29,4 @@
<plugin id="jfunc"/>
<plugin id="org.jnode.testrunner"/>
-</plugin-list>
\ No newline at end of file
+</plugin-list>
Modified: branches/jikesRVM/build.sh
===================================================================
--- branches/jikesRVM/build.sh 2006-12-15 01:51:58 UTC (rev 2931)
+++ branches/jikesRVM/build.sh 2006-12-15 16:55:41 UTC (rev 2932)
@@ -1,6 +1,6 @@
#!/bin/sh
dir=`dirname $0`
-java -Xmx712M -Xms128M -jar $dir/core/lib/ant-launcher.jar -lib $JAVA_HOME/lib -lib $dir/core/lib -f $dir/all/build.xml $*
+java -Xmx1024M -Xms512M -jar $dir/core/lib/ant-launcher.jar -lib $JAVA_HOME/lib -lib $dir/core/lib -f $dir/all/build.xml $*
Added: branches/jikesRVM/core/descriptors/benchmarks.xml
===================================================================
--- branches/jikesRVM/core/descriptors/benchmarks.xml (rev 0)
+++ branches/jikesRVM/core/descriptors/benchmarks.xml 2006-12-15 16:55:41 UTC (rev 2932)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plugin SYSTEM "jnode.dtd">
+
+<plugin id="benchmark"
+ name="Benchmark classes"
+ version="0.0"
+ license-name="Different"
+ provider-name="Different">
+
+ <extension point="org.jnode.shell.aliases">
+ <alias name="BenchJScience" class="org.jscience.JScience"/>
+ <alias name="BenchScimark" class="jnt.scimark2.commandline"/>
+ </extension>
+
+
+ <runtime>
+ <library name="jscience.jar">
+ <export name="*"/>
+ </library>
+
+ <library name="scimark2.jar">
+ <export name="*"/>
+ </library>
+
+ <!-- -->
+
+ </runtime>
+
+</plugin>
\ No newline at end of file
Added: branches/jikesRVM/core/lib/jscience.jar
===================================================================
(Binary files differ)
Property changes on: branches/jikesRVM/core/lib/jscience.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/jikesRVM/core/lib/scimark2.jar
===================================================================
(Binary files differ)
Property changes on: branches/jikesRVM/core/lib/scimark2.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ans...@us...> - 2006-12-16 15:26:34
|
Revision: 2934
http://jnode.svn.sourceforge.net/jnode/?rev=2934&view=rev
Author: ansari82
Date: 2006-12-16 07:26:32 -0800 (Sat, 16 Dec 2006)
Log Message:
-----------
Changes to make build more stable by removing opt, opt.ir from compiler packages in JikesRVMOptCompiler.java, adding a default compiler command, and cleaning up X86stackframe to have cleaner declarations, and fix spelling mistake in x86stubcompiler
Modified Paths:
--------------
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java
branches/jikesRVM/core/src/core/org/jnode/vm/LoadCompileService.java
branches/jikesRVM/core/src/core/org/jnode/vm/x86/VmX86Architecture.java
branches/jikesRVM/core/src/core/org/jnode/vm/x86/compiler/l1a/X86StackFrame.java
branches/jikesRVM/core/src/core/org/jnode/vm/x86/compiler/stub/X86StubCompiler.java
branches/jikesRVM/dbuild.sh
branches/jikesRVM/shell/descriptors/org.jnode.shell.command.xml
Added Paths:
-----------
branches/jikesRVM/shell/src/shell/org/jnode/shell/command/DefaultCompilerCommand.java
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java 2006-12-16 15:06:27 UTC (rev 2933)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java 2006-12-16 15:26:32 UTC (rev 2934)
@@ -50,7 +50,6 @@
public static OPT_Options options;
public static OPT_OptimizationPlanElement[] optimizationPlan;
- private boolean init = false;
public JikesRVMOptCompiler() {
options = new OPT_Options();
@@ -157,15 +156,17 @@
@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"};
+ 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",
+ };
}
Modified: branches/jikesRVM/core/src/core/org/jnode/vm/LoadCompileService.java
===================================================================
--- branches/jikesRVM/core/src/core/org/jnode/vm/LoadCompileService.java 2006-12-16 15:06:27 UTC (rev 2933)
+++ branches/jikesRVM/core/src/core/org/jnode/vm/LoadCompileService.java 2006-12-16 15:26:32 UTC (rev 2934)
@@ -182,13 +182,13 @@
final NativeCodeCompiler cmps[];
- int index;
- if (optLevel == 0)
- index = 0;
- else if (defaultCompiler == 0)
- index = optLevel;
- else
- index = defaultCompiler;
+ int index;
+ if (optLevel == 0)
+ index = 0;
+ else if (defaultCompiler == 0)
+ index = optLevel;
+ else
+ index = defaultCompiler;
if (enableTestCompilers) {
optLevel += compilers.length;
Modified: branches/jikesRVM/core/src/core/org/jnode/vm/x86/VmX86Architecture.java
===================================================================
--- branches/jikesRVM/core/src/core/org/jnode/vm/x86/VmX86Architecture.java 2006-12-16 15:06:27 UTC (rev 2933)
+++ branches/jikesRVM/core/src/core/org/jnode/vm/x86/VmX86Architecture.java 2006-12-16 15:26:32 UTC (rev 2934)
@@ -140,6 +140,8 @@
public VmX86Architecture(int referenceSize, String compiler) {
super(referenceSize, new VmX86StackReader(referenceSize));
this.compilers = new NativeCodeCompiler[4];
+
+ // Production system compiler list
this.compilers[0] = new X86StubCompiler();
if ("L1B".equals(compiler)) {
this.compilers[1] = new X86Level1BCompiler();
@@ -147,8 +149,10 @@
this.compilers[1] = new X86Level1ACompiler();
}
this.compilers[2] = new JikesRVMOptCompiler();
- //this.compilers[3] = this.compilers[2];
- this.compilers[3] = this.compilers[1];
+
+ //this.compilers[3] = this.compilers[2];
+ this.compilers[3] = this.compilers[1];
+
this.testCompilers = null;
}
Modified: branches/jikesRVM/core/src/core/org/jnode/vm/x86/compiler/l1a/X86StackFrame.java
===================================================================
--- branches/jikesRVM/core/src/core/org/jnode/vm/x86/compiler/l1a/X86StackFrame.java 2006-12-16 15:06:27 UTC (rev 2933)
+++ branches/jikesRVM/core/src/core/org/jnode/vm/x86/compiler/l1a/X86StackFrame.java 2006-12-16 15:26:32 UTC (rev 2934)
@@ -28,6 +28,7 @@
import org.jnode.assembler.x86.X86Constants;
import org.jnode.assembler.x86.X86Register;
import org.jnode.assembler.x86.X86Register.GPR;
+import org.jnode.vm.Vm;
import org.jnode.vm.classmgr.TypeSizeInfo;
import org.jnode.vm.classmgr.VmByteCode;
import org.jnode.vm.classmgr.VmInterpretedExceptionHandler;
@@ -80,7 +81,7 @@
* Number of byte on the stack occupied by saved registers. See
* {@link #saveRegisters()}
*/
- private static final int SAVED_REGISTERSPACE = 2 * 4;
+ private static final int SAVED_REGISTERSPACE = 2 * Vm.getArch().getReferenceSize();
/**
* Create a new instance
@@ -368,9 +369,9 @@
* @see org.jnode.vm.x86.VmX86StackReader
*/
private final void saveRegisters() {
- os.writePUSH(X86Register.EBX);
- //os.writePUSH(Register.EDI);
- os.writePUSH(X86Register.ESI);
+ os.writePUSH(os.isCode32() ? (GPR)X86Register.EBX : X86Register.RBX);
+ //os.writePUSH(os.isCode32() ? (GPR)X86Register.EDI : X86Register.RDI);
+ os.writePUSH(os.isCode32() ? (GPR)X86Register.ESI : X86Register.RSI);
}
/**
@@ -380,8 +381,8 @@
* @see org.jnode.vm.x86.VmX86StackReader
*/
private final void restoreRegisters() {
- os.writePOP(X86Register.ESI);
- //os.writePOP(Register.EDI);
- os.writePOP(X86Register.EBX);
+ os.writePOP(os.isCode32() ? (GPR)X86Register.ESI : X86Register.RSI);
+ //os.writePOP(os.isCode32() ? (GPR)X86Register.EDI : X86Register.RDI);
+ os.writePOP(os.isCode32() ? (GPR)X86Register.EBX : X86Register.RBX);
}
}
Modified: branches/jikesRVM/core/src/core/org/jnode/vm/x86/compiler/stub/X86StubCompiler.java
===================================================================
--- branches/jikesRVM/core/src/core/org/jnode/vm/x86/compiler/stub/X86StubCompiler.java 2006-12-16 15:06:27 UTC (rev 2933)
+++ branches/jikesRVM/core/src/core/org/jnode/vm/x86/compiler/stub/X86StubCompiler.java 2006-12-16 15:26:32 UTC (rev 2934)
@@ -146,6 +146,6 @@
*/
@Override
public String[] getCompilerPackages() {
- return new String[] { "org.jnode.vm.x86.compiler", "org.jnode.vm.x86.compiler.stup" };
+ return new String[] { "org.jnode.vm.x86.compiler", "org.jnode.vm.x86.compiler.stub" };
}
}
Modified: branches/jikesRVM/dbuild.sh
===================================================================
--- branches/jikesRVM/dbuild.sh 2006-12-16 15:06:27 UTC (rev 2933)
+++ branches/jikesRVM/dbuild.sh 2006-12-16 15:26:32 UTC (rev 2934)
@@ -1,6 +1,6 @@
#!/bin/sh
dir=`dirname $0`
-java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -Xmx1576M -Xms128M -jar $dir/core/lib/ant-launcher.jar -lib $JAVA_HOME/lib -lib $dir/core/lib -f $dir/all/build.xml $*
+java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -Xmx1024M -Xms512M -jar $dir/core/lib/ant-launcher.jar -lib $JAVA_HOME/lib -lib $dir/core/lib -f $dir/all/build.xml $*
Modified: branches/jikesRVM/shell/descriptors/org.jnode.shell.command.xml
===================================================================
--- branches/jikesRVM/shell/descriptors/org.jnode.shell.command.xml 2006-12-16 15:06:27 UTC (rev 2933)
+++ branches/jikesRVM/shell/descriptors/org.jnode.shell.command.xml 2006-12-16 15:26:32 UTC (rev 2934)
@@ -25,6 +25,7 @@
<alias name="class" class="org.jnode.shell.command.ClassCommand"/>
<alias name="classpath" class="org.jnode.shell.command.ClasspathCommand" internal="yes"/>
<alias name="compile" class="org.jnode.shell.command.CompileCommand"/>
+ <alias name="defcomp" class="org.jnode.shell.command.DefaultCompilerCommand"/>
<alias name="disasm" class="org.jnode.shell.command.DisassembleCommand"/>
<alias name="date" class="org.jnode.shell.command.DateCommand"/>
<alias name="echo" class="org.jnode.shell.command.EchoCommand"/>
Added: branches/jikesRVM/shell/src/shell/org/jnode/shell/command/DefaultCompilerCommand.java
===================================================================
--- branches/jikesRVM/shell/src/shell/org/jnode/shell/command/DefaultCompilerCommand.java (rev 0)
+++ branches/jikesRVM/shell/src/shell/org/jnode/shell/command/DefaultCompilerCommand.java 2006-12-16 15:26:32 UTC (rev 2934)
@@ -0,0 +1,49 @@
+/*
+ * $Id: CompileCommand.java 2224 2006-01-01 12:49:03Z epr $
+ *
+ * JNode.org
+ * Copyright (C) 2003-2006 JNode.org
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This library 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 Lesser General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; If not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+package org.jnode.shell.command;
+
+import org.jnode.shell.help.Help;
+import org.jnode.shell.help.IntegerArgument;
+import org.jnode.shell.help.Parameter;
+import org.jnode.shell.help.ParsedArguments;
+import org.jnode.vm.LoadCompileService;
+
+/**
+ * @author Mohammad Ansari (ans...@us...)
+ */
+
+public class DefaultCompilerCommand {
+
+ static final IntegerArgument ARG_LEVEL = new IntegerArgument("number", "the compiler number (usually JikesOpt is 2");
+
+ public static Help.Info HELP_INFO = new Help.Info("defcomp", "Set default compiler", new Parameter[] { new Parameter(ARG_LEVEL, Parameter.MANDATORY)});
+
+ public static void main(String[] args) throws Exception {
+ final ParsedArguments cmdLine = HELP_INFO.parse(args);
+
+ final int level = ARG_LEVEL.getInteger(cmdLine);
+
+ LoadCompileService.setDefaultCompiler(level);
+ System.out.println("Default compiler id now: " + level);
+ }
+
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kon...@us...> - 2006-12-19 11:42:32
|
Revision: 2937
http://jnode.svn.sourceforge.net/jnode/?rev=2937&view=rev
Author: konkubinaten
Date: 2006-12-19 03:42:30 -0800 (Tue, 19 Dec 2006)
Log Message:
-----------
Fix the build system. I do not really know why it works now and didn't before, but at least it does :)
Modified Paths:
--------------
branches/jikesRVM/build.sh
branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java
Modified: branches/jikesRVM/build.sh
===================================================================
--- branches/jikesRVM/build.sh 2006-12-17 10:27:39 UTC (rev 2936)
+++ branches/jikesRVM/build.sh 2006-12-19 11:42:30 UTC (rev 2937)
@@ -2,7 +2,6 @@
dir=`dirname $0`
-for i in `find $dir/core/src/core/ |grep -v .svn | sort -r`; do touch $i ; done
java -Xmx1450M -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/AbstractBootImageBuilder.java
===================================================================
--- branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java 2006-12-17 10:27:39 UTC (rev 2936)
+++ branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java 2006-12-19 11:42:30 UTC (rev 2937)
@@ -565,14 +565,29 @@
// Twice, this is intended!
emitObjects(os, arch, blockedObjects, false);
- // Emit the statics table
+ /* Emit the statics table
log("Emit statics", Project.MSG_VERBOSE);
blockedObjects.remove(clsMgr.getSharedStatics());
blockedObjects.remove(clsMgr.getIsolatedStatics());
emitObjects(os, arch, blockedObjects, true);
// Twice, this is intended!
emitObjects(os, arch, blockedObjects, true);
+ */
+ log("Emit shared statics", Project.MSG_VERBOSE);
+ blockedObjects.remove(clsMgr.getSharedStatics());
+ emitObjects(os, arch, blockedObjects, true);
+ // Twice, this is intended!
+ emitObjects(os, arch, blockedObjects, true);
+
+ log("Emit isolated statics", Project.MSG_VERBOSE);
+ blockedObjects.remove(clsMgr.getIsolatedStatics());
+ emitObjects(os, arch, blockedObjects, true);
+ // Twice, this is intended!
+ emitObjects(os, arch, blockedObjects, true);
+
+
+
// Emit the remaining objects
log("Emit rest; blocked=" + blockedObjects, Project.MSG_VERBOSE);
emitObjects(os, arch, null, true);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ans...@us...> - 2006-12-19 23:48:38
|
Revision: 2943
http://jnode.svn.sourceforge.net/jnode/?rev=2943&view=rev
Author: ansari82
Date: 2006-12-19 15:48:37 -0800 (Tue, 19 Dec 2006)
Log Message:
-----------
Eliminated compile warnings about MagicPermission, and added debug for jikes-compiled methods
Modified Paths:
--------------
branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Magic.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ComplexLIR2MIRExpansion.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Simplifier.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_StackManager.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptExceptionDeliverer.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptGCMapIterator.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_GenerateJnodeMagic.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_GenerateMagic.java
branches/jikesRVM/core/src/core/org/jnode/vm/classmgr/VmType.java
branches/jikesRVM/core/src/core/org/jnode/vm/x86/VmX86Architecture.java
branches/jikesRVM/core/src/vmmagic/org/vmmagic/unboxed/WordArray.java
Modified: branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java
===================================================================
--- branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java 2006-12-19 21:14:50 UTC (rev 2942)
+++ branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java 2006-12-19 23:48:37 UTC (rev 2943)
@@ -72,6 +72,7 @@
import org.jnode.vm.classmgr.VmCompiledCode;
import org.jnode.vm.classmgr.VmField;
import org.jnode.vm.classmgr.VmIsolatedStatics;
+import org.jnode.vm.classmgr.VmMethod;
import org.jnode.vm.classmgr.VmMethodCode;
import org.jnode.vm.classmgr.VmNormalClass;
import org.jnode.vm.classmgr.VmSharedStatics;
@@ -82,8 +83,11 @@
import org.jnode.vm.memmgr.HeapHelper;
import org.jnode.vm.memmgr.VmHeapManager;
import org.jnode.vm.scheduler.VmProcessor;
+import org.jnode.vm.x86.compiler.l1a.X86Level1ACompiler;
import org.vmmagic.unboxed.UnboxedObject;
+import com.ibm.JikesRVM.JikesRVMOptCompiler;
+
/**
* Build the boot image from an assembler compiled bootstrap (in ELF format)
* combined with the precompiled Java classes.
@@ -195,6 +199,13 @@
final int optLevel = compilers.length - 1;
// Use the most optimizing compiler here
final NativeCodeCompiler compiler = compilers[optLevel];
+ NativeCodeCompiler backup, test = null;
+ for(int i = 0; i < compilers.length; i++) {
+ if(compilers[i] instanceof X86Level1ACompiler) {
+ test = compilers[i]; break;
+ }
+ }
+ if(test==null)backup=null; else backup=test;
int oldCount;
int newCount;
@@ -212,12 +223,24 @@
vmClass.resolveCpRefs(/*clsMgr*/);
again = true;
}
- final int mcnt;
+ int mcnt;
final int startLength = os.getLength();
- if (compHigh) {
+ if (compHigh && !vmClass.isCompiled()) {
log("Full Compile " + vmClass.getName(),
Project.MSG_VERBOSE);
- mcnt = vmClass.compileBootstrap(compiler, os, optLevel);
+ final int cnt = vmClass.getNoDeclaredMethods();
+ mcnt = 0;
+ for (int i = 0; i < cnt; i++) {
+ final VmMethod method = vmClass.getDeclaredMethod(i);
+ mcnt++;
+ if(compiler instanceof JikesRVMOptCompiler && !JikesRVMOptCompiler.compilableMethod(method)) {
+ backup.compileBootstrap(method, os, optLevel);
+ }
+ else {
+ compiler.compileBootstrap(method, os, optLevel);
+ }
+ }
+ vmClass.setCompiled();
totalHighMethods += mcnt;
totalHighMethodSize += (os.getLength() - startLength);
} else {
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java 2006-12-19 21:14:50 UTC (rev 2942)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java 2006-12-19 23:48:37 UTC (rev 2943)
@@ -9,11 +9,13 @@
import org.jnode.vm.Vm;
import org.jnode.vm.VmAddress;
import org.jnode.vm.VmMagic;
+import org.jnode.vm.annotation.MagicPermission;
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.classmgr.VmType;
import org.jnode.vm.compiler.CompileError;
import org.jnode.vm.compiler.CompiledExceptionHandler;
import org.jnode.vm.compiler.CompiledMethod;
@@ -42,6 +44,7 @@
* @author Mohammad Ansari (ans...@us...)
*/
+@MagicPermission
public class JikesRVMOptCompiler extends AbstractX86Compiler {
// is the opt compiler usable?
@@ -115,14 +118,40 @@
}
public static boolean compilableMethod(VmMethod vmMethod) {
- if (vmMethod.getDeclaringClass().getName().contains("org.jnode.test")
-// || vmMethod.getDeclaringClass().getName().contains("org.jnode.vm.classmgr")
- ) {
+ if (vmMethod.getDeclaringClass().getName().contains("org.jnode.vm.classmgr.VmType")
+ && (
+ vmMethod.getName().contains("compare")
+ || vmMethod.getName().contains("equals")
+ || vmMethod.getName().contains("BootClass")
+ || vmMethod.getName().contains("i")
+ || vmMethod.getName().contains("linkAndInitialize")
+ || vmMethod.getName().contains("link")
+ || vmMethod.getName().startsWith("do")
+ || vmMethod.getName().startsWith("is")
+ || vmMethod.getName().startsWith("getA")
+ || vmMethod.getName().startsWith("getObjectClass")
+ || vmMethod.getName().startsWith("getP")
+ )
+ )
+ {
return true;
}
else return false;
}
+ public static boolean compilableClass(VmType vmClass) {
+ if (vmClass.getName().contains("org.jnode.vm.classmgr.Abstract")
+// || vmClass.getName().contains("org.jnode.vm.classmgr.ClassDecoder")
+ || vmClass.getName().contains("org.jnode.vm.classmgr.CompiledCodeList")
+// || vmClass.getName().contains("org.jnode.vm.classmgr.IMTBuilder")
+ || vmClass.getName().contains("org.jnode.vm.classmgr.MethodPragmaFlags")
+
+ ) {
+ return true;
+ }
+ else return false;
+ }
+
@Override
public NativeStream createNativeStream(ObjectResolver resolver) {
X86CpuID cpuid = (X86CpuID) VmProcessor.current().getCPUID();
@@ -174,6 +203,7 @@
public void compileBootstrap(VmMethod method, NativeStream os,
int level) {
+ System.out.println(method.getFullName());
int start = os.getLength();
final CompiledMethod cm;
final boolean abstractM = method.isAbstract();
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Magic.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Magic.java 2006-12-19 21:14:50 UTC (rev 2942)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Magic.java 2006-12-19 23:48:37 UTC (rev 2943)
@@ -1,6 +1,7 @@
package com.ibm.JikesRVM;
import org.jnode.vm.VmMagic;
+import org.jnode.vm.annotation.MagicPermission;
import org.jnode.vm.compiler.EntryPoints;
import org.jnode.vm.x86.compiler.X86JumpTable;
import org.vmmagic.unboxed.Address;
@@ -12,6 +13,7 @@
import com.ibm.JikesRVM.classloader.VM_Type;
import com.ibm.JikesRVM.classloader.VM_Class;
+@MagicPermission
public class VM_Magic {
private static EntryPoints context = null;
@@ -81,8 +83,8 @@
}
- public static Address getIsolatedTocPointer() {
- return Address.fromInt(context.getVmProcessorIsolatedStaticsTable()
+ public static Offset getIsolatedTocPointer() {
+ return Offset.fromIntZeroExtend(context.getVmProcessorIsolatedStaticsTable()
.getOffset());
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ComplexLIR2MIRExpansion.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ComplexLIR2MIRExpansion.java 2006-12-19 21:14:50 UTC (rev 2942)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ComplexLIR2MIRExpansion.java 2006-12-19 23:48:37 UTC (rev 2943)
@@ -4,10 +4,11 @@
//$Id: OPT_ComplexLIR2MIRExpansion.java,v 1.14 2006/01/06 11:10:17 irogers Exp $
package com.ibm.JikesRVM.opt;
+import org.jnode.vm.annotation.MagicPermission;
+
import com.ibm.JikesRVM.*;
import com.ibm.JikesRVM.opt.ir.*;
import com.ibm.JikesRVM.classloader.*;
-import org.vmmagic.unboxed.Offset;
/**
* Handles the conversion from LIR to MIR of operators whose
@@ -17,6 +18,8 @@
* @modified Peter Sweeney
* @modified Ian Rogers
*/
+
+@MagicPermission
abstract class OPT_ComplexLIR2MIRExpansion extends OPT_IRTools {
/**
@@ -39,7 +42,7 @@
break;
case JNODE_ISOLATED_STATICS_opcode:
OPT_MemoryOperand jtocHome =
- OPT_MemoryOperand.BD(null,Offset.fromIntSignExtend(VM_Magic.getIsolatedTocPointer().toInt()),
+ OPT_MemoryOperand.BD(null,VM_Magic.getIsolatedTocPointer(),
(byte)OPT_GenericStackManager.WORDSIZE, null, null);
jtocHome.setFsSegmentOverride(true);
MIR_Move.mutate(s, IA32_MOV, JnodeMagic.getResult(s), jtocHome);
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Simplifier.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Simplifier.java 2006-12-19 21:14:50 UTC (rev 2942)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Simplifier.java 2006-12-19 23:48:37 UTC (rev 2943)
@@ -7,6 +7,8 @@
import com.ibm.JikesRVM.*;
import com.ibm.JikesRVM.classloader.*;
import com.ibm.JikesRVM.opt.ir.*;
+
+import org.jnode.vm.annotation.MagicPermission;
import org.vmmagic.unboxed.*;
/**
* A constant folder, strength reducer and axiomatic simplifier.
@@ -25,6 +27,8 @@
*
* @author Dave Grove
*/
+
+@MagicPermission
public abstract class OPT_Simplifier extends OPT_IRTools implements OPT_Operators {
// NOTE: The convention is that constant folding is controlled based
// on the type of the result of the operator, not the type of its inputs.
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_StackManager.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_StackManager.java 2006-12-19 21:14:50 UTC (rev 2942)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_StackManager.java 2006-12-19 23:48:37 UTC (rev 2943)
@@ -11,6 +11,8 @@
import java.util.Iterator;
import java.util.HashSet;
import java.util.HashMap;
+
+import org.jnode.vm.annotation.MagicPermission;
import org.vmmagic.unboxed.Offset;
/**
@@ -24,6 +26,8 @@
* @author Mauricio J. Serrano
* @author Julian Dolby
*/
+
+@MagicPermission
public final class OPT_StackManager extends OPT_GenericStackManager
implements OPT_Operators {
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptExceptionDeliverer.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptExceptionDeliverer.java 2006-12-19 21:14:50 UTC (rev 2942)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptExceptionDeliverer.java 2006-12-19 23:48:37 UTC (rev 2943)
@@ -26,79 +26,8 @@
Address catchBlockInstructionAddress,
Throwable exceptionObject,
VM_Registers registers) {
- VM_OptCompiledMethod optMethod = (VM_OptCompiledMethod)compiledMethod;
- Address fp = registers.getInnermostFramePointer();
- VM_Thread myThread = VM_Thread.getCurrentThread();
-
- if (TRACE) {
- VM.sysWrite("Frame size of ");
- VM.sysWrite(optMethod.getMethod());
- VM.sysWrite(" is ");
- VM.sysWrite(optMethod.getFrameFixedSize());
- VM.sysWrite("\n");
- }
-
- // reset sp to "empty params" state (ie same as it was after prologue)
- Address sp = fp.sub(optMethod.getFrameFixedSize());
- registers.gprs.set(STACK_POINTER, sp);
-
- // store exception object for later retrieval by catch block
- int offset = optMethod.getUnsignedExceptionOffset();
- if (offset != 0) {
- // only put the exception object in the stackframe if the catch block is expecting it.
- // (if the method hasn't allocated a stack slot for caught exceptions, then we can safely
- // drop the exceptionObject on the floor).
- VM_Magic.setObjectAtOffset(VM_Magic.addressAsObject(fp), Offset.fromIntSignExtend(-offset), exceptionObject);
- if (TRACE) {
- VM.sysWrite("Storing exception object ");
- VM.sysWrite(VM_Magic.objectAsAddress(exceptionObject));
- VM.sysWrite(" at offset ");
- VM.sysWrite(offset);
- VM.sysWrite(" from framepoint ");
- VM.sysWrite(fp);
- VM.sysWrite("\n");
- }
- }
-
- if (TRACE) {
- VM.sysWrite("Registers before delivering exception in ");
- VM.sysWrite(optMethod.getMethod());
- VM.sysWrite("\n");
- for (int i=0; i<NUM_GPRS; i++) {
- VM.sysWrite(GPR_NAMES[i]);
- VM.sysWrite(" = ");
- VM.sysWrite(registers.gprs.get(i));
- VM.sysWrite("\n");
- }
- }
-
- // set address at which to resume executing frame
- registers.ip = catchBlockInstructionAddress;
-
- if (TRACE) {
- VM.sysWrite("Set ip to ");
- VM.sysWrite(registers.ip);
- VM.sysWrite("\n");
- }
-
- VM.enableGC(); // disabled right before VM_Runtime.deliverException was called
-
- if (VM.VerifyAssertions) VM._assert(registers.inuse == true);
- registers.inuse = false;
-
- // 'give back' the portion of the stack we borrowed to run
- // exception delivery code when invoked for a hardware trap.
- // If this was a straight software trap (athrow) then setting
- // the stacklimit should be harmless, since the stacklimit should already have exactly
- // the value we are setting it too.
- if (!myThread.hardwareExceptionRegisters.inuse) {
- myThread.stackLimit = VM_Magic.objectAsAddress(myThread.stack).add(STACK_SIZE_GUARD);
- VM_Processor.getCurrentProcessor().activeThreadStackLimit = myThread.stackLimit;
- }
-
- // "branches" to catchBlockInstructionAddress
- VM_Magic.restoreHardwareExceptionState(registers);
- if (VM.VerifyAssertions) VM._assert(NOT_REACHED);
+ try{ throw new Exception("VM_OptExceptionDeliverer.deliverException() not implemented!"); }
+ catch (Exception e) { e.printStackTrace();}
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptGCMapIterator.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptGCMapIterator.java 2006-12-19 21:14:50 UTC (rev 2942)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptGCMapIterator.java 2006-12-19 23:48:37 UTC (rev 2943)
@@ -34,78 +34,8 @@
* save the volatile gprs.
*/
void updateLocateRegisters() {
-
- // HIGH MEMORY
- //
- // +---------------+ |
- // FP-> | saved FP | <-- this frame's caller's frame |
- // +---------------+ |
- // | cmid | <-- this frame's compiledmethod id |
- // +---------------+ |
- // | | |
- // | Spill Area | <-- spills and other method-specific |
- // | ... | compiler-managed storage |
- // +---------------+ |
- // | Saved FP | only SaveVolatile Frames |
- // | State | |
- // +---------------+ |
- // | VolGPR[0] |
- // | ... | only SaveVolatile Frames
- // | VolGPR[n] |
- // +---------------+
- // | NVolGPR[k] | <-- cm.getUnsignedNonVolatileOffset()
- // | ... | k == cm.getFirstNonVolatileGPR()
- // | NVolGPR[n] |
- // +---------------+
- //
- // LOW MEMORY
-
- int frameOffset = compiledMethod.getUnsignedNonVolatileOffset();
- if (frameOffset >= 0) {
- // get to the non vol area
- Address nonVolArea = framePtr.sub(frameOffset);
-
- // update non-volatiles
- int first = compiledMethod.getFirstNonVolatileGPR();
- if (first >= 0) {
- // move to the beginning of the nonVol area
- Address location = nonVolArea;
-
- for (int i = first; i < NUM_NONVOLATILE_GPRS; i++) {
- // determine what register index corresponds to this location
- int registerIndex = NONVOLATILE_GPRS[i];
- registerLocations.set(registerIndex, location);
- if (DEBUG) {
- VM.sysWrite("UpdateRegisterLocations: Register ");
- VM.sysWrite(registerIndex);
- VM.sysWrite(" to Location ");
- VM.sysWrite(location);
- VM.sysWrite("\n");
- }
- location = location.sub(BYTES_IN_ADDRESS);
- }
- }
-
- // update volatiles if needed
- if (compiledMethod.isSaveVolatile()) {
- // move to the beginning of the nonVol area
- Address location = nonVolArea.add(4 * NUM_VOLATILE_GPRS);
-
- for (int i = 0; i < NUM_VOLATILE_GPRS; i++) {
- // determine what register index corresponds to this location
- int registerIndex = VOLATILE_GPRS[i];
- registerLocations.set(registerIndex, location);
- if (DEBUG) {
- VM.sysWrite("UpdateRegisterLocations: Register ");
- VM.sysWrite(registerIndex);
- VM.sysWrite(" to Location ");
- VM.sysWrite(location);
- VM.sysWrite("\n");
- }
- location = location.sub(BYTES_IN_ADDRESS);
- }
- }
- }
+ try{ throw new Exception("VM_OptGCMapIterator() not implemented!"); }
+ catch (Exception e) { e.printStackTrace();}
}
/**
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_AddressConstantOperand.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_AddressConstantOperand.java 2006-12-19 21:14:50 UTC (rev 2942)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_AddressConstantOperand.java 2006-12-19 23:48:37 UTC (rev 2943)
@@ -5,6 +5,8 @@
package com.ibm.JikesRVM.opt.ir;
import com.ibm.JikesRVM.opt.OPT_Bits;
+
+import org.jnode.vm.annotation.MagicPermission;
import org.vmmagic.unboxed.*;
import com.ibm.JikesRVM.VM_SizeConstants;
import com.ibm.JikesRVM.VM;
@@ -16,6 +18,8 @@
* @see OPT_Operand
* @author John Whaley
*/
+
+@MagicPermission
public final class OPT_AddressConstantOperand extends OPT_ConstantOperand {
/**
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_GenerateJnodeMagic.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_GenerateJnodeMagic.java 2006-12-19 21:14:50 UTC (rev 2942)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_GenerateJnodeMagic.java 2006-12-19 23:48:37 UTC (rev 2943)
@@ -722,15 +722,4 @@
}
return true;
}
-
- private static void cmpHelper(OPT_BC2IR bc2ir,
- OPT_GenerationContext gc,
- OPT_ConditionOperand cond,
- OPT_Operand given_o2) {
- OPT_Operand o2 = given_o2 == null ? bc2ir.pop() : given_o2;
- OPT_Operand o1 = bc2ir.pop();
- OPT_RegisterOperand res = gc.temps.makeTempInt();
- bc2ir.appendInstruction(BooleanCmp.create(BOOLEAN_CMP_ADDR, res.copyRO(), o1, o2, cond, new OPT_BranchProfileOperand()));
- bc2ir.push(res.copyD2U());
- }
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_GenerateMagic.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_GenerateMagic.java 2006-12-19 21:14:50 UTC (rev 2942)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_GenerateMagic.java 2006-12-19 23:48:37 UTC (rev 2943)
@@ -822,7 +822,7 @@
return true;
}
- private static void cmpHelper(OPT_BC2IR bc2ir,
+ protected static void cmpHelper(OPT_BC2IR bc2ir,
OPT_GenerationContext gc,
OPT_ConditionOperand cond,
OPT_Operand given_o2) {
Modified: branches/jikesRVM/core/src/core/org/jnode/vm/classmgr/VmType.java
===================================================================
--- branches/jikesRVM/core/src/core/org/jnode/vm/classmgr/VmType.java 2006-12-19 21:14:50 UTC (rev 2942)
+++ branches/jikesRVM/core/src/core/org/jnode/vm/classmgr/VmType.java 2006-12-19 23:48:37 UTC (rev 2943)
@@ -1915,6 +1915,10 @@
}
return rc;
}
+
+ public void setCompiled() {
+ state |= VmTypeState.ST_COMPILED;
+ }
/**
* Compile all the methods in this class during runtime.
@@ -2145,7 +2149,7 @@
final Throwable targetEx = ex.getTargetException();
if (targetEx != null) {
ex.getTargetException().printStackTrace();
- // Unsafe.die("VmType.doInitialize");
+ Unsafe.die("VmType.doInitialize: "+getName());
throw new ExceptionInInitializerError(ex
.getTargetException());
} else {
Modified: branches/jikesRVM/core/src/core/org/jnode/vm/x86/VmX86Architecture.java
===================================================================
--- branches/jikesRVM/core/src/core/org/jnode/vm/x86/VmX86Architecture.java 2006-12-19 21:14:50 UTC (rev 2942)
+++ branches/jikesRVM/core/src/core/org/jnode/vm/x86/VmX86Architecture.java 2006-12-19 23:48:37 UTC (rev 2943)
@@ -150,8 +150,8 @@
}
this.compilers[2] = new JikesRVMOptCompiler();
- //this.compilers[3] = this.compilers[2];
- this.compilers[3] = this.compilers[1];
+ this.compilers[3] = this.compilers[2];
+// this.compilers[3] = this.compilers[1];
this.testCompilers = null;
}
Modified: branches/jikesRVM/core/src/vmmagic/org/vmmagic/unboxed/WordArray.java
===================================================================
--- branches/jikesRVM/core/src/vmmagic/org/vmmagic/unboxed/WordArray.java 2006-12-19 21:14:50 UTC (rev 2942)
+++ branches/jikesRVM/core/src/vmmagic/org/vmmagic/unboxed/WordArray.java 2006-12-19 23:48:37 UTC (rev 2943)
@@ -49,6 +49,6 @@
*
*****************************************************************/
- public void set(byte stack_pointer, Address sp) {/*TODO*/}
- public void set(int registerIndex, Address location) {/*TODO*/}
+// public void set(byte stack_pointer, Address sp) {/*TODO*/}
+// public void set(int registerIndex, Address location) {/*TODO*/}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ans...@us...> - 2006-12-22 00:45:52
|
Revision: 2950
http://jnode.svn.sourceforge.net/jnode/?rev=2950&view=rev
Author: ansari82
Date: 2006-12-21 16:45:50 -0800 (Thu, 21 Dec 2006)
Log Message:
-----------
Fixed invokeinterface, removed classcast checking as opt needs more info than is available right now, added an opt-required feature to Jnode that marks a VmType as inBootImage, and tidied up various Jikes files
Modified Paths:
--------------
branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Magic.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Array.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Class.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Field.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_NormalMethod.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Primitive.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Type.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_Helpers.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_ComplexLIR2MIRExpansion.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ConvertToLowLevelIR.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DynamicTypeCheckExpansion.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Options.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SimpleEscape.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Simplifier.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_StackManager.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptExceptionDeliverer.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptGCMapIterator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptSaveVolatile.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/JnodeMagic.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_GenerateJnodeMagic.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/org/jnode/vm/classmgr/VmArrayClass.java
branches/jikesRVM/core/src/core/org/jnode/vm/classmgr/VmInterfaceClass.java
branches/jikesRVM/core/src/core/org/jnode/vm/classmgr/VmNormalClass.java
branches/jikesRVM/core/src/core/org/jnode/vm/classmgr/VmType.java
branches/jikesRVM/core/src/test/org/jnode/test/core/CompilerTest.java
branches/jikesRVM/core/src/vmmagic/org/vmmagic/unboxed/WordArray.java
Modified: branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java
===================================================================
--- branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -213,6 +213,8 @@
do {
again = false;
oldCount = clsMgr.getLoadedClassCount();
+ for (VmType< ? > vmClass : clsMgr.getLoadedClasses())
+ vmClass.setInBootImage(true);
for (VmType< ? > vmClass : clsMgr.getLoadedClasses()) {
vmClass.link();
final boolean compHigh = isCompileHighOptLevel(vmClass);
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -118,21 +118,14 @@
}
public static boolean compilableMethod(VmMethod vmMethod) {
- if (vmMethod.getDeclaringClass().getName().contains("org.jnode.vm.classmgr.VmType")
- && (
- vmMethod.getName().contains("compare")
- || vmMethod.getName().contains("equals")
- || vmMethod.getName().contains("BootClass")
- || vmMethod.getName().contains("i")
- || vmMethod.getName().contains("linkAndInitialize")
- || vmMethod.getName().contains("link")
- || vmMethod.getName().startsWith("do")
- || vmMethod.getName().startsWith("is")
- || vmMethod.getName().startsWith("getA")
- || vmMethod.getName().startsWith("getObjectClass")
- || vmMethod.getName().startsWith("getP")
- )
- )
+ if (vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.classmgr.A")
+ || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.classmgr.C")
+ || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.classmgr.I")
+ || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.classmgr.M")
+ || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.classmgr.N")
+ || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.classmgr.O")
+
+ )
{
return true;
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -43,6 +43,8 @@
public static final boolean BuildForITableInterfaceInvocation = false;
+ public static boolean BuildForIMTInterfaceInvocation = false;
+
public static final boolean BuildForIndirectIMT = false;
public static boolean runningVM = true;
@@ -61,8 +63,6 @@
public static boolean MeasureCompilation = false;
- public static boolean BuildForIMTInterfaceInvocation = false;
-
public static boolean fullyBooted;
public static boolean ExplicitlyGuardLowMemory;
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Magic.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Magic.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Magic.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -29,9 +29,7 @@
**************************************************************/
public static VM_Field getCurrentVmProcField() {
- return VM_Field.buildFromJnodeField(
- VM_Class.buildFromJnodeClass(context.getVmProcessorMeField().getDeclaringClass()),
- context.getVmProcessorMeField());
+ return VM_Field.buildFromJnodeField(context.getVmProcessorMeField());
}
public static VM_Method getClassForVmTypeMethod() {
@@ -140,7 +138,6 @@
public static void setIntAtOffset(VM_CodeArray code, Offset offset,
int patch) {
- // TODO
try {throw new Exception("VM_Magic.setIntAtOffset() not implemented");}
catch (Exception e) {e.printStackTrace();}
//Address addr = objectAsAddress(code);
@@ -148,12 +145,45 @@
}
public static void restoreHardwareExceptionState(VM_Registers registers) {
- // TODO
try {throw new Exception("VM_Magic.restoreHardwareEx... not implemented");}
catch (Exception e) {e.printStackTrace();}
}
public static void isync() {/*Nothing required on Intel*/}
+
+
+ public static VM_Method getClassCastFailedMethod() {
+ return VM_Method.buildFromJnodeMethod(context
+ .getClassCastFailedMethod());
+ }
+
+
+ public static Object getFramePointer() {
+ try {throw new Exception("VM_Magic.getFramePointer() not implemented");}
+ catch (Exception e) {e.printStackTrace();}
+ return null;
+ }
+
+
+ public static int getCompiledMethodID(Address fp) {
+ try {throw new Exception("VM_Magic.getCompiledMethodID() not implemented");}
+ catch (Exception e) {e.printStackTrace();}
+ return 0;
+ }
+
+
+ public static Address getReturnAddress(Object framePointer) {
+ try {throw new Exception("VM_Magic.getReturnAddress() not implemented");}
+ catch (Exception e) {e.printStackTrace();}
+ return null;
+ }
+
+
+ public static Address getCallerFramePointer(Object framePointer) {
+ try {throw new Exception("VM_Magic.getCallerFramePointer() not implemented");}
+ catch (Exception e) {e.printStackTrace();}
+ return null;
+ }
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Array.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Array.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Array.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -14,8 +14,6 @@
public static int LENGTH_OFFSET = VmArray.LENGTH_OFFSET;
public static int DATA_OFFSET = VmArray.DATA_OFFSET;
-
- final VmArrayClass<?> jnodeArray;
/*
* We hold on to a number of commonly used arrays for easy access.
*/
@@ -55,7 +53,6 @@
*/
VM_Array(VM_TypeReference typeRef, VM_Type elementType, VmArrayClass<?> array) {
super(typeRef, array);
- jnodeArray = array;
depth = 1;
this.elementType = elementType;
if (elementType.isArrayType() &&
@@ -145,8 +142,8 @@
@Override
public void resolve() {
- // TODO Auto-generated method stub
-
+ jnodeType.prepare();
+ jnodeType.prepareForInstantiation();
}
/**
@@ -176,6 +173,6 @@
}
public VmArrayClass<?> getJnodeArray() {
- return jnodeArray;
+ return (VmArrayClass<?>)jnodeType;
}
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Class.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Class.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Class.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -71,7 +71,7 @@
VmConstFieldRef jnodeField = jnodeType.getCP().getConstFieldRef(i);
if (!jnodeField.isResolved())
jnodeField.resolve(this.jnodeType.getLoader());
- VM_Field jikesField = VM_Field.buildFromJnodeField(this, jnodeField.getResolvedVmField());
+ VM_Field jikesField = VM_Field.buildFromJnodeField(jnodeField.getResolvedVmField());
return (VM_FieldReference)jikesField.memRef;
}
@@ -182,11 +182,8 @@
return null;
}
- public boolean hasClassInitializerMethod() {
- if (jnodeType.getInitializerMethod() == null) {
- return false;
- }
- return true;
+ public VM_Method getClassInitializerMethod() {
+ return VM_Method.buildFromJnodeMethod(jnodeType.getInitializerMethod());
}
public String getSourceName() {
@@ -194,10 +191,8 @@
}
public void resolve() {
- // This should call Jnode stuff because VM_Class is only an adapter to the Jnode class
- jnodeType.link();
-// jnodeType.resolveCpRefs();
-// jnodeType.prepareForInstantiation();
+ jnodeType.prepare();
+ jnodeType.prepareForInstantiation();
}
/**
@@ -207,7 +202,7 @@
* @return description (null --> not found)
*/
public final VM_Field findDeclaredField(VM_Atom fieldName, VM_Atom fieldDescriptor) {
- return VM_Field.buildFromJnodeField(this, jnodeType.getDeclaredField(fieldName.toString(),
+ return VM_Field.buildFromJnodeField(jnodeType.getDeclaredField(fieldName.toString(),
fieldDescriptor.toString()));
}
@@ -303,7 +298,7 @@
jnodeFields[i] = jnodeType.getDeclaredField(i);
VM_Field[] jikesFields = new VM_Field[jnodeFields.length];
for (int i = 0; i < jnodeFields.length; i++) {
- jikesFields[i] = VM_Field.buildFromJnodeField(this, jnodeFields[i]);
+ jikesFields[i] = VM_Field.buildFromJnodeField(jnodeFields[i]);
}
return jikesFields;
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Field.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Field.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Field.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -4,8 +4,6 @@
import org.vmmagic.pragma.UninterruptiblePragma;
public final class VM_Field extends VM_Member{
-
- final VmField jnodeField;
/**
* NOTE: Only {@link VM_Class} is allowed to create an instance of a VM_Field.
@@ -17,7 +15,6 @@
*/
public VM_Field(VM_Class declaringClass, VM_MemberReference memRef, int modifiers, VmField field) {
super(declaringClass, memRef, modifiers & APPLICABLE_TO_FIELDS, field);
- this.jnodeField = field;
memRef.asFieldReference().setResolvedMember(this);
}
@@ -29,7 +26,7 @@
}
public boolean isStatic() {
- return jnodeField.isStatic();
+ return jnodeMember.isStatic();
}
public boolean isVolatile() {
@@ -38,24 +35,23 @@
}
public boolean isFinal() {
- return jnodeField.isFinal();
+ return jnodeMember.isFinal();
}
- public static VM_Field buildFromJnodeField(VM_Class callingClass, VmField jnodeField) {
- //The assumption is that the calling class is a Jikes VM_Class, which
- // is actually a "copy" of a JNode VmClass.
- if(jnodeField == null) return null;
+ public static VM_Field buildFromJnodeField(VmField jnodeField) {
+ if(jnodeField==null) return null;
+ VM_Class declaringClass = VM_Class.buildFromJnodeClass(jnodeField.getDeclaringClass());
VM_Atom methodName = VM_Atom.findOrCreateAsciiAtom(jnodeField.getName());
VM_Atom methodDescriptor = VM_Atom.findOrCreateAsciiAtom(jnodeField.getSignature());
- VM_MemberReference memRef = VM_MemberReference.findOrCreate(callingClass.getTypeRef(), methodName, methodDescriptor);
+ VM_MemberReference memRef = VM_MemberReference.findOrCreate(declaringClass.getTypeRef(), methodName, methodDescriptor);
if(memRef.asFieldReference().isResolved())
return memRef.asFieldReference().getResolvedMember();
- VM_Field jikesField = new VM_Field(callingClass, memRef, jnodeField.getModifiers(), jnodeField);
+ VM_Field jikesField = new VM_Field(declaringClass, memRef, jnodeField.getModifiers(), jnodeField);
return jikesField;
}
public VmField getJnodeField() {
- return jnodeField;
+ return (VmField)jnodeMember;
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_MemberReference.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_MemberReference.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_MemberReference.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -272,7 +272,7 @@
}
if (isFieldReference() && thisClass.isResolved() &&
- thisClass.hasClassInitializerMethod()) {
+ thisClass.getClassInitializerMethod()==null) {
// No dynamic linking code is required to access this field
// because its size and offset is known and its class has no static
// initializer, therefore its value need not be specially initialized
@@ -292,9 +292,9 @@
// This member needs size and offset to be computed, or its class's static
// initializer needs to be run when the member is first "touched", so
// dynamic linking code is required to access the member.
- this.resolveMember();
- return false;
- //return true;
+// this.resolveMember();
+// return false;
+ return true;
}
public final int hashCode() {
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Method.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Method.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Method.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -24,12 +24,9 @@
VM_CompiledMethod currentCompiledMethod;
- final VmMethod jnodeMethod;
-
protected VM_Method(VM_Class declaringClass, VM_MemberReference memRef,
int modifiers, VM_TypeReference[] exceptionTypes, VmMethod method) {
super(declaringClass, memRef, modifiers & APPLICABLE_TO_METHODS, method);
- jnodeMethod = method;
memRef.asMethodReference().setResolvedMember(this);
this.exceptionTypes = exceptionTypes;
}
@@ -44,16 +41,16 @@
}
public final boolean hasNoInlinePragma() {
- return jnodeMethod.hasNoInlinePragma();
+ return ((VmMethod)jnodeMember).hasNoInlinePragma();
}
public final boolean isSynchronized(){
- return jnodeMethod.isSynchronized();
+ return ((VmMethod)jnodeMember).isSynchronized();
}
public final boolean isStatic() {
- return jnodeMethod.isStatic();
+ return jnodeMember.isStatic();
}
public void invalidateCompiledMethod(VM_CompiledMethod cm) {
@@ -64,15 +61,15 @@
}
public boolean isObjectInitializer() {
- return jnodeMethod.isConstructor();
+ return ((VmMethod)jnodeMember).isConstructor();
}
public boolean isNative() {
- return jnodeMethod.isNative();
+ return ((VmMethod)jnodeMember).isNative();
}
public boolean isAbstract() {
- return jnodeMethod.isAbstract();
+ return ((VmMethod)jnodeMember).isAbstract();
}
public boolean mayWrite(VM_Field f) {
@@ -80,19 +77,19 @@
}
public boolean isInterruptible() {
- return !jnodeMethod.isUninterruptible();
+ return !((VmMethod)jnodeMember).isUninterruptible();
}
public boolean isFinal() {
- return jnodeMethod.isFinal();
+ return jnodeMember.isFinal();
}
public boolean hasInlinePragma() {
- return jnodeMethod.hasInlinePragma();
+ return ((VmMethod)jnodeMember).hasInlinePragma();
}
public boolean isClassInitializer() {
- return jnodeMethod.isInitializer();
+ return ((VmMethod)jnodeMember).isInitializer();
}
public boolean isCompiled() {
@@ -152,15 +149,15 @@
}
public VmMethod getJnodeMethod() {
- return jnodeMethod;
+ return ((VmMethod)jnodeMember);
}
public int getSelector() {
- return jnodeMethod.getSelector();
+ return ((VmMethod)jnodeMember).getSelector();
}
public Offset getTibOffset() {
- return Offset.fromIntZeroExtend(((VmInstanceMethod)jnodeMethod).getTibOffset());
+ return Offset.fromIntZeroExtend(((VmInstanceMethod)jnodeMember).getTibOffset());
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_NormalMethod.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_NormalMethod.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_NormalMethod.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -169,7 +169,8 @@
*/
@Uninterruptible
public final int getLocalWords() {
- return jnodeMethod.getArgSlotCount() + jnodeMethod.getBytecode().getNoLocals();
+ return ((VmMethod)jnodeMember).getArgSlotCount()
+ + ((VmMethod)jnodeMember).getBytecode().getNoLocals();
}
/**
@@ -177,7 +178,7 @@
*/
public final int getOperandWords() throws UninterruptiblePragma {
//return jnodeMethod.getBytecode().getNoLocals();
- return jnodeMethod.getBytecode().getMaxStack();
+ return ((VmMethod)jnodeMember).getBytecode().getMaxStack();
}
/**
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Primitive.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Primitive.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Primitive.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -36,8 +36,6 @@
public final class VM_Primitive extends VM_Type implements VM_Constants,
VM_ClassLoaderConstants {
- final VmPrimitiveClass<?> jnodePrimitive;
-
private static final boolean NOT_REACHED = false;
/**
@@ -101,7 +99,6 @@
*/
VM_Primitive(VM_TypeReference tr, VmPrimitiveClass<?> primitive) {
super(tr, primitive);
- this.jnodePrimitive = primitive;
depth = 0;
acyclic = true; // All primitives are inherently acyclic
byte code = getDescriptor().parseForTypeCode();
@@ -168,7 +165,10 @@
}
@Override
- public void resolve() {}
+ public void resolve() {
+ jnodeType.prepare();
+ jnodeType.prepareForInstantiation();
+ }
@Override
public void instantiate() {}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Type.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Type.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Type.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -52,9 +52,6 @@
final protected VmType<?> jnodeType;
protected Offset thinLockOffset;// = VM_ObjectModel.defaultThinLockOffset();
-
- private boolean inBootImage = false;
-
public static VM_Type JavaLangObjectType;
public static VM_Array JavaLangObjectArrayType;
public static VM_Type JavaLangThrowableType;
@@ -201,7 +198,7 @@
* Is this class part of the virtual machine's boot image?
*/
public final boolean isInBootImage() throws UninterruptiblePragma {
- return inBootImage;
+ return jnodeType.isInBootImage();
}
public final Class getClassForType() {
@@ -271,7 +268,7 @@
* Primitives are always treated as "resolved".
*/
public final boolean isResolved() {
- return jnodeType.isCpRefsResolved();
+ return jnodeType.isPrepared();
}
public final boolean isJavaLangObjectType() { return this==JavaLangObjectType; }
public final int getId() { return id; }
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_Debug.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_Debug.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_Debug.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -599,45 +599,46 @@
"r: DOUBLE_CMPL(r,r)", // 595
"r: DOUBLE_CMPG(r,r)", // 596
"stm: GOTO", // 597
- "r: JNODE_ISOLATED_STATICS", // 598
- "r: JNODE_SHARED_STATICS", // 599
- "r: JNODE_PROCESSOR", // 600
- "stm: RETURN(NULL)", // 601
- "stm: RETURN(INT_CONSTANT)", // 602
- "stm: RETURN(r)", // 603
- "stm: RETURN(LONG_CONSTANT)", // 604
- "stm: RETURN(fp0)", // 605
- "stm: RETURN(pfp0)", // 606
- "r: CALL(r,any)", // 607
- "r: CALL(BRANCH_TARGET,any)", // 608
- "r: CALL(INT_LOAD(riv,riv),any)", // 609
- "r: SYSCALL(r,any)", // 610
- "r: SYSCALL(INT_LOAD(riv,riv),any)", // 611
- "r: GET_CAUGHT_EXCEPTION", // 612
- "stm: SET_CAUGHT_EXCEPTION(r)", // 613
- "stm: ROUND_TO_ZERO", // 614
- "stm: CLEAR_FLOATING_POINT_STATE", // 615
- "r: GET_TIME_BASE", // 616
- "stm: YIELDPOINT_OSR(any,any)", // 617
- "load32: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_OR_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))", // 618
- "r: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_OR_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))", // 619
- "load32: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_SHL_ACC(INT_MOVE(INT_OR_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_CONSTANT))", // 620
- "r: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_SHL_ACC(INT_MOVE(INT_OR_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_CONSTANT))", // 621
- "r: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_OR_ACC(INT_MOVE(INT_SHL_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT))", // 622
- "r: INT_OR_ACC(INT_MOVE(INT_SHL_ACC(INT_OR_ACC(INT_MOVE(INT_SHL_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_CONSTANT)),INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT)),INT_OR_ACC(INT_MOVE(INT_SHL_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_CONSTANT)),INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)))", // 623
- "r: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_OR_ACC(INT_MOVE(INT_SHL_ACC(INT_AND_ACC(r,INT_CONSTANT),INT_CONSTANT)),INT_SHL_ACC(INT_AND_ACC(r,INT_CONSTANT),INT_CONSTANT)),INT_SHR_ACC(INT_AND_ACC(r,INT_CONSTANT),INT_CONSTANT))),INT_USHR_ACC(r,INT_CONSTANT))", // 624
- "r: BOOLEAN_CMP_INT(INT_AND_ACC(r,INT_SHL_ACC(INT_MOVE(INT_CONSTANT),riv)),INT_CONSTANT)", // 625
- "boolcmp: BOOLEAN_CMP_INT(INT_AND_ACC(r,INT_SHL_ACC(INT_MOVE(INT_CONSTANT),riv)),INT_CONSTANT)", // 626
- "r: BOOLEAN_CMP_INT(INT_AND_ACC(INT_SHL_ACC(INT_MOVE(INT_CONSTANT),riv),r),INT_CONSTANT)", // 627
- "boolcmp: BOOLEAN_CMP_INT(INT_AND_ACC(INT_SHL_ACC(INT_MOVE(INT_CONSTANT),riv),r),INT_CONSTANT)", // 628
- "r: BOOLEAN_CMP_INT(INT_AND_ACC(INT_SHR_ACC(r,riv),INT_CONSTANT),INT_CONSTANT)", // 629
- "boolcmp: BOOLEAN_CMP_INT(INT_AND_ACC(INT_MOVE(INT_SHR_ACC(r,riv)),INT_CONSTANT),INT_CONSTANT)", // 630
- "r: BOOLEAN_CMP_INT(INT_AND_ACC(INT_SHR_ACC(r,riv),INT_CONSTANT),INT_CONSTANT)", // 631
- "boolcmp: BOOLEAN_CMP_INT(INT_AND_ACC(INT_MOVE(INT_SHR_ACC(r,riv)),INT_CONSTANT),INT_CONSTANT)", // 632
- "r: BOOLEAN_CMP_INT(INT_AND_ACC(INT_USHR_ACC(r,riv),INT_CONSTANT),INT_CONSTANT)", // 633
- "boolcmp: BOOLEAN_CMP_INT(INT_AND_ACC(INT_USHR_ACC(r,riv),INT_CONSTANT),INT_CONSTANT)", // 634
- "r: BOOLEAN_CMP_INT(INT_AND_ACC(INT_USHR_ACC(r,riv),INT_CONSTANT),INT_CONSTANT)", // 635
- "boolcmp: BOOLEAN_CMP_INT(INT_AND_ACC(INT_USHR_ACC(r,riv),INT_CONSTANT),INT_CONSTANT)", // 636
+ "r: JNODE_IMT_SELECTOR", // 598
+ "r: JNODE_ISOLATED_STATICS", // 599
+ "r: JNODE_SHARED_STATICS", // 600
+ "r: JNODE_PROCESSOR", // 601
+ "stm: RETURN(NULL)", // 602
+ "stm: RETURN(INT_CONSTANT)", // 603
+ "stm: RETURN(r)", // 604
+ "stm: RETURN(LONG_CONSTANT)", // 605
+ "stm: RETURN(fp0)", // 606
+ "stm: RETURN(pfp0)", // 607
+ "r: CALL(r,any)", // 608
+ "r: CALL(BRANCH_TARGET,any)", // 609
+ "r: CALL(INT_LOAD(riv,riv),any)", // 610
+ "r: SYSCALL(r,any)", // 611
+ "r: SYSCALL(INT_LOAD(riv,riv),any)", // 612
+ "r: GET_CAUGHT_EXCEPTION", // 613
+ "stm: SET_CAUGHT_EXCEPTION(r)", // 614
+ "stm: ROUND_TO_ZERO", // 615
+ "stm: CLEAR_FLOATING_POINT_STATE", // 616
+ "r: GET_TIME_BASE", // 617
+ "stm: YIELDPOINT_OSR(any,any)", // 618
+ "load32: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_OR_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))", // 619
+ "r: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_OR_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))", // 620
+ "load32: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_SHL_ACC(INT_MOVE(INT_OR_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_CONSTANT))", // 621
+ "r: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_SHL_ACC(INT_MOVE(INT_OR_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_CONSTANT))", // 622
+ "r: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_OR_ACC(INT_MOVE(INT_SHL_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_AND_ACC(BYTE...
[truncated message content] |
|
From: <ans...@us...> - 2007-01-16 23:20:02
|
Revision: 3082
http://jnode.svn.sourceforge.net/jnode/?rev=3082&view=rev
Author: ansari82
Date: 2007-01-16 15:20:01 -0800 (Tue, 16 Jan 2007)
Log Message:
-----------
Large commit of all current fixes to make boot image compile
Modified Paths:
--------------
branches/jikesRVM/all/conf/x86/menu-cdrom.lst
branches/jikesRVM/all/conf/x86/menu.lst
branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java
branches/jikesRVM/builder/src/builder/org/jnode/build/VMwareBuilderTask.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.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_Runtime.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Class.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_MemberReference.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_MethodReference.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Primitive.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Type.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_TypeReference.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_Helpers.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ClassLoaderProxy.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DynamicTypeCheckExpansion.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_GenericStackManager.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_NormalizeConstants.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptCompiledMethod.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_ClassConstantOperand.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_RegisterPool.java
branches/jikesRVM/core/src/native/x86/ints32.asm
branches/jikesRVM/core/src/native/x86/vm-ints.asm
branches/jikesRVM/core/src/native/x86/vm.asm
branches/jikesRVM/core/src/test/org/jnode/test/core/CompilerTest.java
Modified: branches/jikesRVM/all/conf/x86/menu-cdrom.lst
===================================================================
(Binary files differ)
Modified: branches/jikesRVM/all/conf/x86/menu.lst
===================================================================
--- branches/jikesRVM/all/conf/x86/menu.lst 2007-01-16 23:17:32 UTC (rev 3081)
+++ branches/jikesRVM/all/conf/x86/menu.lst 2007-01-16 23:20:01 UTC (rev 3082)
@@ -4,7 +4,7 @@
# ---------------------------
title JNode (default)
-kernel (hd0,0)/jnode32.gz mp=no
+kernel (hd0,0)/jnode32.gz mp=no kdb
module (hd0,0)/default.jgz
# ---------------------------
Modified: branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java
===================================================================
--- branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java 2007-01-16 23:17:32 UTC (rev 3081)
+++ branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java 2007-01-16 23:20:01 UTC (rev 3082)
@@ -213,8 +213,6 @@
do {
again = false;
oldCount = clsMgr.getLoadedClassCount();
- for (VmType< ? > vmClass : clsMgr.getLoadedClasses())
- vmClass.setInBootImage(true);
for (VmType< ? > vmClass : clsMgr.getLoadedClasses()) {
vmClass.link();
final boolean compHigh = isCompileHighOptLevel(vmClass);
@@ -550,7 +548,8 @@
// Load the jarfile as byte-array
// copyJarFile(blockedObjects, piRegistry);
-
+ for (VmType< ? > vmClass : clsMgr.getLoadedClasses())
+ vmClass.setInBootImage(true);
// Now emit all object images to the actual image
emitObjects(os, arch, blockedObjects, false);
Modified: branches/jikesRVM/builder/src/builder/org/jnode/build/VMwareBuilderTask.java
===================================================================
--- branches/jikesRVM/builder/src/builder/org/jnode/build/VMwareBuilderTask.java 2007-01-16 23:17:32 UTC (rev 3081)
+++ branches/jikesRVM/builder/src/builder/org/jnode/build/VMwareBuilderTask.java 2007-01-16 23:20:01 UTC (rev 3082)
@@ -111,7 +111,7 @@
if((logFile != null) && (logFile.trim().length() != 0))
{
- put(w, "serial0.present", "FALSE");
+ put(w, "serial0.present", "TRUE");
put(w, "serial0.fileType", "file");
put(w, "serial0.fileName", logFile);
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java 2007-01-16 23:17:32 UTC (rev 3081)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java 2007-01-16 23:20:01 UTC (rev 3082)
@@ -92,9 +92,9 @@
OPT_CompilationPlan compPlan =
new OPT_CompilationPlan(jikesMethod, optimizationPlan, null, options);
//Compile with Jikes
- VM_CompiledMethod jikescm = optCompileWithFallBackInternal(jikesMethod, compPlan);
+ /*VM_CompiledMethod jikes*/cm = optCompileWithFallBackInternal(jikesMethod, compPlan);
//Build necessary result for JNode VM from Jikes compiled output
- cm = ((VM_OptCompiledMethod)jikescm).buildJnodeCM((X86Assembler)nos, getEntryPoints());
+ /*cm = */((VM_OptCompiledMethod)cm).buildJnodeCM((X86Assembler)nos, getEntryPoints());
//Uninitialise Jikes' VM_Magic
// VM_Magic.uninit();
compilationInProgress = false;
@@ -200,15 +200,17 @@
}
@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"};
+ 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"
+ };
}
//-------------------------------------------------------------------------------------------//
@@ -219,62 +221,76 @@
public static boolean compilableMethod(VmMethod vmMethod) {
if (
-// && !( vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.x86.compiler.l1a.X86Byte")
-// && vmMethod.getName().contains("other"))
- vmMethod.getDeclaringClass().getName().startsWith("java.io")
- || vmMethod.getDeclaringClass().getName().startsWith("java.lang")
-// && !(vmMethod.getDeclaringClass().getName().startsWith("java.lang.ClassLoader")
-// && vmMethod.getName().contains("loadClass"))
-// && !(vmMethod.getDeclaringClass().getName().startsWith("java.lang.String")
-// && vmMethod.getName().contains("init"))
- || vmMethod.getDeclaringClass().getName().startsWith("java.net")
- || vmMethod.getDeclaringClass().getName().startsWith("java.nio")
- || vmMethod.getDeclaringClass().getName().startsWith("java.security")
- && !vmMethod.getDeclaringClass().getName().startsWith("java.security.Permissions")
- || vmMethod.getDeclaringClass().getName().startsWith("java.util")
- || vmMethod.getDeclaringClass().getName().startsWith("javax")
- || vmMethod.getDeclaringClass().getName().startsWith("gnu.classpath")
- || vmMethod.getDeclaringClass().getName().startsWith("gnu.java")
- || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.assembler")
- && !vmMethod.getDeclaringClass().getName().startsWith("org.jnode.assembler.x86.X86B")
- || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.boot.")
- && !vmMethod.getDeclaringClass().getName().startsWith("org.jnode.boot.Main")
- || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.naming")
- || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.plugin")
- || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.protocol")
- || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.security")
- || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.system")
- || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.util")
- || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.bytecode")
- || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.classmgr")
- || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.compiler")
- || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.isolate")
- || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.scheduler")
- || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.x86.compiler")
- && !vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.x86.compiler.l1a.X86Byte")
-// || (vmMethod.getDeclaringClass().getName().lastIndexOf('.') > 0 ?
-// vmMethod.getDeclaringClass().getName().substring(0,
-// vmMethod.getDeclaringClass().getName().lastIndexOf('.'))
-// : "").contentEquals("org.jnode.vm")
+// vmMethod.getDeclaringClass().getName().startsWith("java.io")
+// || vmMethod.getDeclaringClass().getName().startsWith("java.lang")
+// || vmMethod.getDeclaringClass().getName().startsWith("java.net")
+// || vmMethod.getDeclaringClass().getName().startsWith("java.nio")
+// || vmMethod.getDeclaringClass().getName().startsWith("java.security")
+// || vmMethod.getDeclaringClass().getName().startsWith("java.util")
+// || vmMethod.getDeclaringClass().getName().startsWith("javax")
+// || vmMethod.getDeclaringClass().getName().startsWith("gnu.classpath")
+// || vmMethod.getDeclaringClass().getName().startsWith("gnu.java")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.assembler")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.boot")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.naming")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.plugin")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.protocol")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.security")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.system")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.util")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.bytecode")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.classmgr")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.compiler")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.isolate")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.scheduler")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.x86.compiler")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm")
+// && !(
+// vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.VmSystemClassLoader")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.VmReflection")
+// && vmMethod.getName().contentEquals("invoke") //manipulates ESP, which Jikes needs to control
+// )
+
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.A")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.B")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.C")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.H")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.I")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.J")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.L")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.M")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.O")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.R")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.S")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.U")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.Vi")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.VmA")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.VmE")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.VmJ")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.VmM")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.VmP")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.VmR")
+// && !vmMethod.getName().contentEquals("invoke") //manipulates ESP, which Jikes needs to control
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.VmSt")
+// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.VmSystem")
+ vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.VmSystemClassLoader$")
+ || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.VmSystemClassLoader")
+//
+ && (
+ vmMethod.getName().contains("init")
+ || vmMethod.getName().startsWith("a")
+ || vmMethod.getName().startsWith("c")
+ || vmMethod.getName().startsWith("d")
+ || vmMethod.getName().startsWith("f")
+ || vmMethod.getName().startsWith("g")
+ || vmMethod.getName().startsWith("i")
+ || vmMethod.getName().startsWith("l")
+ || vmMethod.getName().startsWith("p")
+ || vmMethod.getName().startsWith("r")
+ || vmMethod.getName().startsWith("s")
+
+ )
-
-// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.scheduler.I")
-// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.scheduler.M")
-// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.scheduler.P")
-// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.scheduler.S")
-// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.scheduler.VmP")
-// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.scheduler.VmS")
-// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.scheduler.VmThreadQ")
-// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.scheduler.VmThreadV")
-// || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.scheduler.VmThread")
-// && (
-// vmMethod.isStatic()
-// || vmMethod.getName().startsWith("a")
-// || vmMethod.getName().startsWith("c")
-// || vmMethod.getName().startsWith("d")
-// || vmMethod.getName().startsWith("g")
-//
-// )
)
{
return true;
@@ -330,7 +346,7 @@
//Try and get from constant pool, should be there.
if(this instanceof JikesRVMOptCompiler) {
- int catchid = cm.getJikesCM().getETable()[i*4+3];
+ int catchid = ((VM_CompiledMethod)cm)/*.getJikesCM()*/.getETable()[i*4+3];
String jnodeType = VM_Type.getVM_Type(catchid).getJnodeType().getName();
for(int j = 0; j < bc.getCP().getLength(); j++) {
if (bc.getCP().getAny(j) instanceof VmConstClass &&
@@ -450,7 +466,7 @@
//Try and get from constant pool, should be there.
if(this instanceof JikesRVMOptCompiler) {
- int catchid = cm.getJikesCM().getETable()[i*4+3];
+ int catchid = ((VM_CompiledMethod)cm)/*.getJikesCM()*/.getETable()[i*4+3];
String jnodeType = VM_Type.getVM_Type(catchid).getJnodeType().getName();
for(int j = 0; j < bc.getCP().getLength(); j++) {
if (bc.getCP().getAny(j) instanceof VmConstClass &&
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_CompiledMethod.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_CompiledMethod.java 2007-01-16 23:17:32 UTC (rev 3081)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_CompiledMethod.java 2007-01-16 23:20:01 UTC (rev 3082)
@@ -1,5 +1,7 @@
package com.ibm.JikesRVM;
+import java.util.Enumeration;
+
import org.jnode.assembler.Label;
import org.jnode.assembler.NativeStream;
import org.jnode.assembler.x86.X86Assembler;
@@ -25,16 +27,23 @@
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.classloader.VM_TypeReference;
import com.ibm.JikesRVM.opt.VM_OptCompiledMethod;
+import com.ibm.JikesRVM.opt.ir.MIR_Move;
import com.ibm.JikesRVM.opt.ir.OPT_BasicBlock;
import com.ibm.JikesRVM.opt.ir.OPT_IR;
import com.ibm.JikesRVM.opt.ir.OPT_Instruction;
import com.ibm.JikesRVM.opt.ir.OPT_InstructionEnumeration;
+import com.ibm.JikesRVM.opt.ir.OPT_Operand;
import com.ibm.JikesRVM.opt.ir.OPT_Operators;
+import com.ibm.JikesRVM.opt.ir.OPT_PhysicalRegisterSet;
+import com.ibm.JikesRVM.opt.ir.OPT_Register;
+import com.ibm.JikesRVM.opt.ir.OPT_RegisterOperand;
+import com.ibm.JikesRVM.opt.ir.OPT_StackLocationOperand;
-public abstract class VM_CompiledMethod implements X86CompilerConstants {
+public abstract class VM_CompiledMethod extends CompiledMethod implements X86CompilerConstants {
- protected CompiledMethod jnodecm;
+ //protected CompiledMethod jnodecm;
public static final int optlevel = 3;
@@ -52,7 +61,7 @@
public final static int NUM_COMPILER_TYPES = 4;
- protected final int cmid;
+// protected final int cmid;
/*
* constants for bitField1
@@ -83,8 +92,9 @@
*/
protected int bitField1;
- public VM_CompiledMethod(int id, VM_Method m) {
- cmid = id;
+ public VM_CompiledMethod(VM_Method m) {
+ super(optlevel);
+// cmid = id;
method = m;
}
@@ -94,7 +104,7 @@
* Return the compiled method id for this compiled method
*/
public int getId() {
- return cmid;
+ return getCompiledCodeId();//return cmid;
}
/**
@@ -362,13 +372,7 @@
return null;
}
- public CompiledMethod getJnodeCompiledMethod() {
- return jnodecm;
- }
- public void setJnodeCompiledMethod(CompiledMethod jnodeCompiledMethod) {
- this.jnodecm = jnodeCompiledMethod;
- }
/* This is a hacked method for porting the opt compiler into Jnode.
* It only does what is needed in terms of the port, be very careful when using it.
@@ -378,7 +382,7 @@
//Create jikes method based on jnode method
VM_NormalMethod jikesmethod = (VM_NormalMethod)VM_Method.buildFromJnodeMethod(jnodecm.getMethod());
//Create jikes compiled-method based on jnode compiled-method and jikes method above
- VM_CompiledMethod jikescm = new VM_OptCompiledMethod(jnodecm.getId(), jikesmethod);
+ VM_CompiledMethod jikescm = new VM_OptCompiledMethod(jikesmethod);
//Copy machine code if it exists
if (jnodecm.getCompiledCode() != null) {
@@ -418,10 +422,10 @@
return eTable;
}
- public CompiledMethod buildJnodeCM(X86Assembler os, EntryPoints ep) {
+ public void/*CompiledMethod*/ buildJnodeCM(X86Assembler os, EntryPoints ep) {
final VmMethod jnodeMethod = (VmMethod)method.getJnodeMember();
- jnodecm.setJikesCM(this);
+// jnodecm.setJikesCM(this);
final VmMethodCode code = new VmMethodCode();
final Label startLabel = new Label(jnodeMethod.getMangledName()+"_"+"$$start");
final Label startCodeLabel = new Label(jnodeMethod.getMangledName()+"_"+"$$code");
@@ -430,12 +434,13 @@
final int count;
if (eTable != null) count = eTable.length >> 2; else count = 0;
- CompiledExceptionHandler[] ceh = new CompiledExceptionHandler[count];
+ CompiledExceptionHandler[] ceh = null;
+ if(count != 0) ceh = new CompiledExceptionHandler[count];
for(int i = 0; i < count; i++) ceh[i] = new CompiledExceptionHandler();
codeObject = os.startObject(ep.getVmMethodCodeClass());
os.setObjectRef(code);
- jnodecm.setCodeStart(os.setObjectRef(startLabel));
+ /*jnodecm.*/setCodeStart(os.setObjectRef(startLabel));
final int startOffset = os.getLength();
// Set startCode label
@@ -467,7 +472,7 @@
}
}
}
- jnodecm.setExceptionHandlers(ceh);
+ /*jnodecm.*/setExceptionHandlers(ceh);
}
//Build bc-address mapping
@@ -484,7 +489,7 @@
bci = i.position.bcIndex;
}
if(bci >= 0 && mci >= ((VM_OptCompiledMethod)this).getEndPrologueOffset() && depth >= 0)
- jnodecm.add(jnodeMethod, bci, mci+offset, 0);
+ /*jnodecm.*/add(jnodeMethod, bci, mci+offset, 0);
//Print final IR if outputting to text instead of binary/machine code
if(os.isTextStream()) {
@@ -500,12 +505,31 @@
// Now create the default exception handler
Label handlerLabel = new Label(jnodeMethod.getMangledName()+"_$$def-ex-handler");
- jnodecm.setDefExceptionHandler(os.setObjectRef(handlerLabel));
+ /*jnodecm.*/setDefExceptionHandler(os.setObjectRef(handlerLabel));
if(temp_ir.stackManager.frameIsRequired()) {
- int frameSize = temp_ir.stackManager.getFrameFixedSize()-INTSIZE;
- os.writeLEA(X86Register.ESP, X86Register.EBP, -frameSize);
- os.writePOP(X86Register.EBX);
- os.writePOP(X86Register.ESI);
+ int frameSize = temp_ir.stackManager.getFrameFixedSize();
+ os.writeLEA(X86Register.ESP, X86Register.EBP, +INTSIZE);
+
+ OPT_PhysicalRegisterSet phys = temp_ir.regpool.getPhysicalRegisterSet();
+ int nNonvolatileGPRS = temp_ir.compiledMethod.getNumberOfNonvolatileGPRs();
+
+ int n = nNonvolatileGPRS - 1;
+ for (Enumeration e = phys.enumerateNonvolatileGPRsBackwards();
+ e.hasMoreElements() && n >= 0 ; n--) {
+ OPT_Register nv = (OPT_Register)e.nextElement();
+ int nvoffset = temp_ir.stackManager.getNonvolatileGPROffset(n);
+// OPT_Operand M = new OPT_StackLocationOperand(true, -offset, 4);
+ os.writeMOV(VM_SizeConstants.BYTES_IN_ADDRESS,
+ getJnodeRegister(nv, phys), getJnodeRegister(phys.getESP(),
+ phys), -nvoffset);
+// os.writeMOV(getJnodeRegister(nv, phys), X86Register.ESP, nvoffset);
+// inst.insertBefore(MIR_Move.create(IA32_MOV, new OPT_RegisterOperand(nv, VM_TypeReference.Int), M));
+
+
+
+// os.writePOP(X86Register.EBX);
+// os.writePOP(X86Register.ESI);
+ }
}
//Restore monitor lock if necessary (needed because of def-exhandling)
if(method.isSynchronized()) {
@@ -527,7 +551,7 @@
os.writePOP(adx);
os.writePOP(aax);
}
- os.writeLEA(X86Register.ESP, X86Register.EBP, 4);
+// os.writeLEA(X86Register.ESP, X86Register.EBP, 4);
os.writePOP(X86Register.EBP);
final int soffset = (VmArray.DATA_OFFSET * 4) + (X86JumpTable.VM_ATHROW_NOTRACE_IDX << 2);
os.writeJMP(X86Register.EDI, soffset);
@@ -535,12 +559,36 @@
//Finish off
codeObject.markEnd();
- jnodecm.setCodeEnd(os.setObjectRef(endLabel));
+ /*jnodecm.*/setCodeEnd(os.setObjectRef(endLabel));
temp_ir = null;
- return jnodecm;
+ //return jnodecm;
}
+ private X86Register.GPR getJnodeRegister(OPT_Register r, OPT_PhysicalRegisterSet phys) {
+ if(r==phys.getEAX())
+ return X86Register.EAX;
+ else if(r==phys.getEBX())
+ return X86Register.EBX;
+ else if(r==phys.getECX())
+ return X86Register.ECX;
+ else if(r==phys.getEDX())
+ return X86Register.EDX;
+ else if(r==phys.getEDI())
+ return X86Register.EDI;
+ else if(r==phys.getESI())
+ return X86Register.ESI;
+ else if(r==phys.getESP())
+ return X86Register.ESP;
+ else if(r==phys.getEBP())
+ return X86Register.EBP;
+ else {
+ try {throw new Exception("VM_CompiledMethod: getJnodeRegister: Unknown reg: "+r.toString());}
+ catch(Exception e){System.out.println(e.getMessage()); System.exit(-1);}
+ }
+ return null;
+ }
+
public final int getSharedStaticsOffset(VmSharedStaticsEntry entry, X86Assembler os) {
if (os.isCode32()) {
return (VmArray.DATA_OFFSET * 4)
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_CompiledMethods.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_CompiledMethods.java 2007-01-16 23:17:32 UTC (rev 3081)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_CompiledMethods.java 2007-01-16 23:20:01 UTC (rev 3082)
@@ -16,10 +16,7 @@
public static VM_CompiledMethod createCompiledMethod(VM_Method m,
int compilerType) {
VM._assert(jnodeCompiledMethods != null);
- CompiledMethod jnodecm = new CompiledMethod(compilerType);
- int id = jnodecm.getCompiledCodeId();
- VM_CompiledMethod jikescm = new VM_OptCompiledMethod(id, m);
- jikescm.setJnodeCompiledMethod(jnodecm);
+ VM_CompiledMethod jikescm = new VM_OptCompiledMethod(m);
return jikescm;
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Runtime.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Runtime.java 2007-01-16 23:17:32 UTC (rev 3081)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Runtime.java 2007-01-16 23:20:01 UTC (rev 3082)
@@ -48,7 +48,7 @@
if (!rhs.isResolved()) {
rhs.resolve();
}
- return lhs.getClass().isAssignableFrom(rhs.getClass());
+ return lhs.getJnodeType().isAssignableFrom(rhs.getJnodeType());
}
public static Object buildMultiDimensionalArray(int methodId, int[] dimensions, VM_Array type) {
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Class.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Class.java 2007-01-16 23:17:32 UTC (rev 3081)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Class.java 2007-01-16 23:20:01 UTC (rev 3082)
@@ -122,6 +122,33 @@
}
}
+ public final double getDoubleLiteral(int i) {
+ Object cpEntry = jnodeType.getCP().getAny(i);
+ return ((VmConstDouble)cpEntry).doubleValue();
+ }
+
+ public final long getLongLiteral(int i) {
+ Object cpEntry = jnodeType.getCP().getAny(i);
+ return ((VmConstLong)cpEntry).longValue();
+ }
+
+ public final float getFloatLiteral(int i) {
+ Object cpEntry = jnodeType.getCP().getAny(i);
+ return ((VmConstFloat)cpEntry).floatValue();
+ }
+
+ public final int getIntLiteral(int i) {
+ Object cpEntry = jnodeType.getCP().getAny(i);
+ return ((VmConstInt)cpEntry).intValue();
+ }
+
+ public final String getStringLiteral(int i) {
+ Object cpEntry = jnodeType.getCP().getAny(i);
+ VmSharedStatics vmStatics = jnodeType.getLoader().getSharedStatics();
+ int val = ((VmConstString)cpEntry).getSharedStaticsIndex();
+ return (String)vmStatics.getRawObject(val);
+ }
+
/**
* Get offset of a literal constant, in bytes.
* Offset is with respect to virtual machine's "table of contents" (jtoc).
@@ -129,57 +156,14 @@
public final Offset getLiteralOffset(int i) {
Object cpEntry = jnodeType.getCP().getAny(i);
- if(cpEntry instanceof VmConstDouble){
- double val = ((VmConstDouble)cpEntry).doubleValue();
- long raw_val = Double.doubleToLongBits(val);
- int idx = VM_Statics.findOrCreateDoubleLiteral(raw_val);
- return Offset.fromIntZeroExtend(idx);
- }
- else if(cpEntry instanceof VmConstLong) {
- long val = ((VmConstLong)cpEntry).longValue();
- int idx = VM_Statics.findOrCreateLongLiteral(val);
- return Offset.fromIntZeroExtend(idx);
- }
- else if(cpEntry instanceof VmConstFloat) {
- float val = ((VmConstFloat)cpEntry).floatValue();
- int raw_val = Float.floatToIntBits(val);
- int idx = VM_Statics.findOrCreateFloatLiteral(raw_val);
- return Offset.fromIntZeroExtend(idx);
- }
- else if(cpEntry instanceof VmConstInt) {
- int val = ((VmConstInt)cpEntry).intValue();
- int idx = VM_Statics.findOrCreateIntLiteral(val);
- return Offset.fromIntZeroExtend(idx);
- }
- else if(cpEntry instanceof VmConstString) {
+ if(cpEntry instanceof VmConstString) {
VmSharedStatics vmStatics = jnodeType.getLoader().getSharedStatics();
int val = ((VmConstString)cpEntry).getSharedStaticsIndex();
- String str = (String)vmStatics.getRawObject(val);
- VM_Atom atom = VM_Atom.findOrCreateAsciiAtom(str);
- try {
- VM_Statics.findOrCreateStringLiteral(atom, str);
- return Offset.fromIntZeroExtend(val*4 + VmArray.DATA_OFFSET*4);
- }
- catch (Exception e) {
- e.printStackTrace();
- }
+ return Offset.fromIntZeroExtend(val*4 + VmArray.DATA_OFFSET*4);
}
- else if(cpEntry instanceof VmConstClass) {
- VM_Type jikesType = null;
- if(((VmConstClass)cpEntry).isResolved()){
- jikesType = VM_Type.buildFromJnodeType(((VmConstClass)cpEntry).getResolvedVmClass());
- } else {
- ((VmConstClass)cpEntry).resolve(this.jnodeType.getLoader());
- jikesType = VM_Type.buildFromJnodeType(((VmConstClass)cpEntry).getResolvedVmClass());
- }
- int id = jikesType.getTypeRef().getId();
- int idx = VM_Statics.findOrCreateClassLiteral(id);
- ...
[truncated message content] |
|
From: <ans...@us...> - 2007-01-16 23:32:48
|
Revision: 3083
http://jnode.svn.sourceforge.net/jnode/?rev=3083&view=rev
Author: ansari82
Date: 2007-01-16 15:32:46 -0800 (Tue, 16 Jan 2007)
Log Message:
-----------
Added support for explicit opt and fallback compilers, and use them for boot image and runtime compilation
Modified Paths:
--------------
branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java
branches/jikesRVM/core/src/core/org/jnode/vm/LoadCompileService.java
branches/jikesRVM/core/src/core/org/jnode/vm/VmArchitecture.java
branches/jikesRVM/core/src/core/org/jnode/vm/x86/VmX86Architecture.java
Modified: branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java
===================================================================
--- branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java 2007-01-16 23:20:01 UTC (rev 3082)
+++ branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java 2007-01-16 23:32:46 UTC (rev 3083)
@@ -197,15 +197,6 @@
throws ClassNotFoundException {
final NativeCodeCompiler[] compilers = arch.getCompilers();
final int optLevel = compilers.length - 1;
- // Use the most optimizing compiler here
- final NativeCodeCompiler compiler = compilers[optLevel];
- NativeCodeCompiler backup, test = null;
- for(int i = 0; i < compilers.length; i++) {
- if(compilers[i] instanceof X86Level1ACompiler) {
- test = compilers[i]; break;
- }
- }
- if(test==null)backup=null; else backup=test;
int oldCount;
int newCount;
@@ -233,11 +224,11 @@
for (int i = 0; i < cnt; i++) {
final VmMethod method = vmClass.getDeclaredMethod(i);
mcnt++;
- if(compiler instanceof JikesRVMOptCompiler && !JikesRVMOptCompiler.compilableMethod(method)) {
- backup.compileBootstrap(method, os, optLevel);
+ if(method.hasNoOptCompilePragma() || !JikesRVMOptCompiler.compilableMethod(method)) {
+ arch.getFallbackCompiler().compileBootstrap(method, os, optLevel);
}
else {
- compiler.compileBootstrap(method, os, optLevel);
+ arch.getOptCompiler().compileBootstrap(method, os, optLevel);
}
}
vmClass.setCompiled();
Modified: branches/jikesRVM/core/src/core/org/jnode/vm/LoadCompileService.java
===================================================================
--- branches/jikesRVM/core/src/core/org/jnode/vm/LoadCompileService.java 2007-01-16 23:20:01 UTC (rev 3082)
+++ branches/jikesRVM/core/src/core/org/jnode/vm/LoadCompileService.java 2007-01-16 23:32:46 UTC (rev 3083)
@@ -37,7 +37,8 @@
private final ObjectResolver resolver;
private final NativeCodeCompiler[] compilers;
-
+
+ private final NativeCodeCompiler optCompiler, fallbackCompiler;
private final NativeCodeCompiler[] testCompilers;
private static boolean started = false;
@@ -53,6 +54,8 @@
final VmArchitecture arch = VmMagic.currentProcessor()
.getArchitecture();
this.compilers = arch.getCompilers();
+ optCompiler = arch.getOptCompiler();
+ fallbackCompiler = arch.getFallbackCompiler();
this.testCompilers = arch.getTestCompilers();
}
@@ -207,10 +210,10 @@
index = cmps.length - 1;
}
if (vmMethod.getNativeCodeOptLevel() < optLevel) {
- if(cmps[index] instanceof JikesRVMOptCompiler &&
- !vmMethod.getDeclaringClass().getName().startsWith("org.jnode.test")
- || vmMethod.hasNoOptCompilePragma())
- cmp = cmps[index-1];
+ if(cmps[index] == optCompiler &&
+ !(vmMethod.getDeclaringClass().getName().startsWith("org.jnode.test")
+ || vmMethod.hasNoOptCompilePragma()))
+ cmp = fallbackCompiler;
else
cmp = cmps[index];
cmp.compileRuntime(vmMethod, resolver, optLevel, null);
Modified: branches/jikesRVM/core/src/core/org/jnode/vm/VmArchitecture.java
===================================================================
--- branches/jikesRVM/core/src/core/org/jnode/vm/VmArchitecture.java 2007-01-16 23:20:01 UTC (rev 3082)
+++ branches/jikesRVM/core/src/core/org/jnode/vm/VmArchitecture.java 2007-01-16 23:32:46 UTC (rev 3083)
@@ -317,4 +317,8 @@
protected VmMultiMediaSupport createMultiMediaSupport() {
return new VmJavaMultiMediaSupport();
}
+
+ //Get specific compilers
+ public abstract NativeCodeCompiler getFallbackCompiler();
+ public abstract NativeCodeCompiler getOptCompiler();
}
Modified: branches/jikesRVM/core/src/core/org/jnode/vm/x86/VmX86Architecture.java
===================================================================
--- branches/jikesRVM/core/src/core/org/jnode/vm/x86/VmX86Architecture.java 2007-01-16 23:20:01 UTC (rev 3082)
+++ branches/jikesRVM/core/src/core/org/jnode/vm/x86/VmX86Architecture.java 2007-01-16 23:32:46 UTC (rev 3083)
@@ -105,6 +105,7 @@
/** The compilers */
private final NativeCodeCompiler[] compilers;
+ private final NativeCodeCompiler optCompiler, fallbackCompiler;
/** The compilers under test */
private final NativeCodeCompiler[] testCompilers;
@@ -151,6 +152,8 @@
this.compilers[2] = new JikesRVMOptCompiler();
this.compilers[3] = this.compilers[2];
+ optCompiler = compilers[2];
+ fallbackCompiler = compilers[1];
// this.compilers[3] = this.compilers[1];
this.testCompilers = null;
@@ -453,4 +456,12 @@
return super.createMultiMediaSupport();
}
}
+
+ public NativeCodeCompiler getFallbackCompiler() {
+ return fallbackCompiler;
+ }
+
+ public NativeCodeCompiler getOptCompiler() {
+ return optCompiler;
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|