src/share/vm/opto/node.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/opto

src/share/vm/opto/node.hpp

Print this page
rev 5902 : 8027754: Enable loop optimizations for loops with MathExact inside


  52 class CallRuntimeNode;
  53 class CallStaticJavaNode;
  54 class CatchNode;
  55 class CatchProjNode;
  56 class CheckCastPPNode;
  57 class ClearArrayNode;
  58 class CmpNode;
  59 class CodeBuffer;
  60 class ConstraintCastNode;
  61 class ConNode;
  62 class CountedLoopNode;
  63 class CountedLoopEndNode;
  64 class DecodeNarrowPtrNode;
  65 class DecodeNNode;
  66 class DecodeNKlassNode;
  67 class EncodeNarrowPtrNode;
  68 class EncodePNode;
  69 class EncodePKlassNode;
  70 class FastLockNode;
  71 class FastUnlockNode;
  72 class FlagsProjNode;
  73 class IfNode;
  74 class IfFalseNode;
  75 class IfTrueNode;
  76 class InitializeNode;
  77 class JVMState;
  78 class JumpNode;
  79 class JumpProjNode;
  80 class LoadNode;
  81 class LoadStoreNode;
  82 class LockNode;
  83 class LoopNode;
  84 class MachBranchNode;
  85 class MachCallDynamicJavaNode;
  86 class MachCallJavaNode;
  87 class MachCallLeafNode;
  88 class MachCallNode;
  89 class MachCallRuntimeNode;
  90 class MachCallStaticJavaNode;
  91 class MachConstantBaseNode;
  92 class MachConstantNode;
  93 class MachGotoNode;
  94 class MachIfNode;
  95 class MachNode;
  96 class MachNullCheckNode;
  97 class MachProjNode;
  98 class MachReturnNode;
  99 class MachSafePointNode;
 100 class MachSpillCopyNode;
 101 class MachTempNode;
 102 class Matcher;
 103 class MathExactNode;
 104 class MemBarNode;
 105 class MemBarStoreStoreNode;
 106 class MemNode;
 107 class MergeMemNode;
 108 class MulNode;
 109 class MultiNode;
 110 class MultiBranchNode;
 111 class NeverBranchNode;
 112 class Node;
 113 class Node_Array;
 114 class Node_List;
 115 class Node_Stack;
 116 class NullCheckNode;
 117 class OopMap;
 118 class ParmNode;
 119 class PCTableNode;
 120 class PhaseCCP;
 121 class PhaseGVN;
 122 class PhaseIterGVN;
 123 class PhaseRegAlloc;


 558             DEFINE_CLASS_ID(CallStaticJava,   CallJava, 0)
 559             DEFINE_CLASS_ID(CallDynamicJava,  CallJava, 1)
 560           DEFINE_CLASS_ID(CallRuntime,      Call, 1)
 561             DEFINE_CLASS_ID(CallLeaf,         CallRuntime, 0)
 562           DEFINE_CLASS_ID(Allocate,         Call, 2)
 563             DEFINE_CLASS_ID(AllocateArray,    Allocate, 0)
 564           DEFINE_CLASS_ID(AbstractLock,     Call, 3)
 565             DEFINE_CLASS_ID(Lock,             AbstractLock, 0)
 566             DEFINE_CLASS_ID(Unlock,           AbstractLock, 1)
 567       DEFINE_CLASS_ID(MultiBranch, Multi, 1)
 568         DEFINE_CLASS_ID(PCTable,     MultiBranch, 0)
 569           DEFINE_CLASS_ID(Catch,       PCTable, 0)
 570           DEFINE_CLASS_ID(Jump,        PCTable, 1)
 571         DEFINE_CLASS_ID(If,          MultiBranch, 1)
 572           DEFINE_CLASS_ID(CountedLoopEnd, If, 0)
 573         DEFINE_CLASS_ID(NeverBranch, MultiBranch, 2)
 574       DEFINE_CLASS_ID(Start,       Multi, 2)
 575       DEFINE_CLASS_ID(MemBar,      Multi, 3)
 576         DEFINE_CLASS_ID(Initialize,       MemBar, 0)
 577         DEFINE_CLASS_ID(MemBarStoreStore, MemBar, 1)
 578       DEFINE_CLASS_ID(MathExact,   Multi, 4)
 579 
 580     DEFINE_CLASS_ID(Mach,  Node, 1)
 581       DEFINE_CLASS_ID(MachReturn, Mach, 0)
 582         DEFINE_CLASS_ID(MachSafePoint, MachReturn, 0)
 583           DEFINE_CLASS_ID(MachCall, MachSafePoint, 0)
 584             DEFINE_CLASS_ID(MachCallJava,         MachCall, 0)
 585               DEFINE_CLASS_ID(MachCallStaticJava,   MachCallJava, 0)
 586               DEFINE_CLASS_ID(MachCallDynamicJava,  MachCallJava, 1)
 587             DEFINE_CLASS_ID(MachCallRuntime,      MachCall, 1)
 588               DEFINE_CLASS_ID(MachCallLeaf,         MachCallRuntime, 0)
 589       DEFINE_CLASS_ID(MachBranch, Mach, 1)
 590         DEFINE_CLASS_ID(MachIf,         MachBranch, 0)
 591         DEFINE_CLASS_ID(MachGoto,       MachBranch, 1)
 592         DEFINE_CLASS_ID(MachNullCheck,  MachBranch, 2)
 593       DEFINE_CLASS_ID(MachSpillCopy,    Mach, 2)
 594       DEFINE_CLASS_ID(MachTemp,         Mach, 3)
 595       DEFINE_CLASS_ID(MachConstantBase, Mach, 4)
 596       DEFINE_CLASS_ID(MachConstant,     Mach, 5)
 597 
 598     DEFINE_CLASS_ID(Type,  Node, 2)


 615       DEFINE_CLASS_ID(IfFalse,   Proj, 3)
 616       DEFINE_CLASS_ID(Parm,      Proj, 4)
 617       DEFINE_CLASS_ID(MachProj,  Proj, 5)
 618 
 619     DEFINE_CLASS_ID(Mem,   Node, 4)
 620       DEFINE_CLASS_ID(Load,  Mem, 0)
 621         DEFINE_CLASS_ID(LoadVector,  Load, 0)
 622       DEFINE_CLASS_ID(Store, Mem, 1)
 623         DEFINE_CLASS_ID(StoreVector, Store, 0)
 624       DEFINE_CLASS_ID(LoadStore, Mem, 2)
 625 
 626     DEFINE_CLASS_ID(Region, Node, 5)
 627       DEFINE_CLASS_ID(Loop, Region, 0)
 628         DEFINE_CLASS_ID(Root,        Loop, 0)
 629         DEFINE_CLASS_ID(CountedLoop, Loop, 1)
 630 
 631     DEFINE_CLASS_ID(Sub,   Node, 6)
 632       DEFINE_CLASS_ID(Cmp,   Sub, 0)
 633         DEFINE_CLASS_ID(FastLock,   Cmp, 0)
 634         DEFINE_CLASS_ID(FastUnlock, Cmp, 1)
 635         DEFINE_CLASS_ID(FlagsProj, Cmp, 2)
 636 
 637     DEFINE_CLASS_ID(MergeMem, Node, 7)
 638     DEFINE_CLASS_ID(Bool,     Node, 8)
 639     DEFINE_CLASS_ID(AddP,     Node, 9)
 640     DEFINE_CLASS_ID(BoxLock,  Node, 10)
 641     DEFINE_CLASS_ID(Add,      Node, 11)
 642     DEFINE_CLASS_ID(Mul,      Node, 12)
 643     DEFINE_CLASS_ID(Vector,   Node, 13)
 644     DEFINE_CLASS_ID(ClearArray, Node, 14)
 645 
 646     _max_classes  = ClassMask_ClearArray
 647   };
 648   #undef DEFINE_CLASS_ID
 649 
 650   // Flags are sorted by usage frequency.
 651   enum NodeFlags {
 652     Flag_is_Copy             = 0x01, // should be first bit to avoid shift
 653     Flag_rematerialize       = Flag_is_Copy << 1,
 654     Flag_needs_anti_dependence_check = Flag_rematerialize << 1,
 655     Flag_is_macro            = Flag_needs_anti_dependence_check << 1,


 719   DEFINE_CLASS_QUERY(CallLeaf)
 720   DEFINE_CLASS_QUERY(CallRuntime)
 721   DEFINE_CLASS_QUERY(CallStaticJava)
 722   DEFINE_CLASS_QUERY(Catch)
 723   DEFINE_CLASS_QUERY(CatchProj)
 724   DEFINE_CLASS_QUERY(CheckCastPP)
 725   DEFINE_CLASS_QUERY(ConstraintCast)
 726   DEFINE_CLASS_QUERY(ClearArray)
 727   DEFINE_CLASS_QUERY(CMove)
 728   DEFINE_CLASS_QUERY(Cmp)
 729   DEFINE_CLASS_QUERY(CountedLoop)
 730   DEFINE_CLASS_QUERY(CountedLoopEnd)
 731   DEFINE_CLASS_QUERY(DecodeNarrowPtr)
 732   DEFINE_CLASS_QUERY(DecodeN)
 733   DEFINE_CLASS_QUERY(DecodeNKlass)
 734   DEFINE_CLASS_QUERY(EncodeNarrowPtr)
 735   DEFINE_CLASS_QUERY(EncodeP)
 736   DEFINE_CLASS_QUERY(EncodePKlass)
 737   DEFINE_CLASS_QUERY(FastLock)
 738   DEFINE_CLASS_QUERY(FastUnlock)
 739   DEFINE_CLASS_QUERY(FlagsProj)
 740   DEFINE_CLASS_QUERY(If)
 741   DEFINE_CLASS_QUERY(IfFalse)
 742   DEFINE_CLASS_QUERY(IfTrue)
 743   DEFINE_CLASS_QUERY(Initialize)
 744   DEFINE_CLASS_QUERY(Jump)
 745   DEFINE_CLASS_QUERY(JumpProj)
 746   DEFINE_CLASS_QUERY(Load)
 747   DEFINE_CLASS_QUERY(LoadStore)
 748   DEFINE_CLASS_QUERY(Lock)
 749   DEFINE_CLASS_QUERY(Loop)
 750   DEFINE_CLASS_QUERY(Mach)
 751   DEFINE_CLASS_QUERY(MachBranch)
 752   DEFINE_CLASS_QUERY(MachCall)
 753   DEFINE_CLASS_QUERY(MachCallDynamicJava)
 754   DEFINE_CLASS_QUERY(MachCallJava)
 755   DEFINE_CLASS_QUERY(MachCallLeaf)
 756   DEFINE_CLASS_QUERY(MachCallRuntime)
 757   DEFINE_CLASS_QUERY(MachCallStaticJava)
 758   DEFINE_CLASS_QUERY(MachConstantBase)
 759   DEFINE_CLASS_QUERY(MachConstant)
 760   DEFINE_CLASS_QUERY(MachGoto)
 761   DEFINE_CLASS_QUERY(MachIf)
 762   DEFINE_CLASS_QUERY(MachNullCheck)
 763   DEFINE_CLASS_QUERY(MachProj)
 764   DEFINE_CLASS_QUERY(MachReturn)
 765   DEFINE_CLASS_QUERY(MachSafePoint)
 766   DEFINE_CLASS_QUERY(MachSpillCopy)
 767   DEFINE_CLASS_QUERY(MachTemp)
 768   DEFINE_CLASS_QUERY(MathExact)
 769   DEFINE_CLASS_QUERY(Mem)
 770   DEFINE_CLASS_QUERY(MemBar)
 771   DEFINE_CLASS_QUERY(MemBarStoreStore)
 772   DEFINE_CLASS_QUERY(MergeMem)
 773   DEFINE_CLASS_QUERY(Mul)
 774   DEFINE_CLASS_QUERY(Multi)
 775   DEFINE_CLASS_QUERY(MultiBranch)
 776   DEFINE_CLASS_QUERY(Parm)
 777   DEFINE_CLASS_QUERY(PCTable)
 778   DEFINE_CLASS_QUERY(Phi)
 779   DEFINE_CLASS_QUERY(Proj)
 780   DEFINE_CLASS_QUERY(Region)
 781   DEFINE_CLASS_QUERY(Root)
 782   DEFINE_CLASS_QUERY(SafePoint)
 783   DEFINE_CLASS_QUERY(SafePointScalarObject)
 784   DEFINE_CLASS_QUERY(Start)
 785   DEFINE_CLASS_QUERY(Store)
 786   DEFINE_CLASS_QUERY(Sub)
 787   DEFINE_CLASS_QUERY(Type)
 788   DEFINE_CLASS_QUERY(Vector)




  52 class CallRuntimeNode;
  53 class CallStaticJavaNode;
  54 class CatchNode;
  55 class CatchProjNode;
  56 class CheckCastPPNode;
  57 class ClearArrayNode;
  58 class CmpNode;
  59 class CodeBuffer;
  60 class ConstraintCastNode;
  61 class ConNode;
  62 class CountedLoopNode;
  63 class CountedLoopEndNode;
  64 class DecodeNarrowPtrNode;
  65 class DecodeNNode;
  66 class DecodeNKlassNode;
  67 class EncodeNarrowPtrNode;
  68 class EncodePNode;
  69 class EncodePKlassNode;
  70 class FastLockNode;
  71 class FastUnlockNode;

  72 class IfNode;
  73 class IfFalseNode;
  74 class IfTrueNode;
  75 class InitializeNode;
  76 class JVMState;
  77 class JumpNode;
  78 class JumpProjNode;
  79 class LoadNode;
  80 class LoadStoreNode;
  81 class LockNode;
  82 class LoopNode;
  83 class MachBranchNode;
  84 class MachCallDynamicJavaNode;
  85 class MachCallJavaNode;
  86 class MachCallLeafNode;
  87 class MachCallNode;
  88 class MachCallRuntimeNode;
  89 class MachCallStaticJavaNode;
  90 class MachConstantBaseNode;
  91 class MachConstantNode;
  92 class MachGotoNode;
  93 class MachIfNode;
  94 class MachNode;
  95 class MachNullCheckNode;
  96 class MachProjNode;
  97 class MachReturnNode;
  98 class MachSafePointNode;
  99 class MachSpillCopyNode;
 100 class MachTempNode;
 101 class Matcher;

 102 class MemBarNode;
 103 class MemBarStoreStoreNode;
 104 class MemNode;
 105 class MergeMemNode;
 106 class MulNode;
 107 class MultiNode;
 108 class MultiBranchNode;
 109 class NeverBranchNode;
 110 class Node;
 111 class Node_Array;
 112 class Node_List;
 113 class Node_Stack;
 114 class NullCheckNode;
 115 class OopMap;
 116 class ParmNode;
 117 class PCTableNode;
 118 class PhaseCCP;
 119 class PhaseGVN;
 120 class PhaseIterGVN;
 121 class PhaseRegAlloc;


 556             DEFINE_CLASS_ID(CallStaticJava,   CallJava, 0)
 557             DEFINE_CLASS_ID(CallDynamicJava,  CallJava, 1)
 558           DEFINE_CLASS_ID(CallRuntime,      Call, 1)
 559             DEFINE_CLASS_ID(CallLeaf,         CallRuntime, 0)
 560           DEFINE_CLASS_ID(Allocate,         Call, 2)
 561             DEFINE_CLASS_ID(AllocateArray,    Allocate, 0)
 562           DEFINE_CLASS_ID(AbstractLock,     Call, 3)
 563             DEFINE_CLASS_ID(Lock,             AbstractLock, 0)
 564             DEFINE_CLASS_ID(Unlock,           AbstractLock, 1)
 565       DEFINE_CLASS_ID(MultiBranch, Multi, 1)
 566         DEFINE_CLASS_ID(PCTable,     MultiBranch, 0)
 567           DEFINE_CLASS_ID(Catch,       PCTable, 0)
 568           DEFINE_CLASS_ID(Jump,        PCTable, 1)
 569         DEFINE_CLASS_ID(If,          MultiBranch, 1)
 570           DEFINE_CLASS_ID(CountedLoopEnd, If, 0)
 571         DEFINE_CLASS_ID(NeverBranch, MultiBranch, 2)
 572       DEFINE_CLASS_ID(Start,       Multi, 2)
 573       DEFINE_CLASS_ID(MemBar,      Multi, 3)
 574         DEFINE_CLASS_ID(Initialize,       MemBar, 0)
 575         DEFINE_CLASS_ID(MemBarStoreStore, MemBar, 1)

 576 
 577     DEFINE_CLASS_ID(Mach,  Node, 1)
 578       DEFINE_CLASS_ID(MachReturn, Mach, 0)
 579         DEFINE_CLASS_ID(MachSafePoint, MachReturn, 0)
 580           DEFINE_CLASS_ID(MachCall, MachSafePoint, 0)
 581             DEFINE_CLASS_ID(MachCallJava,         MachCall, 0)
 582               DEFINE_CLASS_ID(MachCallStaticJava,   MachCallJava, 0)
 583               DEFINE_CLASS_ID(MachCallDynamicJava,  MachCallJava, 1)
 584             DEFINE_CLASS_ID(MachCallRuntime,      MachCall, 1)
 585               DEFINE_CLASS_ID(MachCallLeaf,         MachCallRuntime, 0)
 586       DEFINE_CLASS_ID(MachBranch, Mach, 1)
 587         DEFINE_CLASS_ID(MachIf,         MachBranch, 0)
 588         DEFINE_CLASS_ID(MachGoto,       MachBranch, 1)
 589         DEFINE_CLASS_ID(MachNullCheck,  MachBranch, 2)
 590       DEFINE_CLASS_ID(MachSpillCopy,    Mach, 2)
 591       DEFINE_CLASS_ID(MachTemp,         Mach, 3)
 592       DEFINE_CLASS_ID(MachConstantBase, Mach, 4)
 593       DEFINE_CLASS_ID(MachConstant,     Mach, 5)
 594 
 595     DEFINE_CLASS_ID(Type,  Node, 2)


 612       DEFINE_CLASS_ID(IfFalse,   Proj, 3)
 613       DEFINE_CLASS_ID(Parm,      Proj, 4)
 614       DEFINE_CLASS_ID(MachProj,  Proj, 5)
 615 
 616     DEFINE_CLASS_ID(Mem,   Node, 4)
 617       DEFINE_CLASS_ID(Load,  Mem, 0)
 618         DEFINE_CLASS_ID(LoadVector,  Load, 0)
 619       DEFINE_CLASS_ID(Store, Mem, 1)
 620         DEFINE_CLASS_ID(StoreVector, Store, 0)
 621       DEFINE_CLASS_ID(LoadStore, Mem, 2)
 622 
 623     DEFINE_CLASS_ID(Region, Node, 5)
 624       DEFINE_CLASS_ID(Loop, Region, 0)
 625         DEFINE_CLASS_ID(Root,        Loop, 0)
 626         DEFINE_CLASS_ID(CountedLoop, Loop, 1)
 627 
 628     DEFINE_CLASS_ID(Sub,   Node, 6)
 629       DEFINE_CLASS_ID(Cmp,   Sub, 0)
 630         DEFINE_CLASS_ID(FastLock,   Cmp, 0)
 631         DEFINE_CLASS_ID(FastUnlock, Cmp, 1)

 632 
 633     DEFINE_CLASS_ID(MergeMem, Node, 7)
 634     DEFINE_CLASS_ID(Bool,     Node, 8)
 635     DEFINE_CLASS_ID(AddP,     Node, 9)
 636     DEFINE_CLASS_ID(BoxLock,  Node, 10)
 637     DEFINE_CLASS_ID(Add,      Node, 11)
 638     DEFINE_CLASS_ID(Mul,      Node, 12)
 639     DEFINE_CLASS_ID(Vector,   Node, 13)
 640     DEFINE_CLASS_ID(ClearArray, Node, 14)
 641 
 642     _max_classes  = ClassMask_ClearArray
 643   };
 644   #undef DEFINE_CLASS_ID
 645 
 646   // Flags are sorted by usage frequency.
 647   enum NodeFlags {
 648     Flag_is_Copy             = 0x01, // should be first bit to avoid shift
 649     Flag_rematerialize       = Flag_is_Copy << 1,
 650     Flag_needs_anti_dependence_check = Flag_rematerialize << 1,
 651     Flag_is_macro            = Flag_needs_anti_dependence_check << 1,


 715   DEFINE_CLASS_QUERY(CallLeaf)
 716   DEFINE_CLASS_QUERY(CallRuntime)
 717   DEFINE_CLASS_QUERY(CallStaticJava)
 718   DEFINE_CLASS_QUERY(Catch)
 719   DEFINE_CLASS_QUERY(CatchProj)
 720   DEFINE_CLASS_QUERY(CheckCastPP)
 721   DEFINE_CLASS_QUERY(ConstraintCast)
 722   DEFINE_CLASS_QUERY(ClearArray)
 723   DEFINE_CLASS_QUERY(CMove)
 724   DEFINE_CLASS_QUERY(Cmp)
 725   DEFINE_CLASS_QUERY(CountedLoop)
 726   DEFINE_CLASS_QUERY(CountedLoopEnd)
 727   DEFINE_CLASS_QUERY(DecodeNarrowPtr)
 728   DEFINE_CLASS_QUERY(DecodeN)
 729   DEFINE_CLASS_QUERY(DecodeNKlass)
 730   DEFINE_CLASS_QUERY(EncodeNarrowPtr)
 731   DEFINE_CLASS_QUERY(EncodeP)
 732   DEFINE_CLASS_QUERY(EncodePKlass)
 733   DEFINE_CLASS_QUERY(FastLock)
 734   DEFINE_CLASS_QUERY(FastUnlock)

 735   DEFINE_CLASS_QUERY(If)
 736   DEFINE_CLASS_QUERY(IfFalse)
 737   DEFINE_CLASS_QUERY(IfTrue)
 738   DEFINE_CLASS_QUERY(Initialize)
 739   DEFINE_CLASS_QUERY(Jump)
 740   DEFINE_CLASS_QUERY(JumpProj)
 741   DEFINE_CLASS_QUERY(Load)
 742   DEFINE_CLASS_QUERY(LoadStore)
 743   DEFINE_CLASS_QUERY(Lock)
 744   DEFINE_CLASS_QUERY(Loop)
 745   DEFINE_CLASS_QUERY(Mach)
 746   DEFINE_CLASS_QUERY(MachBranch)
 747   DEFINE_CLASS_QUERY(MachCall)
 748   DEFINE_CLASS_QUERY(MachCallDynamicJava)
 749   DEFINE_CLASS_QUERY(MachCallJava)
 750   DEFINE_CLASS_QUERY(MachCallLeaf)
 751   DEFINE_CLASS_QUERY(MachCallRuntime)
 752   DEFINE_CLASS_QUERY(MachCallStaticJava)
 753   DEFINE_CLASS_QUERY(MachConstantBase)
 754   DEFINE_CLASS_QUERY(MachConstant)
 755   DEFINE_CLASS_QUERY(MachGoto)
 756   DEFINE_CLASS_QUERY(MachIf)
 757   DEFINE_CLASS_QUERY(MachNullCheck)
 758   DEFINE_CLASS_QUERY(MachProj)
 759   DEFINE_CLASS_QUERY(MachReturn)
 760   DEFINE_CLASS_QUERY(MachSafePoint)
 761   DEFINE_CLASS_QUERY(MachSpillCopy)
 762   DEFINE_CLASS_QUERY(MachTemp)

 763   DEFINE_CLASS_QUERY(Mem)
 764   DEFINE_CLASS_QUERY(MemBar)
 765   DEFINE_CLASS_QUERY(MemBarStoreStore)
 766   DEFINE_CLASS_QUERY(MergeMem)
 767   DEFINE_CLASS_QUERY(Mul)
 768   DEFINE_CLASS_QUERY(Multi)
 769   DEFINE_CLASS_QUERY(MultiBranch)
 770   DEFINE_CLASS_QUERY(Parm)
 771   DEFINE_CLASS_QUERY(PCTable)
 772   DEFINE_CLASS_QUERY(Phi)
 773   DEFINE_CLASS_QUERY(Proj)
 774   DEFINE_CLASS_QUERY(Region)
 775   DEFINE_CLASS_QUERY(Root)
 776   DEFINE_CLASS_QUERY(SafePoint)
 777   DEFINE_CLASS_QUERY(SafePointScalarObject)
 778   DEFINE_CLASS_QUERY(Start)
 779   DEFINE_CLASS_QUERY(Store)
 780   DEFINE_CLASS_QUERY(Sub)
 781   DEFINE_CLASS_QUERY(Type)
 782   DEFINE_CLASS_QUERY(Vector)


src/share/vm/opto/node.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File