1.1b1 doesn't build with gcj 4.2
--------------------------------

                 Key: JRUBY-1542
                 URL: http://jira.codehaus.org/browse/JRUBY-1542
             Project: JRuby
          Issue Type: Bug
    Affects Versions: JRuby 1.1b1
         Environment: Debian sid, GCJ 4.2
            Reporter: Sebastien Delafond
            Assignee: Thomas E Enebo


When trying to build with GCJ 4.2, I get the following:
generate-method-classes:
    [touch] Creating 
/home/seb/work/debian/jruby/1.1b1/jruby-1.1b1/build/__empty.rb
     [java] Exception in thread "main" java.lang.NoClassDefFoundError: 
org.jruby.RubyModuleInvoker$include_p_method_1_0
     [java]    at java.lang.Class.initializeClass(libgcj.so.81)
     [java]    at java.lang.reflect.Constructor.newInstance(libgcj.so.81)
     [java]    at 
org.jruby.internal.runtime.methods.InvocationMethodFactory.getAnnotatedMethod(InvocationMethodFactory.java:379)
     [java]    at 
org.jruby.RubyModule.defineAnnotatedMethod(RubyModule.java:471)
     [java]    at 
org.jruby.RubyModule.defineAnnotatedMethods(RubyModule.java:458)
     [java]    at org.jruby.RubyModule.createModuleClass(RubyModule.java:99)
     [java]    at org.jruby.Ruby.initCoreClasses(Ruby.java:1276)
     [java]    at org.jruby.Ruby.init(Ruby.java:1171)
     [java]    at org.jruby.Ruby.newInstance(Ruby.java:322)
     [java]    at org.jruby.Main.runInterpreter(Main.java:168)
     [java]    at org.jruby.Main.run(Main.java:117)
     [java]    at org.jruby.Main.main(Main.java:92)
     [java] Caused by: java.lang.VerifyError: verification failed at PC 82 in 
org.jruby.RubyModuleInvoker$include_p_method_1_0:call((Lorg.jruby.runtime.ThreadContext;Lorg.jruby.runtime.builtin.IRubyObject;Lorg.jruby.RubyModule;Ljava.lang.String;[Lorg.jruby.runtime.builtin.IRubyObject;Lorg.jruby.runtime.Block;)Lorg.jruby.runtime.builtin.IRubyObject;):
 incompatible return type
     [java]    at java.lang.Class.initializeClass(libgcj.so.81)
     [java]    ...11 more

1.0.2 built fine with GCJ, after the following patches were applied:

diff -urNad jruby-1.1.0~/src/org/jruby/RubyZlib.java 
jruby-1.0.2/src/org/jruby/RubyZlib.java
--- jruby-1.1.0~/src/org/jruby/RubyZlib.java    2007-11-01 08:32:20.000000000 
-0700
+++ jruby-1.1.0/src/org/jruby/RubyZlib.java     2007-11-06 13:17:51.000000000 
-0800
@@ -663,7 +663,7 @@
             return orig_name == null ? getRuntime().getNil() : 
getRuntime().newString(orig_name);
         }
         
-        public Object to_io() {
+        public IRubyObject to_io() {
             return realIo;
         }
         
diff -urNad jruby-1.1.0~/src/org/jruby/compiler/impl/StandardASMCompiler.java 
jruby-1.0.2/src/org/jruby/compiler/impl/StandardASMCompiler.java
--- jruby-1.1.0~/src/org/jruby/compiler/impl/StandardASMCompiler.java   
2007-11-06 13:17:06.000000000 -0800
+++ jruby-1.1.0/src/org/jruby/compiler/impl/StandardASMCompiler.java    
2007-11-06 13:17:14.000000000 -0800
@@ -289,7 +289,7 @@
         cv.visitField(ACC_STATIC | ACC_PRIVATE | ACC_FINAL, "$isClassLoaded", 
cg.ci(Boolean.TYPE), null, Boolean.FALSE);
         cv.visitField(ACC_STATIC | ACC_PRIVATE | ACC_FINAL, "$class", 
cg.ci(Class.class), null, null);
         
-        SkinnyMethodAdapter mv = new 
SkinnyMethodAdapter(cv.visitMethod(ACC_PUBLIC, "<clinit>", cg.sig(Void.TYPE), 
null, null));
+       SkinnyMethodAdapter mv = new 
SkinnyMethodAdapter(cv.visitMethod(ACC_PUBLIC | ACC_STATIC, "<clinit>", 
cg.sig(Void.TYPE), null, null));
         mv.start();
         
         // This is a little hacky...since clinit recurses, set a boolean so we 
don't continue trying to load class
diff -urNad jruby-1.1.0~/src/org/jruby/libraries/ThreadLibrary.java 
jruby-1.0.2/src/org/jruby/libraries/ThreadLibrary.java
--- jruby-1.1.0~/src/org/jruby/libraries/ThreadLibrary.java     2007-11-01 
08:32:20.000000000 -0700
+++ jruby-1.1.0/src/org/jruby/libraries/ThreadLibrary.java      2007-11-06 
13:19:07.000000000 -0800
@@ -249,7 +249,7 @@
             return RubyNumeric.int2fix(getRuntime(), entries.size());
         }
 
-        public int num_waiting() { return 0; }
+        public IRubyObject num_waiting() { return getRuntime().newFixnum(0); }
 
         public synchronized IRubyObject pop(IRubyObject[] args) {
             boolean should_block = true;





-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list please visit:

    http://xircles.codehaus.org/manage_email

Reply via email to