You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by gs...@apache.org on 2007/02/15 19:38:08 UTC

svn commit: r508067 - in /harmony/enhanced/drlvm/trunk: src/test/regression/H3048/ src/test/regression/H3048/H3048.java src/test/regression/H3048/run.test.xml vm/vmcore/src/class_support/Initialize.cpp

Author: gshimansky
Date: Thu Feb 15 10:38:08 2007
New Revision: 508067

URL: http://svn.apache.org/viewvc?view=rev&rev=508067
Log:
Applied HARMONY-3048 [drlvm][classloader] Assertion !exn_raised() fails in <clinit> method invocation

Patch also contains regression test.

Tests passed on Ubuntu6 x86, Windows XP x86, SuSE x86_64 and SuSE9 IPF


Added:
    harmony/enhanced/drlvm/trunk/src/test/regression/H3048/
    harmony/enhanced/drlvm/trunk/src/test/regression/H3048/H3048.java   (with props)
    harmony/enhanced/drlvm/trunk/src/test/regression/H3048/run.test.xml   (with props)
Modified:
    harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Initialize.cpp

Added: harmony/enhanced/drlvm/trunk/src/test/regression/H3048/H3048.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/src/test/regression/H3048/H3048.java?view=auto&rev=508067
==============================================================================
--- harmony/enhanced/drlvm/trunk/src/test/regression/H3048/H3048.java (added)
+++ harmony/enhanced/drlvm/trunk/src/test/regression/H3048/H3048.java Thu Feb 15 10:38:08 2007
@@ -0,0 +1,32 @@
+package org.apache.harmony.drlvm.tests.regression.h3048;
+
+import junit.framework.TestCase;
+
+public class H3048 extends TestCase {
+    public void test() {
+        boolean passed = false;
+        try {
+            new MyTest();
+        } catch (NoClassDefFoundError e) {
+            passed = true;
+        }
+        assertTrue(passed);
+    }
+}
+
+class MyTest extends MyTestSuper {
+    static {
+        System.out.println("MyTest.<clinit>");
+    }
+}
+
+class MyTestSuper {
+    static {
+        try {
+            throw new MyException();
+        } catch(Exception e) {
+        }
+    }
+}
+
+class MyException extends Exception {}

Propchange: harmony/enhanced/drlvm/trunk/src/test/regression/H3048/H3048.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/drlvm/trunk/src/test/regression/H3048/run.test.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/src/test/regression/H3048/run.test.xml?view=auto&rev=508067
==============================================================================
--- harmony/enhanced/drlvm/trunk/src/test/regression/H3048/run.test.xml (added)
+++ harmony/enhanced/drlvm/trunk/src/test/regression/H3048/run.test.xml Thu Feb 15 10:38:08 2007
@@ -0,0 +1,11 @@
+<project name="RUN HARMONY-3048 Regression Test">
+    <target name="run-test">
+        <!-- extend JUnit test launcher to run JNI test -->
+        <delete
+             file="${reg.test.class.path}/org/apache/harmony/drlvm/tests/regression/h3048/MyException.class"
+             verbose="true"/>
+        <run-junit-test 
+             test="org.apache.harmony.drlvm.tests.regression.h3048.H3048" />
+    </target>
+</project>
+

Propchange: harmony/enhanced/drlvm/trunk/src/test/regression/H3048/run.test.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Initialize.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Initialize.cpp?view=diff&rev=508067&r1=508066&r2=508067
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Initialize.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Initialize.cpp Thu Feb 15 10:38:08 2007
@@ -101,7 +101,7 @@
     if(has_super_class()) {
         class_initialize_ex(get_super_class());
 
-        if(get_super_class()->in_error()) { 
+        if(exn_raised()) { 
             jthread_monitor_enter(jlc);
             m_initializing_thread = NULL;
             lock();