|
From: <fd...@us...> - 2010-07-11 14:27:47
|
Revision: 5756
http://jnode.svn.sourceforge.net/jnode/?rev=5756&view=rev
Author: fduminy
Date: 2010-07-11 14:27:38 +0000 (Sun, 11 Jul 2010)
Log Message:
-----------
Merge git://gitorious.org/~fduminy/jnode/maven into HEAD
Conflicts:
builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java
builder/src/builder/org/jnode/build/ObjectEmitter.java
core/src/classpath/vm/java/lang/ThreadHelper.java
core/src/core/org/jnode/assembler/x86/X86Register.java
core/src/core/org/jnode/plugin/model/PluginJar.java
core/src/core/org/jnode/plugin/model/PluginRegistryModel.java
core/src/core/org/jnode/system/IRQResource.java
core/src/core/org/jnode/system/resource/IRQResource.java
core/src/core/org/jnode/vm/BaseVmArchitecture.java
core/src/core/org/jnode/vm/BootLogImpl.java
core/src/core/org/jnode/vm/InternString.java
core/src/core/org/jnode/vm/MemoryBlockManager.java
core/src/core/org/jnode/vm/Unsafe.java
core/src/core/org/jnode/vm/VmImpl.java
core/src/core/org/jnode/vm/bytecode/BasicBlock.java
core/src/core/org/jnode/vm/classmgr/ClassDecoder.java
core/src/core/org/jnode/vm/classmgr/SelectorMap.java
core/src/core/org/jnode/vm/classmgr/VmType.java
core/src/core/org/jnode/vm/compiler/OptimizingBytecodeVisitor.java
core/src/core/org/jnode/vm/isolate/VmIsolate.java
core/src/core/org/jnode/vm/objects/VmSystemObject.java
core/src/core/org/jnode/vm/scheduler/IRQManager.java
core/src/core/org/jnode/vm/x86/VmX86Architecture.java
core/src/core/org/jnode/vm/x86/VmX86Processor.java
core/src/core/org/jnode/vm/x86/VmX86Processor32.java
core/src/core/org/jnode/vm/x86/VmX86Processor64.java
core/src/core/org/jnode/vm/x86/compiler/l1a/X86BytecodeVisitor.java
core/src/core/org/jnode/vm/x86/compiler/l1b/X86BytecodeVisitor.java
core/src/mmtk-vm/org/jnode/vm/memmgr/mmtk/BaseMmtkHeapManager.java
core/src/mmtk-vm/org/mmtk/vm/Assert.java
Modified Paths:
--------------
trunk/builder/src/builder/org/jnode/ant/taskdefs/NativeCheckTask.java
trunk/builder/src/builder/org/jnode/build/AbstractAsmConstBuilder.java
trunk/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java
trunk/builder/src/builder/org/jnode/build/ObjectEmitter.java
trunk/builder/src/builder/org/jnode/build/x86/AsmConstBuilder.java
trunk/builder/src/builder/org/jnode/build/x86/BootImageBuilder.java
trunk/cli/src/commands/org/jnode/command/system/GcCommand.java
trunk/cli/src/commands/org/jnode/command/system/OnHeapCommand.java
trunk/cli/src/commands/org/jnode/command/system/PluginCommand.java
trunk/cli/src/commands/org/jnode/command/system/VmInfoCommand.java
trunk/core/descriptors/org.jnode.vm.core.xml
trunk/core/src/classpath/vm/gnu/classpath/jdwp/NativeVMVirtualMachine.java
trunk/core/src/classpath/vm/java/lang/ThreadHelper.java
trunk/core/src/classpath/vm/java/lang/VMRuntime.java
trunk/core/src/classpath/vm/java/lang/VMSystem.java
trunk/core/src/core/org/jnode/assembler/ObjectResolver.java
trunk/core/src/core/org/jnode/assembler/x86/X86Register.java
trunk/core/src/core/org/jnode/plugin/AutoUnzipPlugin.java
trunk/core/src/core/org/jnode/plugin/PluginClassLoader.java
trunk/core/src/core/org/jnode/plugin/PluginDescriptor.java
trunk/core/src/core/org/jnode/plugin/model/AbstractModelObject.java
trunk/core/src/core/org/jnode/plugin/model/AttributeModel.java
trunk/core/src/core/org/jnode/plugin/model/ExtensionPointModel.java
trunk/core/src/core/org/jnode/plugin/model/PluginClassLoaderImpl.java
trunk/core/src/core/org/jnode/plugin/model/PluginJar.java
trunk/core/src/core/org/jnode/plugin/model/PluginRegistryModel.java
trunk/core/src/core/org/jnode/vm/AllocationBitmap.java
trunk/core/src/core/org/jnode/vm/BootLogImpl.java
trunk/core/src/core/org/jnode/vm/HeapHelperImpl.java
trunk/core/src/core/org/jnode/vm/InternString.java
trunk/core/src/core/org/jnode/vm/LoadCompileService.java
trunk/core/src/core/org/jnode/vm/MemoryBlockManager.java
trunk/core/src/core/org/jnode/vm/MemoryResourceImpl.java
trunk/core/src/core/org/jnode/vm/SoftByteCodes.java
trunk/core/src/core/org/jnode/vm/Unsafe.java
trunk/core/src/core/org/jnode/vm/VmAddress.java
trunk/core/src/core/org/jnode/vm/VmJavaClassLoader.java
trunk/core/src/core/org/jnode/vm/VmReflection.java
trunk/core/src/core/org/jnode/vm/VmStackFrame.java
trunk/core/src/core/org/jnode/vm/VmStackReader.java
trunk/core/src/core/org/jnode/vm/VmSystem.java
trunk/core/src/core/org/jnode/vm/VmSystemClassLoader.java
trunk/core/src/core/org/jnode/vm/bytecode/BasicBlock.java
trunk/core/src/core/org/jnode/vm/classmgr/AbstractCode.java
trunk/core/src/core/org/jnode/vm/classmgr/AbstractExceptionHandler.java
trunk/core/src/core/org/jnode/vm/classmgr/ClassDecoder.java
trunk/core/src/core/org/jnode/vm/classmgr/CompiledCodeList.java
trunk/core/src/core/org/jnode/vm/classmgr/ObjectLayout.java
trunk/core/src/core/org/jnode/vm/classmgr/SelectorMap.java
trunk/core/src/core/org/jnode/vm/classmgr/Signature.java
trunk/core/src/core/org/jnode/vm/classmgr/VmAddressMap.java
trunk/core/src/core/org/jnode/vm/classmgr/VmAnnotatedElement.java
trunk/core/src/core/org/jnode/vm/classmgr/VmAnnotation.java
trunk/core/src/core/org/jnode/vm/classmgr/VmArray.java
trunk/core/src/core/org/jnode/vm/classmgr/VmByteCode.java
trunk/core/src/core/org/jnode/vm/classmgr/VmCP.java
trunk/core/src/core/org/jnode/vm/classmgr/VmClassLoader.java
trunk/core/src/core/org/jnode/vm/classmgr/VmClassType.java
trunk/core/src/core/org/jnode/vm/classmgr/VmConstObject.java
trunk/core/src/core/org/jnode/vm/classmgr/VmExceptions.java
trunk/core/src/core/org/jnode/vm/classmgr/VmField.java
trunk/core/src/core/org/jnode/vm/classmgr/VmImplementedInterface.java
trunk/core/src/core/org/jnode/vm/classmgr/VmIsolatedStatics.java
trunk/core/src/core/org/jnode/vm/classmgr/VmLineNumberMap.java
trunk/core/src/core/org/jnode/vm/classmgr/VmLocalVariable.java
trunk/core/src/core/org/jnode/vm/classmgr/VmLocalVariableTable.java
trunk/core/src/core/org/jnode/vm/classmgr/VmMember.java
trunk/core/src/core/org/jnode/vm/classmgr/VmMethod.java
trunk/core/src/core/org/jnode/vm/classmgr/VmMethodCode.java
trunk/core/src/core/org/jnode/vm/classmgr/VmSharedStatics.java
trunk/core/src/core/org/jnode/vm/classmgr/VmStatics.java
trunk/core/src/core/org/jnode/vm/classmgr/VmStaticsBase.java
trunk/core/src/core/org/jnode/vm/classmgr/VmType.java
trunk/core/src/core/org/jnode/vm/compiler/CompiledIMT.java
trunk/core/src/core/org/jnode/vm/compiler/CompiledMethod.java
trunk/core/src/core/org/jnode/vm/compiler/EntryPoints.java
trunk/core/src/core/org/jnode/vm/compiler/IMTCompiler.java
trunk/core/src/core/org/jnode/vm/compiler/NativeCodeCompiler.java
trunk/core/src/core/org/jnode/vm/compiler/OptimizingBytecodeVisitor.java
trunk/core/src/core/org/jnode/vm/isolate/VmIsolate.java
trunk/core/src/core/org/jnode/vm/isolate/VmIsolateLocal.java
trunk/core/src/core/org/jnode/vm/memmgr/HeapHelper.java
trunk/core/src/core/org/jnode/vm/memmgr/VmHeapManager.java
trunk/core/src/core/org/jnode/vm/memmgr/def/DefGCStatistics.java
trunk/core/src/core/org/jnode/vm/memmgr/def/DefHeapStatistics.java
trunk/core/src/core/org/jnode/vm/memmgr/def/DefaultHeapManager.java
trunk/core/src/core/org/jnode/vm/memmgr/def/DefaultWriteBarrier.java
trunk/core/src/core/org/jnode/vm/memmgr/def/FinalizerVisitor.java
trunk/core/src/core/org/jnode/vm/memmgr/def/GCManager.java
trunk/core/src/core/org/jnode/vm/memmgr/def/GCMarkVisitor.java
trunk/core/src/core/org/jnode/vm/memmgr/def/GCSetWhiteVisitor.java
trunk/core/src/core/org/jnode/vm/memmgr/def/GCStack.java
trunk/core/src/core/org/jnode/vm/memmgr/def/GCSweepVisitor.java
trunk/core/src/core/org/jnode/vm/memmgr/def/GCVerifyVisitor.java
trunk/core/src/core/org/jnode/vm/memmgr/def/HeapStatisticsVisitor.java
trunk/core/src/core/org/jnode/vm/memmgr/def/VmAbstractHeap.java
trunk/core/src/core/org/jnode/vm/memmgr/def/VmBootHeap.java
trunk/core/src/core/org/jnode/vm/memmgr/def/VmDefaultHeap.java
trunk/core/src/core/org/jnode/vm/objects/BootableArrayList.java
trunk/core/src/core/org/jnode/vm/objects/BootableHashMap.java
trunk/core/src/core/org/jnode/vm/objects/Statistic.java
trunk/core/src/core/org/jnode/vm/scheduler/IRQManager.java
trunk/core/src/core/org/jnode/vm/scheduler/MonitorManager.java
trunk/core/src/core/org/jnode/vm/scheduler/SpinLock.java
trunk/core/src/core/org/jnode/vm/scheduler/VmProcessor.java
trunk/core/src/core/org/jnode/vm/scheduler/VmScheduler.java
trunk/core/src/core/org/jnode/vm/scheduler/VmThread.java
trunk/core/src/core/org/jnode/vm/scheduler/VmThreadQueue.java
trunk/core/src/core/org/jnode/vm/scheduler/VmThreadQueueEntry.java
trunk/core/src/core/org/jnode/vm/x86/VmX86Architecture.java
trunk/core/src/core/org/jnode/vm/x86/VmX86Architecture32.java
trunk/core/src/core/org/jnode/vm/x86/VmX86Architecture64.java
trunk/core/src/core/org/jnode/vm/x86/VmX86Processor.java
trunk/core/src/core/org/jnode/vm/x86/VmX86Processor32.java
trunk/core/src/core/org/jnode/vm/x86/VmX86Processor64.java
trunk/core/src/core/org/jnode/vm/x86/VmX86Thread.java
trunk/core/src/core/org/jnode/vm/x86/VmX86Thread64.java
trunk/core/src/core/org/jnode/vm/x86/X86MemoryMapEntry.java
trunk/core/src/core/org/jnode/vm/x86/compiler/AbstractX86Compiler.java
trunk/core/src/core/org/jnode/vm/x86/compiler/X86CompilerHelper.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1a/DoubleItem.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1a/DoubleWordItem.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1a/FPCompilerFPU.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1a/FloatItem.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1a/IntItem.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1a/Item.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1a/ItemFactory.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1a/ItemStack.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1a/LongItem.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1a/MagicHelper.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1a/RefItem.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1a/VirtualStack.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1a/WordItem.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1a/X86BytecodeVisitor.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1a/X86StackFrame.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1b/DoubleItem.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1b/DoubleWordItem.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1b/FPCompilerFPU.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1b/FloatItem.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1b/IntItem.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1b/Item.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1b/ItemFactory.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1b/ItemStack.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1b/LongItem.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1b/MagicHelper.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1b/RefItem.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1b/VirtualStack.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1b/WordItem.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1b/X86BytecodeVisitor.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1b/X86StackFrame.java
trunk/core/src/driver/org/jnode/driver/bus/pci/PCIDriver.java
trunk/core/src/driver/org/jnode/driver/system/acpi/AcpiDriver.java
trunk/core/src/mmtk-vm/org/jnode/vm/memmgr/mmtk/BaseMmtkGCStatistics.java
trunk/core/src/mmtk-vm/org/jnode/vm/memmgr/mmtk/BaseMmtkHeapManager.java
trunk/core/src/mmtk-vm/org/jnode/vm/memmgr/mmtk/genrc/HeapManager.java
trunk/core/src/mmtk-vm/org/jnode/vm/memmgr/mmtk/ms/HeapManager.java
trunk/core/src/mmtk-vm/org/jnode/vm/memmgr/mmtk/nogc/HeapManager.java
trunk/core/src/mmtk-vm/org/mmtk/vm/Assert.java
trunk/core/src/mmtk-vm/org/mmtk/vm/Memory.java
trunk/core/src/mmtk-vm/org/mmtk/vm/Scanning.java
trunk/core/src/mmtk-vm/org/mmtk/vm/Strings.java
trunk/core/src/mmtk-vm/org/mmtk/vm/VMConstants.java
trunk/core/src/openjdk/vm/java/lang/NativeRuntime.java
trunk/core/src/openjdk/vm/java/lang/reflect/NativeArray.java
trunk/core/src/openjdk/vm/sun/management/NativeThreadImpl.java
trunk/core/src/openjdk/vm/sun/management/NativeVMManagementImpl.java
trunk/core/src/openjdk/vm/sun/misc/NativeUnsafe.java
trunk/core/src/test/org/jnode/test/ResolverTest.java
trunk/core/src/test/org/jnode/test/core/CompilerTest.java
trunk/core/src/test/org/jnode/test/core/IMTCompilerTest.java
trunk/core/src/test/org/jnode/test/core/StackView.java
trunk/core/src/vmmagic/org/vmmagic/unboxed/MagicUtils.java
trunk/gui/src/awt/org/jnode/awt/font/renderer/SummedAreaTable.java
trunk/gui/src/awt/org/jnode/awt/font/spi/AbstractTextRenderer.java
trunk/gui/src/awt/org/jnode/awt/util/BasicSurfaceGraphics.java
trunk/gui/src/desktop/org/jnode/desktop/Desktop.java
trunk/gui/src/driver/org/jnode/driver/video/vga/VGABitmapGraphics.java
trunk/gui/src/driver/org/jnode/driver/video/vga/VGADriver.java
Added Paths:
-----------
trunk/core/src/core/org/jnode/vm/BaseVmArchitecture.java
trunk/core/src/core/org/jnode/vm/VmImpl.java
trunk/core/src/core/org/jnode/vm/classmgr/Mangler.java
trunk/core/src/core/org/jnode/vm/facade/
trunk/core/src/core/org/jnode/vm/facade/GCStatistics.java
trunk/core/src/core/org/jnode/vm/facade/HeapStatistics.java
trunk/core/src/core/org/jnode/vm/facade/MemoryMapEntry.java
trunk/core/src/core/org/jnode/vm/facade/ObjectVisitor.java
trunk/core/src/core/org/jnode/vm/facade/TypeSizeInfo.java
trunk/core/src/core/org/jnode/vm/facade/Vm.java
trunk/core/src/core/org/jnode/vm/facade/VmArchitecture.java
trunk/core/src/core/org/jnode/vm/facade/VmHeapManager.java
trunk/core/src/core/org/jnode/vm/facade/VmProcessor.java
trunk/core/src/core/org/jnode/vm/facade/VmThread.java
trunk/core/src/core/org/jnode/vm/facade/VmThreadVisitor.java
trunk/core/src/core/org/jnode/vm/facade/VmUtils.java
trunk/core/src/core/org/jnode/vm/facade/VmWriteBarrier.java
trunk/core/src/core/org/jnode/vm/objects/BootableObject.java
trunk/core/src/core/org/jnode/vm/objects/VmSystemObject.java
Removed Paths:
-------------
trunk/core/src/core/org/jnode/vm/BootableObject.java
trunk/core/src/core/org/jnode/vm/MemoryMapEntry.java
trunk/core/src/core/org/jnode/vm/ObjectVisitor.java
trunk/core/src/core/org/jnode/vm/Vm.java
trunk/core/src/core/org/jnode/vm/VmArchitecture.java
trunk/core/src/core/org/jnode/vm/VmSystemObject.java
trunk/core/src/core/org/jnode/vm/VmUtils.java
trunk/core/src/core/org/jnode/vm/classmgr/TypeSizeInfo.java
trunk/core/src/core/org/jnode/vm/memmgr/GCStatistics.java
trunk/core/src/core/org/jnode/vm/memmgr/HeapStatistics.java
trunk/core/src/core/org/jnode/vm/memmgr/VmWriteBarrier.java
trunk/core/src/core/org/jnode/vm/scheduler/VmThreadVisitor.java
Property Changed:
----------------
trunk/core/src/core/org/jnode/vm/x86/compiler/l1a/DoubleItem.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1a/FloatItem.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1a/IntItem.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1a/LongItem.java
trunk/core/src/core/org/jnode/vm/x86/compiler/l1a/RefItem.java
Modified: trunk/builder/src/builder/org/jnode/ant/taskdefs/NativeCheckTask.java
===================================================================
--- trunk/builder/src/builder/org/jnode/ant/taskdefs/NativeCheckTask.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/builder/src/builder/org/jnode/ant/taskdefs/NativeCheckTask.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -30,8 +30,9 @@
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
+
import org.apache.tools.ant.BuildException;
-import org.jnode.vm.VmUtils;
+import org.jnode.vm.facade.VmUtils;
import org.objectweb.asm.Attribute;
import org.objectweb.asm.ClassAdapter;
import org.objectweb.asm.ClassReader;
Modified: trunk/builder/src/builder/org/jnode/build/AbstractAsmConstBuilder.java
===================================================================
--- trunk/builder/src/builder/org/jnode/build/AbstractAsmConstBuilder.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/builder/src/builder/org/jnode/build/AbstractAsmConstBuilder.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -30,13 +30,15 @@
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
-import org.jnode.vm.Vm;
-import org.jnode.vm.VmArchitecture;
+
+import org.jnode.vm.BaseVmArchitecture;
+import org.jnode.vm.VmImpl;
import org.jnode.vm.VmSystemClassLoader;
import org.jnode.vm.classmgr.VmField;
import org.jnode.vm.classmgr.VmInstanceField;
import org.jnode.vm.classmgr.VmNormalClass;
import org.jnode.vm.classmgr.VmType;
+import org.jnode.vm.facade.Vm;
/**
* TODO describe the class.
@@ -75,14 +77,14 @@
private void doExecute()
throws BuildException, ClassNotFoundException, IllegalAccessException, IOException, InstantiationException {
- final VmArchitecture arch = getArchitecture();
+ final BaseVmArchitecture arch = getArchitecture();
String[] urls = classesURL.split(",");
URL[] urla = new URL[urls.length];
for (int i = 0; i < urls.length; i++)
urla[i] = new URL(urls[i].trim());
final VmSystemClassLoader cl = new VmSystemClassLoader(urla, arch);
- final Vm vm = new Vm("?", arch, cl.getSharedStatics(), false, cl, null);
+ final Vm vm = new VmImpl("?", arch, cl.getSharedStatics(), false, cl, null);
vm.toString(); // Just to avoid compiler warnings
VmType.initializeForBootImage(cl);
long lastModified = 0;
@@ -249,5 +251,5 @@
this.classesURL = classesURL;
}
- protected abstract VmArchitecture getArchitecture();
+ protected abstract BaseVmArchitecture getArchitecture();
}
Modified: trunk/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java
===================================================================
--- trunk/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -60,13 +60,12 @@
import org.jnode.plugin.model.PluginJar;
import org.jnode.plugin.model.PluginRegistryModel;
import org.jnode.util.NumberUtils;
+import org.jnode.vm.BaseVmArchitecture;
import org.jnode.vm.JvmType;
import org.jnode.vm.Unsafe;
import org.jnode.vm.VirtualMemoryRegion;
-import org.jnode.vm.Vm;
-import org.jnode.vm.VmArchitecture;
+import org.jnode.vm.VmImpl;
import org.jnode.vm.VmSystemClassLoader;
-import org.jnode.vm.VmSystemObject;
import org.jnode.vm.bytecode.BytecodeParser;
import org.jnode.vm.classmgr.Modifier;
import org.jnode.vm.classmgr.ObjectLayout;
@@ -83,9 +82,13 @@
import org.jnode.vm.classmgr.VmStatics;
import org.jnode.vm.classmgr.VmType;
import org.jnode.vm.compiler.NativeCodeCompiler;
+import org.jnode.vm.facade.Vm;
+import org.jnode.vm.facade.VmArchitecture;
+import org.jnode.vm.facade.VmUtils;
import org.jnode.vm.memmgr.HeapHelper;
import org.jnode.vm.memmgr.VmHeapManager;
import org.jnode.vm.objects.BootableHashMap;
+import org.jnode.vm.objects.VmSystemObject;
import org.jnode.vm.scheduler.VmProcessor;
import org.vmmagic.unboxed.UnboxedObject;
@@ -206,7 +209,7 @@
* @param arch
* @throws ClassNotFoundException
*/
- private final void compileClasses(NativeStream os, VmArchitecture arch)
+ private final void compileClasses(NativeStream os, BaseVmArchitecture arch)
throws ClassNotFoundException {
final NativeCodeCompiler[] compilers = arch.getCompilers();
final int optLevel = compilers.length - 1;
@@ -389,7 +392,7 @@
* @return The processor
* @throws BuildException
*/
- protected abstract VmProcessor createProcessor(Vm vm, VmSharedStatics statics,
+ protected abstract VmProcessor createProcessor(VmImpl vm, VmSharedStatics statics,
VmIsolatedStatics isolatedStatics) throws BuildException;
private final void doExecute() throws BuildException {
@@ -448,7 +451,7 @@
final Map<String, byte[]> resources = loadSystemResource(piRegistry);
/* Now create the processor */
- final VmArchitecture arch = getArchitecture();
+ final BaseVmArchitecture arch = getArchitecture();
final NativeStream os = createNativeStream();
clsMgr = new VmSystemClassLoader(null/*classesURL*/, arch,
new BuildObjectResolver(os, this));
@@ -468,9 +471,9 @@
}
// Create the VM
- final Vm vm = new Vm(version, arch, clsMgr.getSharedStatics(), debug, clsMgr, piRegistry);
+ final VmImpl vm = new VmImpl(version, arch, clsMgr.getSharedStatics(), debug, clsMgr, piRegistry);
blockedObjects.add(vm);
- blockedObjects.add(Vm.getCompiledMethods());
+ blockedObjects.add(VmUtils.getVm().getCompiledMethods());
final VmProcessor proc = createProcessor(vm, clsMgr.getSharedStatics(),
clsMgr.getIsolatedStatics());
@@ -504,14 +507,14 @@
loadClass(VmType[].class);
loadClass(Vm.class);
loadClass(VirtualMemoryRegion.class).link();
- Vm.getHeapManager().loadClasses(clsMgr);
+ vm.getHeapManager().loadClasses(clsMgr);
loadClass(VmHeapManager.class);
loadClass(VmSharedStatics.class);
loadClass(VmIsolatedStatics.class);
- loadClass(Vm.getHeapManager().getClass());
+ loadClass(VmUtils.getVm().getHeapManager().getClass());
loadClass(HeapHelper.class);
loadClass("org.jnode.vm.HeapHelperImpl");
- loadClass(Vm.getCompiledMethods().getClass());
+ loadClass(VmUtils.getVm().getCompiledMethods().getClass());
loadClass(VmCompiledCode[].class);
loadSystemClasses(resources.keySet());
@@ -558,8 +561,8 @@
// Emit the compiled method list
log("Emit compiled methods", Project.MSG_VERBOSE);
- blockedObjects.remove(Vm.getCompiledMethods());
- final int compiledMethods = Vm.getCompiledMethods().size();
+ blockedObjects.remove(VmUtils.getVm().getCompiledMethods());
+ final int compiledMethods = VmUtils.getVm().getCompiledMethods().size();
emitObjects(os, arch, blockedObjects, false);
// Twice, this is intended!
emitObjects(os, arch, blockedObjects, false);
@@ -595,7 +598,7 @@
// Verify no methods have been compiled after we wrote the
// CompiledCodeList.
- if (Vm.getCompiledMethods().size() != compiledMethods) {
+ if (VmUtils.getVm().getCompiledMethods().size() != compiledMethods) {
throw new BuildException(
"Method have been compiled after CompiledCodeList was written.");
}
@@ -638,7 +641,7 @@
clsMgr.getSharedStatics().dumpStatistics(out);
log("Isolated statics");
clsMgr.getIsolatedStatics().dumpStatistics(out);
- vm.dumpStatistics(out);
+ VmUtils.dumpStatistics(out);
logStatistics(os);
@@ -670,7 +673,7 @@
* @param blockObjects
* @throws BuildException
*/
- private final void emitObjects(NativeStream os, VmArchitecture arch,
+ private final void emitObjects(NativeStream os, BaseVmArchitecture arch,
Set<Object> blockObjects, boolean skipCopyStatics)
throws BuildException {
log("Emitting objects", Project.MSG_DEBUG);
@@ -883,7 +886,7 @@
* @return The target architecture
* @throws BuildException
*/
- protected abstract VmArchitecture getArchitecture() throws BuildException;
+ protected abstract BaseVmArchitecture getArchitecture() throws BuildException;
/**
* Gets the internal class loader.
@@ -1458,6 +1461,7 @@
addCompileHighOptLevel("org.jnode.vm.bytecode");
addCompileHighOptLevel("org.jnode.vm.classmgr");
addCompileHighOptLevel("org.jnode.vm.compiler");
+ addCompileHighOptLevel("org.jnode.vm.facade");
addCompileHighOptLevel("org.jnode.vm.isolate");
addCompileHighOptLevel("org.jnode.vm.objects");
addCompileHighOptLevel("org.jnode.vm.scheduler");
Modified: trunk/builder/src/builder/org/jnode/build/ObjectEmitter.java
===================================================================
--- trunk/builder/src/builder/org/jnode/build/ObjectEmitter.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/builder/src/builder/org/jnode/build/ObjectEmitter.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -32,8 +32,6 @@
import org.jnode.assembler.NativeStream;
import org.jnode.assembler.x86.X86BinaryAssembler;
import org.jnode.bootlog.BootLogInstance;
-import org.jnode.vm.BootableObject;
-import org.jnode.vm.VmSystemObject;
import org.jnode.vm.classmgr.VmArrayClass;
import org.jnode.vm.classmgr.VmClassLoader;
import org.jnode.vm.classmgr.VmClassType;
@@ -41,6 +39,8 @@
import org.jnode.vm.classmgr.VmInstanceField;
import org.jnode.vm.classmgr.VmNormalClass;
import org.jnode.vm.classmgr.VmType;
+import org.jnode.vm.objects.BootableObject;
+import org.jnode.vm.objects.VmSystemObject;
import org.vmmagic.unboxed.UnboxedObject;
public class ObjectEmitter {
Modified: trunk/builder/src/builder/org/jnode/build/x86/AsmConstBuilder.java
===================================================================
--- trunk/builder/src/builder/org/jnode/build/x86/AsmConstBuilder.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/builder/src/builder/org/jnode/build/x86/AsmConstBuilder.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -21,7 +21,7 @@
package org.jnode.build.x86;
import org.jnode.build.AbstractAsmConstBuilder;
-import org.jnode.vm.VmArchitecture;
+import org.jnode.vm.BaseVmArchitecture;
import org.jnode.vm.x86.VmX86Architecture32;
import org.jnode.vm.x86.VmX86Architecture64;
@@ -32,9 +32,9 @@
private int bits = 32;
- private VmArchitecture arch;
+ private BaseVmArchitecture arch;
- protected VmArchitecture getArchitecture() {
+ protected BaseVmArchitecture getArchitecture() {
if (arch == null) {
switch (bits) {
case 32:
Modified: trunk/builder/src/builder/org/jnode/build/x86/BootImageBuilder.java
===================================================================
--- trunk/builder/src/builder/org/jnode/build/x86/BootImageBuilder.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/builder/src/builder/org/jnode/build/x86/BootImageBuilder.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -43,11 +43,10 @@
import org.jnode.linker.ElfLinker;
import org.jnode.plugin.PluginRegistry;
import org.jnode.util.NumberUtils;
+import org.jnode.vm.BaseVmArchitecture;
import org.jnode.vm.SoftByteCodes;
-import org.jnode.vm.Vm;
-import org.jnode.vm.VmArchitecture;
+import org.jnode.vm.VmImpl;
import org.jnode.vm.VmSystem;
-import org.jnode.vm.VmSystemObject;
import org.jnode.vm.classmgr.ObjectLayout;
import org.jnode.vm.classmgr.VmArray;
import org.jnode.vm.classmgr.VmClassType;
@@ -58,6 +57,9 @@
import org.jnode.vm.classmgr.VmSharedStatics;
import org.jnode.vm.classmgr.VmStaticField;
import org.jnode.vm.classmgr.VmType;
+import org.jnode.vm.facade.Vm;
+import org.jnode.vm.facade.VmUtils;
+import org.jnode.vm.objects.VmSystemObject;
import org.jnode.vm.scheduler.MonitorManager;
import org.jnode.vm.scheduler.VmProcessor;
import org.jnode.vm.scheduler.VmScheduler;
@@ -155,7 +157,7 @@
* @return The processor
* @throws BuildException
*/
- protected VmProcessor createProcessor(Vm vm, VmSharedStatics statics, VmIsolatedStatics isolatedStatics)
+ protected VmProcessor createProcessor(VmImpl vm, VmSharedStatics statics, VmIsolatedStatics isolatedStatics)
throws BuildException {
this.sharedStatics = statics;
VmScheduler scheduler = new VmScheduler(getArchitecture());
@@ -185,7 +187,7 @@
* @return The target architecture
* @throws BuildException
*/
- protected final VmArchitecture getArchitecture() throws BuildException {
+ protected final BaseVmArchitecture getArchitecture() throws BuildException {
if (arch == null) {
switch (bits) {
case 32:
@@ -483,8 +485,8 @@
protected void initVm(X86BinaryAssembler os, Vm vm) throws BuildException,
ClassNotFoundException {
os.setObjectRef(new Label("$$Initialize Vm"));
- VmType<?> vmClass = loadClass(Vm.class);
- VmStaticField vmField = (VmStaticField) vmClass.getField("instance");
+ VmType<?> vmClass = loadClass(VmUtils.class);
+ VmStaticField vmField = (VmStaticField) vmClass.getField("VM_INSTANCE");
final GPR abx = os.isCode32() ? (GPR) X86Register.EBX : X86Register.RBX;
final GPR adi = os.isCode32() ? (GPR) X86Register.EDI : X86Register.RDI;
Modified: trunk/cli/src/commands/org/jnode/command/system/GcCommand.java
===================================================================
--- trunk/cli/src/commands/org/jnode/command/system/GcCommand.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/cli/src/commands/org/jnode/command/system/GcCommand.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -27,8 +27,9 @@
import org.jnode.shell.syntax.EnumArgument;
import org.jnode.shell.syntax.FlagArgument;
import org.jnode.util.NumberUtils;
-import org.jnode.vm.Vm;
-import org.jnode.vm.memmgr.GCStatistics;
+import org.jnode.vm.VmImpl;
+import org.jnode.vm.facade.GCStatistics;
+import org.jnode.vm.facade.VmUtils;
import org.jnode.vm.memmgr.VmHeapManager;
/**
@@ -100,12 +101,12 @@
public void execute() throws Exception {
final PrintWriter out = getOutput().getPrintWriter();
if (argSet.isSet()) {
- Vm.getHeapManager().setHeapFlags(getFlags());
+ VmUtils.getVm().getHeapManager().setHeapFlags(getFlags());
} else if (argClear.isSet()) {
- int flags = Vm.getHeapManager().getHeapFlags() ^ getFlags();
- Vm.getHeapManager().setHeapFlags(flags);
+ int flags = VmUtils.getVm().getHeapManager().getHeapFlags() ^ getFlags();
+ VmUtils.getVm().getHeapManager().setHeapFlags(flags);
} else if (argShow.isSet()) {
- showFlags(Vm.getHeapManager().getHeapFlags(), out);
+ showFlags(VmUtils.getVm().getHeapManager().getHeapFlags(), out);
} else {
final Runtime rt = Runtime.getRuntime();
out.format(fmt_out, str_mem_size, NumberUtils.toBinaryByte(rt.totalMemory()));
@@ -114,7 +115,7 @@
out.println(str_start);
long start = System.currentTimeMillis();
rt.gc();
- GCStatistics stats = Vm.getHeapManager().getStatistics();
+ GCStatistics stats = VmUtils.getVm().getHeapManager().getStatistics();
Thread.yield();
long end = System.currentTimeMillis();
Modified: trunk/cli/src/commands/org/jnode/command/system/OnHeapCommand.java
===================================================================
--- trunk/cli/src/commands/org/jnode/command/system/OnHeapCommand.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/cli/src/commands/org/jnode/command/system/OnHeapCommand.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -27,8 +27,9 @@
import org.jnode.shell.syntax.Argument;
import org.jnode.shell.syntax.IntegerArgument;
import org.jnode.shell.syntax.LongArgument;
-import org.jnode.vm.Vm;
-import org.jnode.vm.memmgr.HeapStatistics;
+import org.jnode.vm.VmImpl;
+import org.jnode.vm.facade.HeapStatistics;
+import org.jnode.vm.facade.VmUtils;
/**
* @author Martin Husted Hartvig (ha...@jn...)
@@ -61,7 +62,7 @@
public void execute() throws Exception {
PrintWriter out = getOutput().getPrintWriter();
out.println(str_on_heap);
- final HeapStatistics stats = Vm.getHeapManager().getHeapStatistics();
+ final HeapStatistics stats = VmUtils.getVm().getHeapManager().getHeapStatistics();
if (argMinInstanceCount.isSet()) {
stats.setMinimumInstanceCount(argMinInstanceCount.getValue());
Modified: trunk/cli/src/commands/org/jnode/command/system/PluginCommand.java
===================================================================
--- trunk/cli/src/commands/org/jnode/command/system/PluginCommand.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/cli/src/commands/org/jnode/command/system/PluginCommand.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -46,7 +46,7 @@
import org.jnode.shell.syntax.StringArgument;
import org.jnode.shell.syntax.SyntaxMultiplicityException;
import org.jnode.shell.syntax.URLArgument;
-import org.jnode.vm.Vm;
+import org.jnode.vm.facade.VmUtils;
/**
* @author epr
@@ -120,7 +120,7 @@
private void doRun()
throws NameNotFoundException, SyntaxMultiplicityException, PluginException, MalformedURLException {
mgr = InitialNaming.lookup(PluginManager.NAME);
- final String version = argVersion.isSet() ? argVersion.getValue() : Vm.getVm().getVersion();
+ final String version = argVersion.isSet() ? argVersion.getValue() : VmUtils.getVm().getVersion();
final String pluginId = argPluginID.getValue();
if (argLoaderUrl.isSet()) {
addPluginLoader(argLoaderUrl.getValue());
Modified: trunk/cli/src/commands/org/jnode/command/system/VmInfoCommand.java
===================================================================
--- trunk/cli/src/commands/org/jnode/command/system/VmInfoCommand.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/cli/src/commands/org/jnode/command/system/VmInfoCommand.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -26,8 +26,8 @@
import org.jnode.shell.AbstractCommand;
import org.jnode.shell.syntax.Argument;
import org.jnode.shell.syntax.FlagArgument;
-import org.jnode.vm.Vm;
-import org.jnode.vm.scheduler.VmProcessor;
+import org.jnode.vm.facade.VmProcessor;
+import org.jnode.vm.facade.VmUtils;
/**
* @author Ewout Prangsma (ep...@us...)
@@ -55,13 +55,13 @@
@Override
public void execute() {
- final Vm vm = Vm.getVm();
+ final org.jnode.vm.facade.Vm vm = VmUtils.getVm();
if (vm != null && !vm.isBootstrap()) {
PrintWriter out = getOutput().getPrintWriter();
out.format(fmt_vm, vm.getVersion());
- vm.dumpStatistics(out);
+ VmUtils.dumpStatistics(out);
vm.getSharedStatics().dumpStatistics(out);
- Vm.getHeapManager().dumpStatistics(out);
+ VmUtils.getVm().getHeapManager().dumpStatistics(out);
final SecurityManager sm = System.getSecurityManager();
out.format(fmt_sm, sm);
List<VmProcessor> processors = vm.getProcessors();
@@ -70,7 +70,7 @@
cpu.dumpStatistics(out);
}
if (argReset.isSet()) {
- vm.resetCounters();
+ VmUtils.resetCounters();
}
}
}
Modified: trunk/core/descriptors/org.jnode.vm.core.xml
===================================================================
--- trunk/core/descriptors/org.jnode.vm.core.xml 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/core/descriptors/org.jnode.vm.core.xml 2010-07-11 14:27:38 UTC (rev 5756)
@@ -23,6 +23,7 @@
<export name="org.jnode.vm.bytecode.*"/>
<export name="org.jnode.vm.classmgr.*"/>
<export name="org.jnode.vm.compiler.*"/>
+ <export name="org.jnode.vm.facade.*"/>
<export name="org.jnode.vm.isolate.*"/>
<export name="org.jnode.vm.memmgr.*"/>
<export name="org.jnode.vm.objects.*"/>
Modified: trunk/core/src/classpath/vm/gnu/classpath/jdwp/NativeVMVirtualMachine.java
===================================================================
--- trunk/core/src/classpath/vm/gnu/classpath/jdwp/NativeVMVirtualMachine.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/core/src/classpath/vm/gnu/classpath/jdwp/NativeVMVirtualMachine.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -26,7 +26,8 @@
import java.lang.reflect.Method;
import gnu.classpath.jdwp.util.MethodResult;
import gnu.classpath.jdwp.event.EventRequest;
-import org.jnode.vm.Vm;
+
+import org.jnode.vm.facade.VmUtils;
import org.jnode.vm.isolate.VmIsolate;
import org.jnode.vm.classmgr.VmIsolatedStatics;
import org.jnode.vm.classmgr.VmStaticsIterator;
@@ -71,7 +72,7 @@
*/
private static Iterator getAllLoadedClasses() {
return new Iterator() {
- private VmStaticsIterator iter = new VmStaticsIterator(Vm.getVm().getSharedStatics());
+ private VmStaticsIterator iter = new VmStaticsIterator(VmUtils.getVm().getSharedStatics());
private Iterator<VmIsolatedStatics> isolated = VmIsolate.staticsIterator();
public boolean hasNext() {
Modified: trunk/core/src/classpath/vm/java/lang/ThreadHelper.java
===================================================================
--- trunk/core/src/classpath/vm/java/lang/ThreadHelper.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/core/src/classpath/vm/java/lang/ThreadHelper.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -20,10 +20,10 @@
package java.lang;
+import org.jnode.annotation.Internal;
+import org.jnode.annotation.KernelSpace;
import org.jnode.permission.JNodePermission;
import org.jnode.vm.scheduler.VmThread;
-import org.jnode.annotation.KernelSpace;
-import org.jnode.annotation.Internal;
/**
*
Modified: trunk/core/src/classpath/vm/java/lang/VMRuntime.java
===================================================================
--- trunk/core/src/classpath/vm/java/lang/VMRuntime.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/core/src/classpath/vm/java/lang/VMRuntime.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -23,10 +23,10 @@
import java.io.File;
import java.io.IOException;
-import org.jnode.vm.Vm;
import org.jnode.vm.VmProcess;
import org.jnode.vm.VmSystem;
import org.jnode.vm.VmExit;
+import org.jnode.vm.facade.VmUtils;
import org.jnode.vm.isolate.VmIsolate;
import javax.isolate.Isolate;
@@ -52,7 +52,7 @@
* @return the number of processors available, at least 1
*/
static int availableProcessors() {
- return Vm.getVm().availableProcessors();
+ return VmUtils.getVm().availableProcessors();
}
/**
Modified: trunk/core/src/classpath/vm/java/lang/VMSystem.java
===================================================================
--- trunk/core/src/classpath/vm/java/lang/VMSystem.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/core/src/classpath/vm/java/lang/VMSystem.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -44,8 +44,9 @@
import java.util.ArrayList;
import org.jnode.util.SystemInputStream;
-import org.jnode.vm.Vm;
+import org.jnode.vm.VmImpl;
import org.jnode.vm.VmSystem;
+import org.jnode.vm.facade.VmUtils;
/**
* VMSystem is a package-private helper class for System that the VM must
@@ -112,7 +113,7 @@
* @return true if the system is big-endian.
*/
static boolean isWordsBigEndian() {
- return (Vm.getArch().getByteOrder() == ByteOrder.BIG_ENDIAN);
+ return (VmUtils.getVm().getArch().getByteOrder() == ByteOrder.BIG_ENDIAN);
}
/**
Modified: trunk/core/src/core/org/jnode/assembler/ObjectResolver.java
===================================================================
--- trunk/core/src/core/org/jnode/assembler/ObjectResolver.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/core/src/core/org/jnode/assembler/ObjectResolver.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -20,7 +20,7 @@
package org.jnode.assembler;
-import org.jnode.vm.VmSystemObject;
+import org.jnode.vm.objects.VmSystemObject;
/**
* @author epr
Modified: trunk/core/src/core/org/jnode/assembler/x86/X86Register.java
===================================================================
--- trunk/core/src/core/org/jnode/assembler/x86/X86Register.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/core/src/core/org/jnode/assembler/x86/X86Register.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -20,8 +20,8 @@
package org.jnode.assembler.x86;
-import org.jnode.vm.VmSystemObject;
import org.jnode.vm.objects.BootableHashMap;
+import org.jnode.vm.objects.VmSystemObject;
/**
* Registers of the x86 architecture.
Modified: trunk/core/src/core/org/jnode/plugin/AutoUnzipPlugin.java
===================================================================
--- trunk/core/src/core/org/jnode/plugin/AutoUnzipPlugin.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/core/src/core/org/jnode/plugin/AutoUnzipPlugin.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -85,11 +85,16 @@
// copy each plugin's resource to the plugin root directory
final PluginDescriptor desc = AutoUnzipPlugin.this.getDescriptor();
- final PluginClassLoader cl = (PluginClassLoader) desc.getPluginClassLoader();
+ final ClassLoader cl = desc.getPluginClassLoader();
final String pluginRoot = pluginRootFile.getAbsolutePath() + "/";
final byte[] buffer = new byte[10240];
- for (String resName : cl.getResources()) {
+ if (!(cl instanceof PluginClassLoader)) {
+ System.err.println("Plugin's ClassLoader doesn't implements PluginClassLoader");
+ return;
+ }
+
+ for (String resName : ((PluginClassLoader) cl).getResources()) {
final InputStream input = cl.getResourceAsStream(resName);
try {
Modified: trunk/core/src/core/org/jnode/plugin/PluginClassLoader.java
===================================================================
--- trunk/core/src/core/org/jnode/plugin/PluginClassLoader.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/core/src/core/org/jnode/plugin/PluginClassLoader.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -23,53 +23,31 @@
import java.util.Collection;
import java.util.Set;
-import org.jnode.vm.classmgr.VmClassLoader;
-
/**
+ * Interface for plugin {@link ClassLoader}s. They should of course also
+ * inherit from {@link ClassLoader}.
* @author Ewout Prangsma (ep...@us...)
*/
-public abstract class PluginClassLoader extends ClassLoader {
+public interface PluginClassLoader {
/**
- * Default ctor
- */
- public PluginClassLoader() {
- // No code here
- }
-
- /**
- * Wrap this classloader around the given vmClassLoader.
- * Requires special permission.
- *
- * @param parent
- * @param vmClassLoader
- */
- protected PluginClassLoader(ClassLoader parent, VmClassLoader vmClassLoader) {
- super(parent, vmClassLoader);
- }
-
- /**
* Gets the descriptor of the plugin in which this element was declared.
*
* @return The descriptor
*/
- public abstract PluginDescriptor getDeclaringPluginDescriptor();
+ PluginDescriptor getDeclaringPluginDescriptor();
/**
* Gets the names of the classes contained in this plugin.
*
* @return the set of contained classnames
*/
- public abstract Set<String> getClassNames();
+ Set<String> getClassNames();
/**
* Gets the names of the resources contained in this plugin.
*
* @return the set of contained resources
*/
- public abstract Collection<String> getResources();
-
- public String toString() {
- return getClass().getName() + "(" + getDeclaringPluginDescriptor().getId() + ")";
- }
+ Collection<String> getResources();
}
Modified: trunk/core/src/core/org/jnode/plugin/PluginDescriptor.java
===================================================================
--- trunk/core/src/core/org/jnode/plugin/PluginDescriptor.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/core/src/core/org/jnode/plugin/PluginDescriptor.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -197,6 +197,8 @@
/**
* Gets the classloader of this plugin descriptor.
+ * It's <strong>not mandatory</strong> but the returned {@link ClassLoader} usually
+ * implements {@link PluginClassLoader}.
*
* @return ClassLoader
*/
Modified: trunk/core/src/core/org/jnode/plugin/model/AbstractModelObject.java
===================================================================
--- trunk/core/src/core/org/jnode/plugin/model/AbstractModelObject.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/core/src/core/org/jnode/plugin/model/AbstractModelObject.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -22,7 +22,7 @@
import org.jnode.nanoxml.XMLElement;
import org.jnode.plugin.PluginException;
-import org.jnode.vm.VmSystemObject;
+import org.jnode.vm.objects.VmSystemObject;
/**
* @author epr
Modified: trunk/core/src/core/org/jnode/plugin/model/AttributeModel.java
===================================================================
--- trunk/core/src/core/org/jnode/plugin/model/AttributeModel.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/core/src/core/org/jnode/plugin/model/AttributeModel.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -20,7 +20,7 @@
package org.jnode.plugin.model;
-import org.jnode.vm.BootableObject;
+import org.jnode.vm.objects.BootableObject;
/**
* @author epr
Modified: trunk/core/src/core/org/jnode/plugin/model/ExtensionPointModel.java
===================================================================
--- trunk/core/src/core/org/jnode/plugin/model/ExtensionPointModel.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/core/src/core/org/jnode/plugin/model/ExtensionPointModel.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -220,7 +220,7 @@
}
/**
- * @see org.jnode.vm.VmSystemObject#verifyBeforeEmit()
+ * @see org.jnode.vm.objects.VmSystemObject#verifyBeforeEmit()
*/
public void verifyBeforeEmit() {
super.verifyBeforeEmit();
Modified: trunk/core/src/core/org/jnode/plugin/model/PluginClassLoaderImpl.java
===================================================================
--- trunk/core/src/core/org/jnode/plugin/model/PluginClassLoaderImpl.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/core/src/core/org/jnode/plugin/model/PluginClassLoaderImpl.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -48,7 +48,7 @@
/**
* @author Ewout Prangsma (ep...@us...)
*/
-final class PluginClassLoaderImpl extends PluginClassLoader {
+final class PluginClassLoaderImpl extends ClassLoader implements PluginClassLoader {
/**
* The registry
@@ -85,9 +85,14 @@
}
/**
- * Initialize this instance.
- *
+ * Wrap this {@link ClassLoader} around the given vmClassLoader.
+ * Requires special permission.
+ *
+ * @param vmClassLoader
+ * @param registry
+ * @param descr
* @param jar
+ * @param prerequisiteLoaders
*/
protected PluginClassLoaderImpl(VmClassLoader vmClassLoader, PluginRegistryModel registry,
PluginDescriptorModel descr, PluginJar jar,
@@ -100,7 +105,7 @@
}
/**
- * Gets the names of the classes contained in this plugin
+ * Gets the names of the classes contained in this plugin.
*
* @return
*/
@@ -393,4 +398,8 @@
public PluginDescriptor getDeclaringPluginDescriptor() {
return descriptor;
}
+
+ public String toString() {
+ return getClass().getName() + "(" + getDeclaringPluginDescriptor().getId() + ")";
+ }
}
Modified: trunk/core/src/core/org/jnode/plugin/model/PluginJar.java
===================================================================
--- trunk/core/src/core/org/jnode/plugin/model/PluginJar.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/core/src/core/org/jnode/plugin/model/PluginJar.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -36,10 +36,11 @@
import org.jnode.util.ByteBufferInputStream;
import org.jnode.util.FileUtils;
import org.jnode.util.JarBuffer;
-import org.jnode.vm.BootableObject;
import org.jnode.vm.ResourceLoader;
-import org.jnode.vm.Vm;
+import org.jnode.vm.VmImpl;
+import org.jnode.vm.facade.VmUtils;
import org.jnode.vm.objects.BootableHashMap;
+import org.jnode.vm.objects.BootableObject;
/**
* @author Ewout Prangsma (ep...@us...)
@@ -84,7 +85,7 @@
URL pluginUrl) throws PluginException {
try {
//get a reference to the plugin jar data
- if (Vm.isWritingImage()) {
+ if (VmUtils.isWritingImage()) {
//buildtime
initBuffer = pluginIs.array();
} else {
Modified: trunk/core/src/core/org/jnode/plugin/model/PluginRegistryModel.java
===================================================================
--- trunk/core/src/core/org/jnode/plugin/model/PluginRegistryModel.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/core/src/core/org/jnode/plugin/model/PluginRegistryModel.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -43,9 +43,9 @@
import org.jnode.plugin.PluginReference;
import org.jnode.plugin.PluginRegistry;
import org.jnode.plugin.PluginSecurityConstants;
-import org.jnode.vm.VmSystemObject;
import org.jnode.vm.isolate.VmIsolateLocal;
import org.jnode.vm.objects.BootableHashMap;
+import org.jnode.vm.objects.VmSystemObject;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
Modified: trunk/core/src/core/org/jnode/vm/AllocationBitmap.java
===================================================================
--- trunk/core/src/core/org/jnode/vm/AllocationBitmap.java 2010-05-16 17:01:30 UTC (rev 5755)
+++ trunk/core/src/core/org/jnode/vm/AllocationBitmap.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -22,6 +22,7 @@
import org.jnode.annotation.MagicPermission;
import org.jnode.annotation.Uninterruptible;
+import org.jnode.vm.facade.VmUtils;
import org.jnode.vm.scheduler.VmThread;
import org.vmmagic.unboxed.Address;
import org.vmmagic.unboxed.Extent;
@@ -91,7 +92,7 @@
*/
public final void initialize(Address start, Word bits) {
// Size of the lock (we only use an int)
- final Extent lockSize = Extent.fromIntZeroExtend(Vm.getArch()
+ final Extent lockSize = Extent.fromIntZeroExtend(VmUtils.getVm().getArch()
.getReferenceSize());
// Create a lock and actual bitmap
Copied: trunk/core/src/core/org/jnode/vm/BaseVmArchitecture.java (from rev 5755, trunk/core/src/core/org/jnode/vm/VmArchitecture.java)
===================================================================
--- trunk/core/src/core/org/jnode/vm/BaseVmArchitecture.java (rev 0)
+++ trunk/core/src/core/org/jnode/vm/BaseVmArchitecture.java 2010-07-11 14:27:38 UTC (rev 5756)
@@ -0,0 +1,313 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2003-2010 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.vm;
+
+import java.nio.ByteOrder;
+
+import org.jnode.annotation.Internal;
+import org.jnode.annotation.KernelSpace;
+import org.jnode.annotation.MagicPermission;
+import org.jnode.permission.JNodePermission;
+import org.jnode.system.resource.ResourceManager;
+import org.jnode.vm.classmgr.VmIsolatedStatics;
+import org.jnode.vm.classmgr.VmSharedStatics;
+import org.jnode.vm.compiler.IMTCompiler;
+import org.jnode.vm.compiler.NativeCodeCompiler;
+import org.jnode.vm.facade.MemoryMapEntry;
+import org.jnode.vm.facade.TypeSizeInfo;
+import org.jnode.vm.facade.VmUtils;
+import org.jnode.vm.objects.VmSystemObject;
+import org.jnode.vm.scheduler.IRQManager;
+import org.jnode.vm.scheduler.VmProcessor;
+import org.jnode.vm.scheduler.VmScheduler;
+import org.vmmagic.pragma.UninterruptiblePragma;
+import org.vmmagic.unboxed.Address;
+import org.vmmagic.unboxed.Extent;
+import org.vmmagic.unboxed.Word;
+
+/**
+ * Class describing a specific system architecture.
+ *
+ * @author Ewout Prangsma (ep...@us...)
+ */
+@MagicPermission
+public abstract class BaseVmArchitecture extends VmSystemObject implements org.jnode.vm.facade.VmArchitecture {
+
+ private final JNodePermission MMAP_PERM = new JNodePermission("getMemoryMap");
+ private transient MemoryMapEntry[] memoryMap;
+ private transient VmMultiMediaSupport multiMediaSupport;
+ private final int referenceSize;
+ private final VmStackReader stackReader;
+
+ protected BaseVmArchitecture(int referenceSize, VmStackReader stackReader) {
+ this.referenceSize = referenceSize;
+ this.stackReader = stackReader;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public abstract String getName();
+
+ /**
+ * Gets the full name of this architecture, including operating mode.
+ *
+ * @return the architecture's full name
+ */
+ public abstract String getFullName();
+
+ /**
+ * {@inheritDoc}
+ */
+ public abstract ByteOrder getByteOrder();
+
+ /**
+ * {@inheritDoc}
+ */
+ @KernelSpace
+ public final int getReferenceSize() {
+ return referenceSize;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public abstract byte getLogPageSize(int region)
+ throws UninterruptiblePragma;
+
+ /**
+ * Gets the size in bytes of an OS page in a given region
+ *
+ * @param region a {@link VirtualMemoryRegion} value
+ * @return the page size
+ */
+ public final Extent getPageSize(int region)
+ throws UninterruptiblePragma {
+ return Extent.fromIntZeroExtend(1 << getLogPageSize(region));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public abstract TypeSizeInfo getTypeSizeInfo();
+
+ /**
+ * Gets the stackreader for this architecture.
+ *
+ * @return the architecture's stack reader
+ */
+ @KernelSpace
+ public final VmStackReader getStackReader() {
+ return stackReader;
+ }
+
+ /**
+ * Gets all compilers for this architecture.
+ *
+ * @return The architecture's compilers, sorted by optimization level, from
+ * least optimizing to most optimizing.
+ */
+ public abstract NativeCodeCompiler[] getCompilers();
+
+ /**
+ * Gets all test compilers for this architecture.
+ * This can be used to test new compilers in a running system.
+ *
+ * @return The architecture's test compilers, sorted by optimization level, from
+ * least optimizing to most optimizing. If there are no configured test compilers,
+ * {@code null} will be returned.
+ */
+ public abstract NativeCodeCompiler[] getTestCompilers();
+
+ /**
+ * Gets the compiler of IMT's.
+ *
+ * @return the IMT compiler
+ */
+ public abstract IMTCompiler getIMTCompiler();
+
+ /**
+ * Called early on in the boot process (before the initialization of
+ * the memory manager) to initialize any architecture specific variables.
+ * Do not allocate memory here.
+ *
+ * @param emptyMmap If true, all page mappings in the AVAILABLE region
+ * are removed.
+ */
+ protected abstract void boot(boolean emptyMmap);
+
+ /**
+ * Find and start all processors in the system.
+ * All all discovered processors to the given list.
+ * The bootstrap processor is already on the given list.
+ */
+ protected abstract void initializeProcessors(ResourceManager rm);
+
+ /**
+ * Call this method to register a processor found in {@link #initializeProcessors(ResourceManager)}.
+ *
+ * @param cpu
+ */
+ protected final void addProcessor(VmProcessor cpu) {
+ ((VmImpl) VmUtils.getVm()).addProcessor(cpu);
+ }
+
+ /**
+ * Create a processor instance for this architecture.
+ *
+ * @return The processor
+ */
+ protected abstract VmProcessor createProcessor(int id, VmSharedStatics sharedStatics,
+ VmIsolatedStatics isolatedStatics, VmScheduler scheduler);
+
+ /**
+ * Create the IRQ manager for this architecture.
+ *
+ * @return the IRQManager
+ */
+ @Internal
+ public abstract IRQManager createIRQManager(VmProcessor processor);
+
+ /**
+ * {@inheritDoc}
+ */
+ public Address getStart(int space) {
+ switch (space) {
+ case VirtualMemoryRegion.BOOTIMAGE:
+ return Unsafe.getKernelStart();
+ case VirtualMemoryRegion.INITJAR:
+ return Unsafe.getInitJarStart();
+ default:
+ throw new IllegalArgumentException("Unknown space " + space);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Address getEnd(int space) {
+ switch (space) {
+ case VirtualMemoryRegion.BOOTIMAGE:
+ return Unsafe.getBootHeapEnd();
+ case VirtualMemoryRegion.INITJAR:
+ return Unsafe.getInitJarEnd();
+ default:
+ throw new IllegalArgumentException("Unknown space " + space);
+ }
+ }
+
+ /**
+ * Gets the physical address of the first whole page available for use
+ * by the memory manager.
+ *
+ * @return a physical address aligned on the appropriate page boundary
+ */
+ protected final Word getFirstAvailableHeapPage() {
+ return pageAlign(VirtualMemoryRegion.HEAP, Unsafe.getMemoryStart().toWord(), true);
+ }
+
+ /**
+ * Page align a given address (represented as a Word) in a given region.
+ *
+ * @param v an address value
+ * @param region a {@link VirtualMemoryRegion}.
+ * @param up If true, the value will be rounded up, otherwise rounded down.
+ * @return the corresponding page aligned address represented as a Word.
+ */
+ public final Word pageAlign(int region, Word v, boolean up) {
+ final int logPageSize = getLogPageSize(region);
+ if (up) {
+ v = v.add((1 << logPageSize) - 1);
+ }
+ return v.rshl(logPageSize).lsh(logPageSize);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public final Address pageAlign(int region, Address v, boolean up) {
+ return pageAlign(region, v.toWord(), up).toAddress();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public abstract boolean mmap(int region, Address start, Extent size, Address physAddr)
+ throws UninterruptiblePragma;
+
+ /**
+ * Unmap a region of the virtual memory space. Note that you cannot allocate
+ * memory in this memory, because it is used very early in the boot process.
+ *
+ * @param region Memory region
+ * @param start The start of the virtual memory region to unmap. This value is
+ * aligned down on pagesize.
+ * @param size The size of the virtual memory region to unmap. This value is
+ * aligned up on pagesize.
+ * @return true for success, false otherwise.
+ */
+ public abstract boolean munmap(int region, Address start, Extent size)
+ throws UninterruptiblePragma;
+
+ /**
+ * {@inheritDoc}
+ */
+ public final MemoryMapEntry[] getMemoryMap() {
+ final SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ sm.check...
[truncated message content] |