From: <ans...@us...> - 2007-01-16 23:17:34
|
Revision: 3081 http://jnode.svn.sourceforge.net/jnode/?rev=3081&view=rev Author: ansari82 Date: 2007-01-16 15:17:32 -0800 (Tue, 16 Jan 2007) Log Message: ----------- Made methods that use Unsafe.pushxxx() set to NoOptCompile as this can confuse JikesOpt generated code Modified Paths: -------------- branches/jikesRVM/core/src/core/org/jnode/vm/HeapHelperImpl.java branches/jikesRVM/core/src/core/org/jnode/vm/VmReflection.java branches/jikesRVM/core/src/core/org/jnode/vm/VmSystemClassLoader.java branches/jikesRVM/core/src/core/org/jnode/vm/compiler/CompiledMethod.java Modified: branches/jikesRVM/core/src/core/org/jnode/vm/HeapHelperImpl.java =================================================================== --- branches/jikesRVM/core/src/core/org/jnode/vm/HeapHelperImpl.java 2007-01-16 23:16:49 UTC (rev 3080) +++ branches/jikesRVM/core/src/core/org/jnode/vm/HeapHelperImpl.java 2007-01-16 23:17:32 UTC (rev 3081) @@ -22,6 +22,7 @@ package org.jnode.vm; import org.jnode.vm.annotation.MagicPermission; +import org.jnode.vm.annotation.NoOptCompile; import org.jnode.vm.annotation.Uninterruptible; import org.jnode.vm.classmgr.ObjectFlags; import org.jnode.vm.classmgr.ObjectLayout; @@ -199,6 +200,7 @@ * @see org.jnode.vm.memmgr.HeapHelper#invokeFinalizer(org.jnode.vm.classmgr.VmMethod, * java.lang.Object) */ + @NoOptCompile //Uses Unsafe.pushxxx() which is bad for JikesOpt public final void invokeFinalizer(VmMethod finalizer, Object object) { Unsafe.pushObject(object); Unsafe.invokeVoid(finalizer); Modified: branches/jikesRVM/core/src/core/org/jnode/vm/VmReflection.java =================================================================== --- branches/jikesRVM/core/src/core/org/jnode/vm/VmReflection.java 2007-01-16 23:16:49 UTC (rev 3080) +++ branches/jikesRVM/core/src/core/org/jnode/vm/VmReflection.java 2007-01-16 23:17:32 UTC (rev 3081) @@ -24,6 +24,7 @@ import java.lang.reflect.InvocationTargetException; import org.jnode.vm.annotation.MagicPermission; +import org.jnode.vm.annotation.NoOptCompile; import org.jnode.vm.classmgr.VmField; import org.jnode.vm.classmgr.VmInstanceField; import org.jnode.vm.classmgr.VmMethod; @@ -309,6 +310,7 @@ * @return Object * @throws InvocationTargetException */ + @NoOptCompile //Uses Unsafe.pushxxx() which is bad for JikesOpt public static Object invoke(VmMethod method, Object o, Object[] args) throws InvocationTargetException { int argCount = method.getNoArguments(); @@ -440,6 +442,7 @@ * @throws IllegalAccessException * @throws InvocationTargetException */ + @NoOptCompile //Uses Unsafe.pushxxx() which is bad for JikesOpt public static Object newInstance(VmMethod constructor) throws InstantiationException, IllegalAccessException, InvocationTargetException { Modified: branches/jikesRVM/core/src/core/org/jnode/vm/VmSystemClassLoader.java =================================================================== --- branches/jikesRVM/core/src/core/org/jnode/vm/VmSystemClassLoader.java 2007-01-16 23:16:49 UTC (rev 3080) +++ branches/jikesRVM/core/src/core/org/jnode/vm/VmSystemClassLoader.java 2007-01-16 23:17:32 UTC (rev 3081) @@ -297,8 +297,7 @@ @PrivilegedActionPragma public VmType< ? > loadClass(String name, boolean resolve) throws ClassNotFoundException { - - // Also implement the java.lang.ClassLoader principals here +// Also implement the java.lang.ClassLoader principals here // otherwise they cannot work in java.lang.ClassLoader. if ((parent != null) && !parent.skipParentLoader(name)) { try { @@ -308,7 +307,6 @@ // Don't care, try it ourselves. } } - VmType cls = findLoadedClass(name); if (cls != null) { return cls; @@ -316,11 +314,7 @@ if (classInfos == null) { // Unsafe.debug("classInfos==null"); throw new ClassNotFoundException(name); - } - - // BootLog.debug("load class" + name); - - if (name.indexOf('/') >= 0) { + }if (name.indexOf('/') >= 0) { //throw new IllegalArgumentException("name contains '/'"); //throw CNFE here throw new ClassNotFoundException(name); @@ -329,39 +323,53 @@ if ((failedClassNames != null) && (failedClassNames.contains(name))) { throw new ClassNotFoundException(name); } - + final ClassInfo ci = getClassInfo(name, true); - + if (!ci.isLoaded()) { - try { - if (name.charAt(0) == '[') { - ci.setVmClass(loadArrayClass(name, resolve)); - } else { - ci.setVmClass(loadNormalClass(name)); + if (name.charAt(0) == '[') { + try { + ci.setVmClass(loadArrayClass(name, resolve)); + if (failOnNewLoad) { + throw new RuntimeException( + "Cannot load a new class when failOnNewLoad is set (" + + name + ")"); + } + }catch (ClassNotFoundException ex) { + ci.setLoadError(ex.toString()); + classInfos.remove(ci.getName()); + addFailedClassName(name); + throw new ClassNotFoundException(name, ex); } - if (failOnNewLoad) { - throw new RuntimeException( - "Cannot load a new class when failOnNewLoad is set (" - + name + ")"); - } - } catch (ClassNotFoundException ex) { - ci.setLoadError(ex.toString()); - classInfos.remove(ci.getName()); - addFailedClassName(name); - throw new ClassNotFoundException(name, ex); - } catch (IOException ex) { - ci.setLoadError(ex.toString()); - classInfos.remove(ci.getName()); - addFailedClassName(name); - throw new ClassNotFoundException(name, ex); + } else { + try { + ci.setVmClass(loadNormalClass(name)); + if (failOnNewLoad) { + throw new RuntimeException( + "Cannot load a new class when failOnNewLoad is set (" + + name + ")"); + } + } catch (ClassNotFoundException ex) { + ci.setLoadError(ex.toString()); + classInfos.remove(ci.getName()); + addFailedClassName(name); + throw new ClassNotFoundException(name, ex); + } catch (IOException ex) { + ci.setLoadError(ex.toString()); + classInfos.remove(ci.getName()); + addFailedClassName(name); + throw new ClassNotFoundException(name, ex); + } } - if (resolve) { + if (resolve) { ci.getVmClass().link(); } } return ci.getVmClass(); } + + private final void addFailedClassName(String name) { if (failedClassNames == null) { failedClassNames = new HashSet<String>(); Modified: branches/jikesRVM/core/src/core/org/jnode/vm/compiler/CompiledMethod.java =================================================================== --- branches/jikesRVM/core/src/core/org/jnode/vm/compiler/CompiledMethod.java 2007-01-16 23:16:49 UTC (rev 3080) +++ branches/jikesRVM/core/src/core/org/jnode/vm/compiler/CompiledMethod.java 2007-01-16 23:17:32 UTC (rev 3081) @@ -31,7 +31,7 @@ /** * @author Ewout Prangsma (ep...@us...) */ -public final class CompiledMethod { +public class CompiledMethod { private NativeStream.ObjectRef codeStart; private NativeStream.ObjectRef codeEnd; @@ -40,7 +40,7 @@ private final VmAddressMap addressTable; private final int optLevel; private int ccId = -1; - private VM_CompiledMethod jikesCM; +// private VM_CompiledMethod jikesCM; /** * Initialize this instance @@ -147,11 +147,11 @@ return ccId; } - public VM_CompiledMethod getJikesCM() { - return jikesCM; - } - - public void setJikesCM(VM_CompiledMethod method) { - jikesCM = method; - } +// public VM_CompiledMethod getJikesCM() { +// return jikesCM; +// } +// +// public void setJikesCM(VM_CompiledMethod method) { +// jikesCM = method; +// } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |