./java -XX:CompileCommand=PrintIdealPhase,*::*,ITER_GVN1,PHASEIDEALLOOP1 -XX:CompileCommand=compileonly,Test::test -XX:CompileCommand=printcompilation,Test::test -Xcomp -XX:-CICompileOSR Test.java CompileCommand: PrintIdealPhase *.* const char* PrintIdealPhase = 'ITER_GVN1 PHASEIDEALLOOP1' CompileCommand: compileonly Test.test bool compileonly = true CompileCommand: PrintCompilation Test.test bool PrintCompilation = true 4083 101 b 3 Test::test (11 bytes) 4084 102 b 4 Test::test (11 bytes) AFTER: ITER_GVN1 0 Root === 0 30 41 52 63 74 87 97 107 117 127 |142 [[ 0 1 3 20 25 36 47 58 69 134 135 145 144 ]] 1 Con === 0 [[ ]] #top 3 Start === 3 0 [[ 3 5 6 7 8 9 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address} 5 Parm === 3 [[ 21 ]] Control !jvms: Test::test @ bci:-1 (line 10) 6 Parm === 3 [[ 70 59 123 26 37 48 113 103 93 83 ]] I_O !orig=77 !jvms: Test::test @ bci:-1 (line 10) 7 Parm === 3 [[ 70 59 48 151 37 26 147 93 103 113 83 123 143 ]] Memory Memory: @ptr:BotPTR+bot, idx=Bot; !orig=[78] !jvms: Test::test @ bci:-1 (line 10) 8 Parm === 3 [[ 123 127 113 117 30 26 41 37 52 48 63 59 74 70 87 83 97 93 107 103 ]] FramePtr !jvms: Test::test @ bci:-1 (line 10) 9 Parm === 3 [[ 123 113 103 93 26 37 48 59 70 83 ]] ReturnAdr !jvms: Test::test @ bci:-1 (line 10) 20 ConI === 0 [[ 21 32 43 54 65 79 89 99 109 119 139 ]] #int:1 21 ParsePredicate === 5 20 [[ 22 31 ]] #Short_Running_Long_Loop !jvms: Test::test @ bci:0 (line 10) 22 IfFalse === 21 [[ 26 ]] #0 !jvms: Test::test @ bci:0 (line 10) 25 ConI === 0 [[ 26 83 ]] #int:-218 26 CallStaticJava === 22 6 7 8 9 (25 ) [[ 27 ]] # Static uncommon_trap(reason='short_running_loop_or_aliasing' action='maybe_recompile' debug_id='0') void ( int ) C=0.000100 Test::test @ bci:0 (line 10) reexecute !jvms: Test::test @ bci:0 (line 10) 27 Proj === 26 [[ 30 ]] #0 !jvms: Test::test @ bci:0 (line 10) 30 Halt === 27 1 1 8 1 [[ 0 ]] !jvms: Test::test @ bci:0 (line 10) 31 IfTrue === 21 [[ 32 ]] #1 !jvms: Test::test @ bci:0 (line 10) 32 ParsePredicate === 31 20 [[ 33 42 ]] #Loop !jvms: Test::test @ bci:0 (line 10) 33 IfFalse === 32 [[ 37 ]] #0 !jvms: Test::test @ bci:0 (line 10) 36 ConI === 0 [[ 37 93 ]] #int:-146 37 CallStaticJava === 33 6 7 8 9 (36 ) [[ 38 ]] # Static uncommon_trap(reason='predicate' action='maybe_recompile' debug_id='0') void ( int ) C=0.000100 Test::test @ bci:0 (line 10) reexecute !jvms: Test::test @ bci:0 (line 10) 38 Proj === 37 [[ 41 ]] #0 !jvms: Test::test @ bci:0 (line 10) 41 Halt === 38 1 1 8 1 [[ 0 ]] !jvms: Test::test @ bci:0 (line 10) 42 IfTrue === 32 [[ 43 ]] #1 !jvms: Test::test @ bci:0 (line 10) 43 ParsePredicate === 42 20 [[ 44 53 ]] #Profiled_Loop !jvms: Test::test @ bci:0 (line 10) 44 IfFalse === 43 [[ 48 ]] #0 !jvms: Test::test @ bci:0 (line 10) 47 ConI === 0 [[ 48 103 ]] #int:-66 48 CallStaticJava === 44 6 7 8 9 (47 ) [[ 49 ]] # Static uncommon_trap(reason='profile_predicate' action='maybe_recompile' debug_id='0') void ( int ) C=0.000100 Test::test @ bci:0 (line 10) reexecute !jvms: Test::test @ bci:0 (line 10) 49 Proj === 48 [[ 52 ]] #0 !jvms: Test::test @ bci:0 (line 10) 52 Halt === 49 1 1 8 1 [[ 0 ]] !jvms: Test::test @ bci:0 (line 10) 53 IfTrue === 43 [[ 54 ]] #1 !jvms: Test::test @ bci:0 (line 10) 54 ParsePredicate === 53 20 [[ 55 64 ]] #Auto_Vectorization_Check !jvms: Test::test @ bci:0 (line 10) 55 IfFalse === 54 [[ 59 ]] #0 !jvms: Test::test @ bci:0 (line 10) 58 ConI === 0 [[ 59 113 ]] #int:-74 59 CallStaticJava === 55 6 7 8 9 (58 ) [[ 60 ]] # Static uncommon_trap(reason='auto_vectorization_check' action='maybe_recompile' debug_id='0') void ( int ) C=0.000100 Test::test @ bci:0 (line 10) reexecute !jvms: Test::test @ bci:0 (line 10) 60 Proj === 59 [[ 63 ]] #0 !jvms: Test::test @ bci:0 (line 10) 63 Halt === 60 1 1 8 1 [[ 0 ]] !jvms: Test::test @ bci:0 (line 10) 64 IfTrue === 54 [[ 65 ]] #1 !jvms: Test::test @ bci:0 (line 10) 65 ParsePredicate === 64 20 [[ 66 75 ]] #Loop_Limit_Check !jvms: Test::test @ bci:0 (line 10) 66 IfFalse === 65 [[ 70 ]] #0 !jvms: Test::test @ bci:0 (line 10) 69 ConI === 0 [[ 70 123 ]] #int:-154 70 CallStaticJava === 66 6 7 8 9 (69 ) [[ 71 ]] # Static uncommon_trap(reason='loop_limit_check' action='maybe_recompile' debug_id='0') void ( int ) C=0.000100 Test::test @ bci:0 (line 10) reexecute !jvms: Test::test @ bci:0 (line 10) 71 Proj === 70 [[ 74 ]] #0 !jvms: Test::test @ bci:0 (line 10) 74 Halt === 71 1 1 8 1 [[ 0 ]] !jvms: Test::test @ bci:0 (line 10) 75 IfTrue === 65 [[ 79 ]] #1 !jvms: Test::test @ bci:0 (line 10) 79 ParsePredicate === 75 20 [[ 80 88 ]] #Short_Running_Long_Loop !jvms: Test::test @ bci:0 (line 10) 80 IfFalse === 79 [[ 83 ]] #0 !jvms: Test::test @ bci:0 (line 10) 83 CallStaticJava === 80 6 7 8 9 (25 ) [[ 84 ]] # Static uncommon_trap(reason='short_running_loop_or_aliasing' action='maybe_recompile' debug_id='0') void ( int ) C=0.000100 Test::test @ bci:0 (line 10) reexecute !jvms: Test::test @ bci:0 (line 10) 84 Proj === 83 [[ 87 ]] #0 !jvms: Test::test @ bci:0 (line 10) 87 Halt === 84 1 1 8 1 [[ 0 ]] !jvms: Test::test @ bci:0 (line 10) 88 IfTrue === 79 [[ 89 ]] #1 !jvms: Test::test @ bci:0 (line 10) 89 ParsePredicate === 88 20 [[ 90 98 ]] #Loop !jvms: Test::test @ bci:0 (line 10) 90 IfFalse === 89 [[ 93 ]] #0 !jvms: Test::test @ bci:0 (line 10) 93 CallStaticJava === 90 6 7 8 9 (36 ) [[ 94 ]] # Static uncommon_trap(reason='predicate' action='maybe_recompile' debug_id='0') void ( int ) C=0.000100 Test::test @ bci:0 (line 10) reexecute !jvms: Test::test @ bci:0 (line 10) 94 Proj === 93 [[ 97 ]] #0 !jvms: Test::test @ bci:0 (line 10) 97 Halt === 94 1 1 8 1 [[ 0 ]] !jvms: Test::test @ bci:0 (line 10) 98 IfTrue === 89 [[ 99 ]] #1 !jvms: Test::test @ bci:0 (line 10) 99 ParsePredicate === 98 20 [[ 100 108 ]] #Profiled_Loop !jvms: Test::test @ bci:0 (line 10) 100 IfFalse === 99 [[ 103 ]] #0 !jvms: Test::test @ bci:0 (line 10) 103 CallStaticJava === 100 6 7 8 9 (47 ) [[ 104 ]] # Static uncommon_trap(reason='profile_predicate' action='maybe_recompile' debug_id='0') void ( int ) C=0.000100 Test::test @ bci:0 (line 10) reexecute !jvms: Test::test @ bci:0 (line 10) 104 Proj === 103 [[ 107 ]] #0 !jvms: Test::test @ bci:0 (line 10) 107 Halt === 104 1 1 8 1 [[ 0 ]] !jvms: Test::test @ bci:0 (line 10) 108 IfTrue === 99 [[ 109 ]] #1 !jvms: Test::test @ bci:0 (line 10) 109 ParsePredicate === 108 20 [[ 110 118 ]] #Auto_Vectorization_Check !jvms: Test::test @ bci:0 (line 10) 110 IfFalse === 109 [[ 113 ]] #0 !jvms: Test::test @ bci:0 (line 10) 113 CallStaticJava === 110 6 7 8 9 (58 ) [[ 114 ]] # Static uncommon_trap(reason='auto_vectorization_check' action='maybe_recompile' debug_id='0') void ( int ) C=0.000100 Test::test @ bci:0 (line 10) reexecute !jvms: Test::test @ bci:0 (line 10) 114 Proj === 113 [[ 117 ]] #0 !jvms: Test::test @ bci:0 (line 10) 117 Halt === 114 1 1 8 1 [[ 0 ]] !jvms: Test::test @ bci:0 (line 10) 118 IfTrue === 109 [[ 119 ]] #1 !jvms: Test::test @ bci:0 (line 10) 119 ParsePredicate === 118 20 [[ 120 128 ]] #Loop_Limit_Check !jvms: Test::test @ bci:0 (line 10) 120 IfFalse === 119 [[ 123 ]] #0 !jvms: Test::test @ bci:0 (line 10) 123 CallStaticJava === 120 6 7 8 9 (69 ) [[ 124 ]] # Static uncommon_trap(reason='loop_limit_check' action='maybe_recompile' debug_id='0') void ( int ) C=0.000100 Test::test @ bci:0 (line 10) reexecute !jvms: Test::test @ bci:0 (line 10) 124 Proj === 123 [[ 127 ]] #0 !jvms: Test::test @ bci:0 (line 10) 127 Halt === 124 1 1 8 1 [[ 0 ]] !jvms: Test::test @ bci:0 (line 10) AFTER: PHASEIDEALLOOP1 0 Root === 0 97 107 117 127 156 87 [[ 0 1 3 20 25 36 47 58 69 134 135 145 144 ]] 1 Con === 0 [[ ]] #top 3 Start === 3 0 [[ 3 5 6 7 8 9 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address} 5 Parm === 3 [[ 79 ]] Control !orig=[31],[42],[53],[64],[75] !jvms: Test::test @ bci:-1 (line 10) 6 Parm === 3 [[ 83 93 123 103 113 ]] I_O !orig=77 !jvms: Test::test @ bci:-1 (line 10) 7 Parm === 3 [[ 159 143 123 151 83 113 147 93 103 ]] Memory Memory: @ptr:BotPTR+bot, idx=Bot; !orig=[78] !jvms: Test::test @ bci:-1 (line 10) 8 Parm === 3 [[ 123 127 113 117 156 93 87 103 97 83 107 ]] FramePtr !orig=[155] !jvms: Test::test @ bci:-1 (line 10) 9 Parm === 3 [[ 123 113 103 93 83 ]] ReturnAdr !jvms: Test::test @ bci:-1 (line 10) 20 ConI === 0 [[ 89 99 109 119 139 79 ]] #int:1 25 ConI === 0 [[ 83 ]] #int:-218 36 ConI === 0 [[ 93 ]] #int:-146 47 ConI === 0 [[ 103 ]] #int:-66 58 ConI === 0 [[ 113 ]] #int:-74 69 ConI === 0 [[ 123 ]] #int:-154 79 ParsePredicate === 5 20 [[ 80 88 ]] #Short_Running_Long_Loop !jvms: Test::test @ bci:0 (line 10) 80 IfFalse === 79 [[ 83 ]] #0 !jvms: Test::test @ bci:0 (line 10) 83 CallStaticJava === 80 6 7 8 9 (25 ) [[ 84 ]] # Static uncommon_trap(reason='short_running_loop_or_aliasing' action='maybe_recompile' debug_id='0') void ( int ) C=0.000100 Test::test @ bci:0 (line 10) reexecute !jvms: Test::test @ bci:0 (line 10) 84 Proj === 83 [[ 87 ]] #0 !jvms: Test::test @ bci:0 (line 10) 87 Halt === 84 1 1 8 1 [[ 0 ]] !jvms: Test::test @ bci:0 (line 10) 88 IfTrue === 79 [[ 89 ]] #1 !jvms: Test::test @ bci:0 (line 10) 89 ParsePredicate === 88 20 [[ 90 98 ]] #Loop !jvms: Test::test @ bci:0 (line 10) 90 IfFalse === 89 [[ 93 ]] #0 !jvms: Test::test @ bci:0 (line 10) 93 CallStaticJava === 90 6 7 8 9 (36 ) [[ 94 ]] # Static uncommon_trap(reason='predicate' action='maybe_recompile' debug_id='0') void ( int ) C=0.000100 Test::test @ bci:0 (line 10) reexecute !jvms: Test::test @ bci:0 (line 10) 94 Proj === 93 [[ 97 ]] #0 !jvms: Test::test @ bci:0 (line 10) 97 Halt === 94 1 1 8 1 [[ 0 ]] !jvms: Test::test @ bci:0 (line 10) 98 IfTrue === 89 [[ 99 ]] #1 !jvms: Test::test @ bci:0 (line 10) 99 ParsePredicate === 98 20 [[ 100 108 ]] #Profiled_Loop !jvms: Test::test @ bci:0 (line 10) 100 IfFalse === 99 [[ 103 ]] #0 !jvms: Test::test @ bci:0 (line 10) 103 CallStaticJava === 100 6 7 8 9 (47 ) [[ 104 ]] # Static uncommon_trap(reason='profile_predicate' action='maybe_recompile' debug_id='0') void ( int ) C=0.000100 Test::test @ bci:0 (line 10) reexecute !jvms: Test::test @ bci:0 (line 10) 104 Proj === 103 [[ 107 ]] #0 !jvms: Test::test @ bci:0 (line 10) 107 Halt === 104 1 1 8 1 [[ 0 ]] !jvms: Test::test @ bci:0 (line 10) 108 IfTrue === 99 [[ 109 ]] #1 !jvms: Test::test @ bci:0 (line 10) 109 ParsePredicate === 108 20 [[ 110 118 ]] #Auto_Vectorization_Check !jvms: Test::test @ bci:0 (line 10) 110 IfFalse === 109 [[ 113 ]] #0 !jvms: Test::test @ bci:0 (line 10) 113 CallStaticJava === 110 6 7 8 9 (58 ) [[ 114 ]] # Static uncommon_trap(reason='auto_vectorization_check' action='maybe_recompile' debug_id='0') void ( int ) C=0.000100 Test::test @ bci:0 (line 10) reexecute !jvms: Test::test @ bci:0 (line 10) 114 Proj === 113 [[ 117 ]] #0 !jvms: Test::test @ bci:0 (line 10) 117 Halt === 114 1 1 8 1 [[ 0 ]] !jvms: Test::test @ bci:0 (line 10) 118 IfTrue === 109 [[ 119 ]] #1 !jvms: Test::test @ bci:0 (line 10) 119 ParsePredicate === 118 20 [[ 120 128 ]] #Loop_Limit_Check !jvms: Test::test @ bci:0 (line 10) 120 IfFalse === 119 [[ 123 ]] #0 !jvms: Test::test @ bci:0 (line 10) 123 CallStaticJava === 120 6 7 8 9 (69 ) [[ 124 ]] # Static uncommon_trap(reason='loop_limit_check' action='maybe_recompile' debug_id='0') void ( int ) C=0.000100 Test::test @ bci:0 (line 10) reexecute !jvms: Test::test @ bci:0 (line 10) 124 Proj === 123 [[ 127 ]] #0 !jvms: Test::test @ bci:0 (line 10) 127 Halt === 124 1 1 8 1 [[ 0 ]] !jvms: Test::test @ bci:0 (line 10) 128 IfTrue === 119 [[ 157 ]] #1 !jvms: Test::test @ bci:0 (line 10) 134 ConP === 0 [[ 137 137 ]] #instptr:java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):Constant:exact+0,iid=bot Oop:instptr:java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):Constant:exact+0,iid=bot 135 ConL === 0 [[ 137 ]] #long:120 137 AddP === _ 134 134 135 [[ 159 141 ]] Oop:instptr:java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):Constant:exact+120,iid=bot !jvms: Test::test @ bci:0 (line 10) 139 AddI === _ 158 20 [[ 141 158 ]] !jvms: Test::test @ bci:4 (line 10) 141 StoreI === 157 151 137 139 [[ 143 151 ]] @instptr:java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):Constant:exact+120,iid=bot, name=fld, idx=4; Memory: @instptr:java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):Constant:exact+120,iid=bot, name=fld, idx=4; !jvms: Test::test @ bci:5 (line 10) 142 SafePoint === 153 1 143 1 1 147 [[ 157 ]] SafePoint !jvms: Test::test @ bci:8 (line 10) 143 MergeMem === _ 1 7 1 141 [[ 142 ]] { - N141:instptr:java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):Constant:exact+120,iid=bot } Memory: @ptr:BotPTR+bot, idx=Bot; !jvms: Test::test @ bci:8 (line 10) 144 ThreadLocal === 0 [[ 146 ]] !jvms: Test::test @ bci:8 (line 10) 145 ConL === 0 [[ 146 ]] #long:48 146 AddP === _ 1 144 145 [[ 147 ]] !jvms: Test::test @ bci:8 (line 10) 147 LoadP === 157 7 146 [[ 142 ]] @rawptr:BotPTR, idx=Raw; #rawptr:BotPTR (does not depend only on test, raw access) !jvms: Test::test @ bci:8 (line 10) 151 Phi === 157 7 141 [[ 141 ]] #memory Memory: @instptr:java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):Constant:exact+120,iid=bot, name=fld, idx=4; !orig=[149],[131] !jvms: Test::test @ bci:0 (line 10) 152 NeverBranch === 157 [[ 153 154 ]] 153 CProj === 152 [[ 142 ]] #0 154 CProj === 152 [[ 156 ]] #1 156 Halt === 154 1 1 8 1 [[ 0 ]] 157 Loop === 157 128 142 [[ 157 147 151 141 152 158 ]] inner !orig=[129] !jvms: Test::test @ bci:0 (line 10) 158 Phi === 157 159 139 [[ 139 ]] #int !orig=[138] !jvms: Test::test @ bci:0 (line 10) 159 LoadI === _ 7 137 [[ 158 ]] @instptr:java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):Constant:exact+120,iid=bot, name=fld, idx=4; #int !orig=[138] !jvms: Test::test @ bci:0 (line 10)