Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4204631

JIT internal error 'LD: null preHeader'

XMLWordPrintable

    • generic, x86
    • generic, windows_98, windows_nt



      Name: dkC59003 Date: 01/21/99



      Symantec JIT v3.00.078(x) doesn't compile hand-coded static Method walk:"([[FI)I"
      ( in source fpm01401m1a.jasm below ) with message ( see fpm01401m1.trace below ).

      The method contains internal subroutine and a 'jsr' instruction is used. The method
      checks the correctness of execution a 'fneg' instruction for argument, loaded from
      local or array component or field. Array of pairs {argument value, result value}
      is passed to the method with start index in the array. Class fpm01401m1 is used
      for the arguments array preparation and for the method invocation.

      The same error occurs in the similar method for a 'dneg' testing.

      This bug affects new JCK tests

      vm/fp/fpm014/fpm01401m1/fpm01401m1.html
      vm/fp/fpm014/fpm01401m2/fpm01401m2.html .

      Unchanged, they can't check proper execution of a 'fneg' and 'dneg' instruction
      in jit-compiled code.

      ========================================= fpm01401m1.trace
      >H:\ld25\java\dest\jdk1.2.2C\win32\bin\java.exe -version
      java version "1.2.2"
      Classic VM (build JDK-1.2.2-C, native threads)

      >H:\ld25\java\dest\jdk1.2.2C\win32\bin\java.exe fpm01401m1
      A nonfatal internal JIT (3.00.078(x)) error 'LD: null preHeader' has occurred in :
        'fpm01401m1a.walk ([[FI)I': Interpreting method.
        Please report this error in detail to http://java.sun.com/cgi-bin/bugreport.cgi

      ========================================= fpm01401m1a.jasm
      super class fpm01401m1a
      {
      static Field from:I;
      static Field holder:F;

      static Method walk:"([[FI)I"
      stack 6 locals 9
      // local 0 - {{arg1,res}}
      // local 1 - start index in 0
      // local 2 - not used
      // local 3 - {arg1,res}
      // local 4 - isNaN(res)
      // local 5 - isZero(res)
      // local 6 - returnAddress for CHECK
      // local 7,8 - arg1
      {
      goto INLOOP;
      LOOP: aload_0;
      iload_1;
      aaload; // got {arg1,res}
      dup; // ----
      dup; // --------
      astore_3; // --------
      iconst_0;
      faload; //arg1
      dup;
                      putstatic Field holder:"F";
      fstore 7;
      iconst_1; // ----
      faload;
      dup;
      invokestatic Method java/lang/Float.isNaN:"(F)Z";
      istore 4;
      fconst_0;
      fcmpl; // res != 0
      istore 5;

      aload_3;
      iconst_0;
      faload; //arg1 from array[]
      fneg;
      iconst_0;
      jsr CHECK;
                      getstatic Field holder:"F"; //arg1 from field
      fneg;
      iconst_1;
      jsr CHECK;
      fload 7; //arg1 from local
      fneg;
      iconst_2;
      jsr CHECK;

      iinc 1, -1;
      INLOOP: iload_1;
      ifge LOOP;
      RET: iload_1;
      ireturn;
      CHECK: //------------------ subroutine
      astore 6;
      putstatic Field from:"I";
      iload 4;
      ifne NAN;
      iload 5;
      ifeq ZERO; // need additional work for zero value
      aload_3;
      iconst_1;
      faload; // res
      fcmpl;
      ifne RET;
      goto CONT; //------------------ return
      ZERO: dup;
      aload_3;
      iconst_1;
      faload; // res
      fcmpl;
      ifeq GOON;
      pop;
      goto RET;
      GOON:
      getstatic Field java/lang/Float.MIN_VALUE:"F";
      swap;
      fdiv; // wait +/-Inf==(MIN_VALUE/(+/-0))

      getstatic Field java/lang/Float.MIN_VALUE:"F";
      aload_3;
      iconst_1;
      faload; // res == (+/-0)
      fdiv; // wait +/-Inf==(MIN_VALUE/(+/-0))

      fcmpl;
      ifne RET;
      goto CONT; //------------------ return
      NAN: invokestatic Method java/lang/Float.isNaN:"(F)Z";
      ifeq RET;
      CONT: ret 6; //------------------ return
      }

      Method "<init>":"()V"
      stack 2 locals 1
      {
      aload_0;
      invokespecial Method java/lang/Object."<init>":"()V";
      return;
      }

      }

      ========================================= fpm01401m1.java
      import java.io.PrintStream;

      public class fpm01401m1 {

          public static void main(String argv[]) {
              System.exit(run(argv, System.out) + 95/*STATUS_TEMP*/);
          }

          public static int run(String argv[], PrintStream out) {
      final float X = Float.MAX_VALUE - (Float.MAX_VALUE-(Float.MAX_VALUE/(1L<<24)))/2;
      final float Y = Float.MIN_VALUE*(1L<<(24-1));
      fpm01401m1a R = new fpm01401m1a();
      boolean OK = true;
      float[] aaX[] = {
      { Float.MIN_VALUE, -Float.MIN_VALUE},
      { -Float.MIN_VALUE, Float.MIN_VALUE},
      { Float.MAX_VALUE, -Float.MAX_VALUE},
      { -Float.MAX_VALUE, Float.MAX_VALUE},
      { 0, -0.0f },
      { -0.0f, 0 },
      { -X, X },
      { X, -X },
      { -Y, Y },
      { Y, -Y },
      { Float.MIN_VALUE, -Float.MIN_VALUE},
      { -Float.MIN_VALUE, Float.MIN_VALUE},
      { Float.MAX_VALUE, -Float.MAX_VALUE},
      { -Float.MAX_VALUE, Float.MAX_VALUE},
      { Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY },
      { Float.NEGATIVE_INFINITY, Float.POSITIVE_INFINITY },
      { -0.0f/0, Float.NaN },
      { Float.NaN, Float.NaN },
      };

      int j;
      int i=aaX.length;
      while ( i>0 ) {
      j = i-1;
      i = R.walk(aaX,j);
      if ( i>=0 ) {
      out.println("Failed at index "+i+" with "+aaX[i]+"");
      OK = false;
      }
      }
      return OK ? 0/*STATUS_PASSED*/
      : 2/*STATUS_FAILED*/;
          }

      }

      =========================================


      ======================================================================

      Name: skT88420 Date: 06/03/99


       hi, just messing around with break and continue and got the above error. Source code as follows:-


       //: ConTest.java
       
      class ConTest {

      public static void main(String[] args) {
      int i=0;
      int j=0;
      outerlabel:
      for(;j<10;j++) {

      label1:
      for (; i<10; i++) {
      System.out.println(i);
      continue outerlabel;
      }
      }
      }
       } ///:~
      (Review ID: 83864)
      ======================================================================

      Name: skT88420 Date: 08/23/99


      A nonfatal internal JIT (3.00.078(x)) error 'LD: null preHeader' has occurred in
       :
        'sun/tools/tree/TryStatement.check (Lsun/tools/java/Environment;Lsun/tools/tre
      e/Context;Lsun/tools/tree/Vset;Ljava/util/Hashtable;)Lsun/tools/tree/Vset;': Int
      erpreting method.

      Classic VM (build JDK-1.2.1-A, native threads)
      java full version "JDK-1.2.1-A"
      (Review ID: 94238)
      ======================================================================

      Name: krT82822 Date: 11/15/99


      java version "1.2"
      Classic VM (build JDK-1.2-V, native threads)

      Nonfatal internal JIT (3.00.078(x)) error 'LD: null preHeader' has occurred in .

      Our application is often show this error in console window. We have not any
      problem with it, but our customers have been nervious a lot. This problem do
      not appear when it is used HotSpot. Unfortunately we cannot use HotSpot for all
      our customers. How can we avoid this error? I
      (Review ID: 97842)
      ======================================================================

      Name: skT88420 Date: 01/28/2000


      java version "1.2.2"
      Classic VM (build JDK-1.2.2-W, native threads, symcjit)


      While executing my little test programm following internal bug occured:

      >java Aufgabe51
      A nonfatal internal JIT (3.10.107(x)) error 'LD: null preHeader' has occurred in
       :'Aufgabe51.main ([Ljava/lang/String;)V': Interpreting method.
      Please report this error in detail to http://java.sun.com/cgi-bin/bugreport.cgi

      It does not affect my programm:

      -----------------

      /** Aufgabe Aufgabe51 */
      class Aufgabe51
      {
         /** Hauptprogramm */
         public static void main(String [] args){

            // Aufgabe a)

            int i = 1; // Startwert
            int ende = 10;
            while (i < ende){
               /* <S> z.B.: */ System.out.print(i);
               i++; // am Ende der Schleife (repr. den Update-Teil)
               }
            System.out.println();
            System.out.println("------------------------");

            // Aufgabe b)

            i = 1;
            /* <S> z.B.: */ System.out.print(i); i++;
            /* <s> muss hier auch schon stehen, weil die Do-Schleife
               nicht abweisend ist, der Code in der Schleife also immer
               mindestens einmal ausgef?hrt wird */
            while (i < ende){
               /* <S> z.B.: */ System.out.print(i); i++;
               }
            System.out.println();
            System.out.println("------------------------");

            // Aufgabe c)

            i = 1;
            schleife1: while (true){
               while (i == 1){
                  /* <S1> z.B.: */ System.out.println("<S1>");
      break schleife1;
      }
               /* <S2> z.B.: */ System.out.println("<S2>");
               break;
               }

            i = 2;
            schleife2: while (true){
               while (i == 1){
                  /* <S1> z.B.: */ System.out.println("<S1>");
      break schleife2;
      }
               /* <S2> z.B.: */ System.out.println("<S2>");
               break;
               }

            System.out.println("------------------------");
            // Aufgabe d)

            for (i = 1; i<=3; i++){
               schleife3: while (true){
                  while (i==1){
                     /* <S1> z.B.: */ System.out.println("<S1>");
                     break schleife3;
                     }
                  while (i==2){
                     /* <S2> z.B.: */ System.out.println("<S2>");
                     break schleife3;
                     }
                  /* <S3> z.B.: */ System.out.println("<S3>");
                  break;
                  }
               }
            }

      }
      -----------------

      I hope it's helpfull for you...
      (Review ID: 100453)
      ======================================================================

      Name: krT82822 Date: 01/29/2000


      java version "1.2.2"
      Classic VM (build JDK-1.2.2-001, native threads, symcjit)

      Hello there !

      I want to report you this bug :

      A nonfatal internal JIT (3.10.107(x)) error 'LD: null preHeader' has occurred in
      : 'db/Search.?? ([I)V': Interpreting method.

      I could?nt locate the piece of code where this error occurs, but I hope you are
      able to give me an explanation for it.
      So i also don?t know the impact of the error, but it feels as if the application
      was slowed down by this bug...?!? (sorry for my bad english)

      OK so far, please help me if you can
             Best regards, Andreas Gardt
      (Review ID: 100501)
      ======================================================================

            Unassigned Unassigned
            dkhukhrosunw Dmitry Khukhro (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: