From: David G. (JIRA) <ji...@co...> - 2008-05-30 14:44:27
|
[ http://jira.codehaus.org/browse/RVM-521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=136818#action_136818 ] David Grove commented on RVM-521: --------------------------------- Looking at the class files for ObjectReference via javap on the ANU machines and on my machines at IBM it appears the problem is that whichever java compiler compiled ObjectReference.java at ANU is "helpfully" adding the following methods, even though they were not declared in the .java file. public boolean equals(java.lang.Object); Code: 0: aload_0 1: aload_1 2: invokespecial #3; //Method org/vmmagic/unboxed/ArchitecturalWord.equals:(Ljava/lang/Object;)Z 5: ireturn public int hashCode(); Code: 0: aload_0 1: invokespecial #4; //Method org/vmmagic/unboxed/ArchitecturalWord.hashCode:()I 4: ireturn public java.lang.String toString(); Code: 0: aload_0 1: invokespecial #5; //Method org/vmmagic/unboxed/ArchitecturalWord.toString:()Ljava/lang/String; 4: areturn } It looks like someone has decided that if a superclass overrides a method of java.lang.Object, then the subclasses that don't define their own version get a compiler-generated method that invoked the superclass implementation. What a brilliant idea... > Freshly checked out Jikes fails to build with an uninterruptible violation > -------------------------------------------------------------------------- > > Key: RVM-521 > URL: http://jira.codehaus.org/browse/RVM-521 > Project: RVM > Issue Type: Bug > Components: Infrastructure: Build > Environment: prototype-opt Jikes RVM 2.9.3+svn (r14346) using GNU Classpath 0.97.1 > Reporter: Andreas Sewe > Assignee: David Grove > Priority: Minor > Fix For: 2.9.4 > > > This issue is related to the following commit: http://jikesrvm.svn.sourceforge.net/viewvc/jikesrvm?view=rev&revision=14339. > A freshly checked out Jikes fails to build with an {{UNINTERRUPTIBLE VIOLATION}}; the boot image writer fails to recognize that {{org.vmmagic.unboxed.Objectreference}}, although itself {{Uninterruptible}}, inherits an {{Interuptible}} {{toString}} method from its superclass, {{org.vmmagic.unboxed.ArchitecturalWord} -- and doesn't define one on its own: > {{< BootstrapCL, Lorg/vmmagic/unboxed/ObjectReference; >.toString ()Ljava/lang/String; at line 26}} > {{Uninterruptible method calls non-uninterruptible method < BootstrapCL, Lorg/vmmagic/unboxed/ArchitecturalWord; >.toString ()Ljava/lang/String;}} > A short-term fix is rather simple: {{@Interruptible public String toString() { return super.toString(); }}}, although in the long term the boot image writer ought to be made smarter. -- 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 |