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

BugFixes from Azul Systems

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P5 P5
    • 6
    • 1.4.2_04, 5.0u5, 6
    • hotspot
    • None
    • mustang
    • generic, x86, sparc
    • linux, linux_2.4, solaris_8, solaris_9

        Several bug fixes were recommended from Cliff Click of Azul Systems
        The fix for this bug containes fixes only for the next 2 problems described by Cliff.
        It does not fix the problem described in Comments section.
        That problem is addressed in 6472714.

        ======================================================================================
        Subject: Bug dejeur
        Date: Mon, 02 Feb 2004 08:20:47 -0800
        From: Cliff Click <###@###.###>
        Organization: Azul Systems
        To: David Cox <###@###.###>

        Fix a OBOB in the allocator. Bug is having a derived live range merging
        at a Phi; this requires a bases be merged at the same block, sometimes
        requiring a base-phi be inserted. If the block has no instructions
        between the last Phi and the block-ending branch, you'll miss out that a
        base-phi is needed. Requires a Sparc V9-style compare-n-branch in 1
        instruction style thing, plus of course a merging derived live range.

        ====
        //java/working/main-dev/spin1/java/hotspot/src/share/vm/opto/chaitin.cpp#2
        (text) ====

        @@ -1411,7 +1411,7 @@

           // Search the current block for an existing base-Phi
           Block *b = _cfg._bbs[derived->_idx];
        - for( i = 1; i < b->end_idx(); i++ ) {// Search for matching Phi
        + for( i = 1; i <= b->end_idx(); i++ ) {// Search for matching Phi
             Node *phi = b->_nodes[i];
             if( !phi->is_Phi() ) { // Found end of Phis with no match?
               b->_nodes.insert( i, base ); // Must insert created Phi here as base

        Enjoy!
        Cliff
        ===============================================================================

        Subject: HotSpot bug dejeur
        Date: Mon, 02 Feb 2004 08:13:41 -0800
        From: Cliff Click <###@###.###>
        Organization: Azul Systems
        To: David Cox <###@###.###>

        I fixed a bug with trying to split-thru-phi a c-move where the guard
        value is loop-INvariant and the data values are loop-Varying.
        I added this code:

        ==== //java/main-dev/java/hotspot/src/share/vm/opto/loopopts.cpp#14
        (text) ====

        @@ -690,6 +690,8 @@
               if( get_ctrl(iff->in(2)) == n_ctrl ||
               get_ctrl(iff->in(3)) == n_ctrl )
             return; // Inputs not yet split-up
        + if( get_loop(n_ctrl) != get_loop(get_ctrl(iff)) )
        + return; // Loop-invar test gates loop-varying CMOVE?
             }

             // Do not do 'split-if' if some paths are dead. First do dead code

        Enjoy!
        Cliff

              azeemj Azeem Jiva
              azeemj Azeem Jiva
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: