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 5777 : 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;


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


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


 713   DEFINE_CLASS_QUERY(CallLeaf)
 714   DEFINE_CLASS_QUERY(CallRuntime)
 715   DEFINE_CLASS_QUERY(CallStaticJava)
 716   DEFINE_CLASS_QUERY(Catch)
 717   DEFINE_CLASS_QUERY(CatchProj)
 718   DEFINE_CLASS_QUERY(CheckCastPP)
 719   DEFINE_CLASS_QUERY(ConstraintCast)
 720   DEFINE_CLASS_QUERY(ClearArray)
 721   DEFINE_CLASS_QUERY(CMove)
 722   DEFINE_CLASS_QUERY(Cmp)
 723   DEFINE_CLASS_QUERY(CountedLoop)
 724   DEFINE_CLASS_QUERY(CountedLoopEnd)
 725   DEFINE_CLASS_QUERY(DecodeNarrowPtr)
 726   DEFINE_CLASS_QUERY(DecodeN)
 727   DEFINE_CLASS_QUERY(DecodeNKlass)
 728   DEFINE_CLASS_QUERY(EncodeNarrowPtr)
 729   DEFINE_CLASS_QUERY(EncodeP)
 730   DEFINE_CLASS_QUERY(EncodePKlass)
 731   DEFINE_CLASS_QUERY(FastLock)
 732   DEFINE_CLASS_QUERY(FastUnlock)
 733   DEFINE_CLASS_QUERY(FlagsProj)
 734   DEFINE_CLASS_QUERY(If)
 735   DEFINE_CLASS_QUERY(IfFalse)
 736   DEFINE_CLASS_QUERY(IfTrue)
 737   DEFINE_CLASS_QUERY(Initialize)
 738   DEFINE_CLASS_QUERY(Jump)
 739   DEFINE_CLASS_QUERY(JumpProj)
 740   DEFINE_CLASS_QUERY(Load)
 741   DEFINE_CLASS_QUERY(LoadStore)
 742   DEFINE_CLASS_QUERY(Lock)
 743   DEFINE_CLASS_QUERY(Loop)
 744   DEFINE_CLASS_QUERY(Mach)
 745   DEFINE_CLASS_QUERY(MachBranch)
 746   DEFINE_CLASS_QUERY(MachCall)
 747   DEFINE_CLASS_QUERY(MachCallDynamicJava)
 748   DEFINE_CLASS_QUERY(MachCallJava)
 749   DEFINE_CLASS_QUERY(MachCallLeaf)
 750   DEFINE_CLASS_QUERY(MachCallRuntime)
 751   DEFINE_CLASS_QUERY(MachCallStaticJava)
 752   DEFINE_CLASS_QUERY(MachConstantBase)
 753   DEFINE_CLASS_QUERY(MachConstant)
 754   DEFINE_CLASS_QUERY(MachGoto)
 755   DEFINE_CLASS_QUERY(MachIf)
 756   DEFINE_CLASS_QUERY(MachNullCheck)
 757   DEFINE_CLASS_QUERY(MachProj)
 758   DEFINE_CLASS_QUERY(MachReturn)
 759   DEFINE_CLASS_QUERY(MachSafePoint)
 760   DEFINE_CLASS_QUERY(MachSpillCopy)
 761   DEFINE_CLASS_QUERY(MachTemp)
 762   DEFINE_CLASS_QUERY(MathExact)
 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)




  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;


 550             DEFINE_CLASS_ID(CallStaticJava,   CallJava, 0)
 551             DEFINE_CLASS_ID(CallDynamicJava,  CallJava, 1)
 552           DEFINE_CLASS_ID(CallRuntime,      Call, 1)
 553             DEFINE_CLASS_ID(CallLeaf,         CallRuntime, 0)
 554           DEFINE_CLASS_ID(Allocate,         Call, 2)
 555             DEFINE_CLASS_ID(AllocateArray,    Allocate, 0)
 556           DEFINE_CLASS_ID(AbstractLock,     Call, 3)
 557             DEFINE_CLASS_ID(Lock,             AbstractLock, 0)
 558             DEFINE_CLASS_ID(Unlock,           AbstractLock, 1)
 559       DEFINE_CLASS_ID(MultiBranch, Multi, 1)
 560         DEFINE_CLASS_ID(PCTable,     MultiBranch, 0)
 561           DEFINE_CLASS_ID(Catch,       PCTable, 0)
 562           DEFINE_CLASS_ID(Jump,        PCTable, 1)
 563         DEFINE_CLASS_ID(If,          MultiBranch, 1)
 564           DEFINE_CLASS_ID(CountedLoopEnd, If, 0)
 565         DEFINE_CLASS_ID(NeverBranch, MultiBranch, 2)
 566       DEFINE_CLASS_ID(Start,       Multi, 2)
 567       DEFINE_CLASS_ID(MemBar,      Multi, 3)
 568         DEFINE_CLASS_ID(Initialize,       MemBar, 0)
 569         DEFINE_CLASS_ID(MemBarStoreStore, MemBar, 1)

 570 
 571     DEFINE_CLASS_ID(Mach,  Node, 1)
 572       DEFINE_CLASS_ID(MachReturn, Mach, 0)
 573         DEFINE_CLASS_ID(MachSafePoint, MachReturn, 0)
 574           DEFINE_CLASS_ID(MachCall, MachSafePoint, 0)
 575             DEFINE_CLASS_ID(MachCallJava,         MachCall, 0)
 576               DEFINE_CLASS_ID(MachCallStaticJava,   MachCallJava, 0)
 577               DEFINE_CLASS_ID(MachCallDynamicJava,  MachCallJava, 1)
 578             DEFINE_CLASS_ID(MachCallRuntime,      MachCall, 1)
 579               DEFINE_CLASS_ID(MachCallLeaf,         MachCallRuntime, 0)
 580       DEFINE_CLASS_ID(MachBranch, Mach, 1)
 581         DEFINE_CLASS_ID(MachIf,         MachBranch, 0)
 582         DEFINE_CLASS_ID(MachGoto,       MachBranch, 1)
 583         DEFINE_CLASS_ID(MachNullCheck,  MachBranch, 2)
 584       DEFINE_CLASS_ID(MachSpillCopy,    Mach, 2)
 585       DEFINE_CLASS_ID(MachTemp,         Mach, 3)
 586       DEFINE_CLASS_ID(MachConstantBase, Mach, 4)
 587       DEFINE_CLASS_ID(MachConstant,     Mach, 5)
 588 
 589     DEFINE_CLASS_ID(Type,  Node, 2)


 606       DEFINE_CLASS_ID(IfFalse,   Proj, 3)
 607       DEFINE_CLASS_ID(Parm,      Proj, 4)
 608       DEFINE_CLASS_ID(MachProj,  Proj, 5)
 609 
 610     DEFINE_CLASS_ID(Mem,   Node, 4)
 611       DEFINE_CLASS_ID(Load,  Mem, 0)
 612         DEFINE_CLASS_ID(LoadVector,  Load, 0)
 613       DEFINE_CLASS_ID(Store, Mem, 1)
 614         DEFINE_CLASS_ID(StoreVector, Store, 0)
 615       DEFINE_CLASS_ID(LoadStore, Mem, 2)
 616 
 617     DEFINE_CLASS_ID(Region, Node, 5)
 618       DEFINE_CLASS_ID(Loop, Region, 0)
 619         DEFINE_CLASS_ID(Root,        Loop, 0)
 620         DEFINE_CLASS_ID(CountedLoop, Loop, 1)
 621 
 622     DEFINE_CLASS_ID(Sub,   Node, 6)
 623       DEFINE_CLASS_ID(Cmp,   Sub, 0)
 624         DEFINE_CLASS_ID(FastLock,   Cmp, 0)
 625         DEFINE_CLASS_ID(FastUnlock, Cmp, 1)

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


 709   DEFINE_CLASS_QUERY(CallLeaf)
 710   DEFINE_CLASS_QUERY(CallRuntime)
 711   DEFINE_CLASS_QUERY(CallStaticJava)
 712   DEFINE_CLASS_QUERY(Catch)
 713   DEFINE_CLASS_QUERY(CatchProj)
 714   DEFINE_CLASS_QUERY(CheckCastPP)
 715   DEFINE_CLASS_QUERY(ConstraintCast)
 716   DEFINE_CLASS_QUERY(ClearArray)
 717   DEFINE_CLASS_QUERY(CMove)
 718   DEFINE_CLASS_QUERY(Cmp)
 719   DEFINE_CLASS_QUERY(CountedLoop)
 720   DEFINE_CLASS_QUERY(CountedLoopEnd)
 721   DEFINE_CLASS_QUERY(DecodeNarrowPtr)
 722   DEFINE_CLASS_QUERY(DecodeN)
 723   DEFINE_CLASS_QUERY(DecodeNKlass)
 724   DEFINE_CLASS_QUERY(EncodeNarrowPtr)
 725   DEFINE_CLASS_QUERY(EncodeP)
 726   DEFINE_CLASS_QUERY(EncodePKlass)
 727   DEFINE_CLASS_QUERY(FastLock)
 728   DEFINE_CLASS_QUERY(FastUnlock)

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

 757   DEFINE_CLASS_QUERY(Mem)
 758   DEFINE_CLASS_QUERY(MemBar)
 759   DEFINE_CLASS_QUERY(MemBarStoreStore)
 760   DEFINE_CLASS_QUERY(MergeMem)
 761   DEFINE_CLASS_QUERY(Mul)
 762   DEFINE_CLASS_QUERY(Multi)
 763   DEFINE_CLASS_QUERY(MultiBranch)
 764   DEFINE_CLASS_QUERY(Parm)
 765   DEFINE_CLASS_QUERY(PCTable)
 766   DEFINE_CLASS_QUERY(Phi)
 767   DEFINE_CLASS_QUERY(Proj)
 768   DEFINE_CLASS_QUERY(Region)
 769   DEFINE_CLASS_QUERY(Root)
 770   DEFINE_CLASS_QUERY(SafePoint)
 771   DEFINE_CLASS_QUERY(SafePointScalarObject)
 772   DEFINE_CLASS_QUERY(Start)
 773   DEFINE_CLASS_QUERY(Store)
 774   DEFINE_CLASS_QUERY(Sub)
 775   DEFINE_CLASS_QUERY(Type)
 776   DEFINE_CLASS_QUERY(Vector)


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