[fedora-java] Re: gcj trunk -> redhat/gcc-4_1-branch merge complete

Andrew Haley aph at redhat.com
Fri Aug 25 12:33:46 UTC 2006


Andrew Haley writes:
 > Andrew Haley writes:
 >  > Thomas Fitzsimmons writes:
 >  >  > Hi,
 >  >  > 
 >  >  > gcc.gnu.org/svn/gcc/branches/redhat/gcc-4_1-branch-java-merge-20060823 now 
 >  >  > contains the trunk -> redhat/gcc-4_1-branch Java merge that I'd like to see go 
 >  >  > into FC6test3.
 >  >  > 
 >  >  > libjava's "make check" passes except for the -O3 StackTrace2 tests:
 >  >  > 
 >  >  > FAIL: StackTrace2 -O3 execution - source compiled test
 >  >  > FAIL: StackTrace2 -O3 execution - bytecode->native test
 >  >  > 
 >  >  > but these tests also failed on redhat/gcc-4_1-branch before my 2006-08-23 merge. 
 >  >  >   Andrew, can you take a look at what's causing these failures?
 >  > 
 >  > I'm having a lot of trouble duplicating this failure.  You should give
 >  > me access to a box on which this test fails.
 > 
 > Got it now.
 > 
 > FAIL: StackTrace2 -O3 execution - source compiled test
 > UNTESTED: StackTrace2 -O3 output - source compiled test

Forget it, it's a buggy testcase.  In here:

  public static void main(String[] args) 
  { 
    try
    {
      a();
    }
    catch (Exception x)
    {
      StackTraceElement[] trace = x.getStackTrace();
      checkTrace(trace);
    }
  }

  static void a() 
  { 
    new Inner();
  }
  
a() gets inlined into main(), so the stacktrace is only three elements
in size:

[Ljava.lang.StackTraceElement;@2aaaae240f78
{
  java.lang.StackTraceElement at 2aaaaab0b6c0
    {
      boolean isNative = false,
      java.lang.String fileName = "StackTrace2.java",
      java.lang.String methodName = "doCrash",
      java.lang.String declaringClass = "StackTrace2$Inner",
      int lineNumber = 33,
    }, java.lang.StackTraceElement at 2aaaaab0b690
    {
      boolean isNative = false,
      java.lang.String fileName = "StackTrace2.java",
      java.lang.String methodName = "<init>",
      java.lang.String declaringClass = "StackTrace2$Inner",
      int lineNumber = 28,
    }, java.lang.StackTraceElement at 2aaaaab0b660
    {
      boolean isNative = false,
      java.lang.String fileName = "StackTrace2.java",
      java.lang.String methodName = "main",
      java.lang.String declaringClass = "StackTrace2",
      int lineNumber = 21,
    }, 
}

It's safe to inline methods within the same class -- they can't have
different protection domains, for example.

Andrew.




More information about the fedora-devel-java-list mailing list