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

dead code/loops checks and elimination.

    • Icon: Enhancement Enhancement
    • Resolution: Fixed
    • Icon: P4 P4
    • 6
    • 1.5.1
    • hotspot
    • None
    • b51
    • sparc
    • solaris_9

      I had to fix a lot of bugs related to dead loops checks missing.
      When we create a new node during transformation (call Ideal() methods)
      it does not have associated type. In the case of a dead loop
      (when a node references itself directly or through other nodes
      but not through region or phi nodes) we could try to transform
      this new node again (call Ideal() in the loop in transform_old()).
      And we hit assert of SEGV (in product version) when we try to
      access the node's type.

      One solution is to catch the dead loop situation and stop
      transformations. This is what I did before. But each time I missed
      some cases. We can try to unify somehow this.

      Second suggestion is the aggressive dead code elimination.
      It should be trusted (no dead code escapes it) otherwise
      we should keep first solution.

      Third one is to assign a bottom type for new nodes created
      during transformation to avoid the assert. This one is just
      to hide the problem.

          Loading...
          Uploaded image for project: 'JDK'
          1. JDK
          2. JDK-5067347

          dead code/loops checks and elimination.

            • Icon: Enhancement Enhancement
            • Resolution: Fixed
            • Icon: P4 P4
            • 6
            • 1.5.1
            • hotspot
            • None
            • b51
            • sparc
            • solaris_9

              I had to fix a lot of bugs related to dead loops checks missing.
              When we create a new node during transformation (call Ideal() methods)
              it does not have associated type. In the case of a dead loop
              (when a node references itself directly or through other nodes
              but not through region or phi nodes) we could try to transform
              this new node again (call Ideal() in the loop in transform_old()).
              And we hit assert of SEGV (in product version) when we try to
              access the node's type.

              One solution is to catch the dead loop situation and stop
              transformations. This is what I did before. But each time I missed
              some cases. We can try to unify somehow this.

              Second suggestion is the aggressive dead code elimination.
              It should be trusted (no dead code escapes it) otherwise
              we should keep first solution.

              Third one is to assign a bottom type for new nodes created
              during transformation to avoid the assert. This one is just
              to hide the problem.

                    kvn Vladimir Kozlov
                    kvn Vladimir Kozlov
                    Votes:
                    0 Vote for this issue
                    Watchers:
                    0 Start watching this issue

                      Created:
                      Updated:
                      Resolved:
                      Imported:
                      Indexed:

                        kvn Vladimir Kozlov
                        kvn Vladimir Kozlov
                        Votes:
                        0 Vote for this issue
                        Watchers:
                        0 Start watching this issue

                          Created:
                          Updated:
                          Resolved:
                          Imported:
                          Indexed: