Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/node.hpp @ 3853:11211f7cb5a0
7079317: Incorrect branch's destination block in PrintoOptoAssembly output
Summary: save/restore label and block in scratch_emit_size()
Reviewed-by: never
author | kvn |
---|---|
date | Tue, 16 Aug 2011 11:53:57 -0700 |
parents | 95134e034042 |
children | f6f3bb0ee072 |
comparison
equal
deleted
inserted
replaced
3852:fdb992d83a87 | 3853:11211f7cb5a0 |
---|---|
75 class JumpProjNode; | 75 class JumpProjNode; |
76 class LoadNode; | 76 class LoadNode; |
77 class LoadStoreNode; | 77 class LoadStoreNode; |
78 class LockNode; | 78 class LockNode; |
79 class LoopNode; | 79 class LoopNode; |
80 class MachBranchNode; | |
80 class MachCallDynamicJavaNode; | 81 class MachCallDynamicJavaNode; |
81 class MachCallJavaNode; | 82 class MachCallJavaNode; |
82 class MachCallLeafNode; | 83 class MachCallLeafNode; |
83 class MachCallNode; | 84 class MachCallNode; |
84 class MachCallRuntimeNode; | 85 class MachCallRuntimeNode; |
570 DEFINE_CLASS_ID(MachCallJava, MachCall, 0) | 571 DEFINE_CLASS_ID(MachCallJava, MachCall, 0) |
571 DEFINE_CLASS_ID(MachCallStaticJava, MachCallJava, 0) | 572 DEFINE_CLASS_ID(MachCallStaticJava, MachCallJava, 0) |
572 DEFINE_CLASS_ID(MachCallDynamicJava, MachCallJava, 1) | 573 DEFINE_CLASS_ID(MachCallDynamicJava, MachCallJava, 1) |
573 DEFINE_CLASS_ID(MachCallRuntime, MachCall, 1) | 574 DEFINE_CLASS_ID(MachCallRuntime, MachCall, 1) |
574 DEFINE_CLASS_ID(MachCallLeaf, MachCallRuntime, 0) | 575 DEFINE_CLASS_ID(MachCallLeaf, MachCallRuntime, 0) |
575 DEFINE_CLASS_ID(MachSpillCopy, Mach, 1) | 576 DEFINE_CLASS_ID(MachBranch, Mach, 1) |
576 DEFINE_CLASS_ID(MachNullCheck, Mach, 2) | 577 DEFINE_CLASS_ID(MachIf, MachBranch, 0) |
577 DEFINE_CLASS_ID(MachIf, Mach, 3) | 578 DEFINE_CLASS_ID(MachGoto, MachBranch, 1) |
578 DEFINE_CLASS_ID(MachTemp, Mach, 4) | 579 DEFINE_CLASS_ID(MachNullCheck, MachBranch, 2) |
579 DEFINE_CLASS_ID(MachConstantBase, Mach, 5) | 580 DEFINE_CLASS_ID(MachSpillCopy, Mach, 2) |
580 DEFINE_CLASS_ID(MachConstant, Mach, 6) | 581 DEFINE_CLASS_ID(MachTemp, Mach, 3) |
581 DEFINE_CLASS_ID(MachGoto, Mach, 7) | 582 DEFINE_CLASS_ID(MachConstantBase, Mach, 4) |
583 DEFINE_CLASS_ID(MachConstant, Mach, 5) | |
582 | 584 |
583 DEFINE_CLASS_ID(Type, Node, 2) | 585 DEFINE_CLASS_ID(Type, Node, 2) |
584 DEFINE_CLASS_ID(Phi, Type, 0) | 586 DEFINE_CLASS_ID(Phi, Type, 0) |
585 DEFINE_CLASS_ID(ConstraintCast, Type, 1) | 587 DEFINE_CLASS_ID(ConstraintCast, Type, 1) |
586 DEFINE_CLASS_ID(CheckCastPP, Type, 2) | 588 DEFINE_CLASS_ID(CheckCastPP, Type, 2) |
632 Flag_rematerialize = Flag_is_Copy << 1, | 634 Flag_rematerialize = Flag_is_Copy << 1, |
633 Flag_needs_anti_dependence_check = Flag_rematerialize << 1, | 635 Flag_needs_anti_dependence_check = Flag_rematerialize << 1, |
634 Flag_is_macro = Flag_needs_anti_dependence_check << 1, | 636 Flag_is_macro = Flag_needs_anti_dependence_check << 1, |
635 Flag_is_Con = Flag_is_macro << 1, | 637 Flag_is_Con = Flag_is_macro << 1, |
636 Flag_is_cisc_alternate = Flag_is_Con << 1, | 638 Flag_is_cisc_alternate = Flag_is_Con << 1, |
637 Flag_is_Branch = Flag_is_cisc_alternate << 1, | 639 Flag_is_dead_loop_safe = Flag_is_cisc_alternate << 1, |
638 Flag_is_dead_loop_safe = Flag_is_Branch << 1, | |
639 Flag_may_be_short_branch = Flag_is_dead_loop_safe << 1, | 640 Flag_may_be_short_branch = Flag_is_dead_loop_safe << 1, |
640 Flag_avoid_back_to_back = Flag_may_be_short_branch << 1, | 641 Flag_avoid_back_to_back = Flag_may_be_short_branch << 1, |
641 _max_flags = (Flag_avoid_back_to_back << 1) - 1 // allow flags combination | 642 _max_flags = (Flag_avoid_back_to_back << 1) - 1 // allow flags combination |
642 }; | 643 }; |
643 | 644 |
719 DEFINE_CLASS_QUERY(Load) | 720 DEFINE_CLASS_QUERY(Load) |
720 DEFINE_CLASS_QUERY(LoadStore) | 721 DEFINE_CLASS_QUERY(LoadStore) |
721 DEFINE_CLASS_QUERY(Lock) | 722 DEFINE_CLASS_QUERY(Lock) |
722 DEFINE_CLASS_QUERY(Loop) | 723 DEFINE_CLASS_QUERY(Loop) |
723 DEFINE_CLASS_QUERY(Mach) | 724 DEFINE_CLASS_QUERY(Mach) |
725 DEFINE_CLASS_QUERY(MachBranch) | |
724 DEFINE_CLASS_QUERY(MachCall) | 726 DEFINE_CLASS_QUERY(MachCall) |
725 DEFINE_CLASS_QUERY(MachCallDynamicJava) | 727 DEFINE_CLASS_QUERY(MachCallDynamicJava) |
726 DEFINE_CLASS_QUERY(MachCallJava) | 728 DEFINE_CLASS_QUERY(MachCallJava) |
727 DEFINE_CLASS_QUERY(MachCallLeaf) | 729 DEFINE_CLASS_QUERY(MachCallLeaf) |
728 DEFINE_CLASS_QUERY(MachCallRuntime) | 730 DEFINE_CLASS_QUERY(MachCallRuntime) |
785 // depend for their correct sequencing on more than one test. | 787 // depend for their correct sequencing on more than one test. |
786 // (In that case, hoisting to a dominating test may silently | 788 // (In that case, hoisting to a dominating test may silently |
787 // skip some other important test.) | 789 // skip some other important test.) |
788 virtual bool depends_only_on_test() const { assert(!is_CFG(), ""); return true; }; | 790 virtual bool depends_only_on_test() const { assert(!is_CFG(), ""); return true; }; |
789 | 791 |
790 // defined for MachNodes that match 'If' | 'Goto' | 'CountedLoopEnd' | 'Jump' | |
791 bool is_Branch() const { return (_flags & Flag_is_Branch) != 0; } | |
792 | |
793 // When building basic blocks, I need to have a notion of block beginning | 792 // When building basic blocks, I need to have a notion of block beginning |
794 // Nodes, next block selector Nodes (block enders), and next block | 793 // Nodes, next block selector Nodes (block enders), and next block |
795 // projections. These calls need to work on their machine equivalents. The | 794 // projections. These calls need to work on their machine equivalents. The |
796 // Ideal beginning Nodes are RootNode, RegionNode and StartNode. | 795 // Ideal beginning Nodes are RootNode, RegionNode and StartNode. |
797 bool is_block_start() const { | 796 bool is_block_start() const { |