-
Type:
Bug
-
Resolution: Fixed
-
Priority:
P4
-
Affects Version/s: 27
-
Component/s: hotspot
-
b09
-
ppc
Failed IR Rules (1) of Methods (1)
----------------------------------
1) Method "compiler.intrinsics.string.TestOpaqueConstantBoolNodes::test" - [Failed IR rules: 1]:
* @IR rule 1: "@compiler.lib.ir_framework.IR(phase={AFTER_PARSING}, applyIfPlatformAnd={}, applyIfCPUFeatureOr={}, counts={"#OPAQUE_CONSTANT_BOOL#", "3"}, applyIfPlatform={}, applyIfPlatformOr={}, failOn={}, applyIfOr={}, applyIfCPUFeatureAnd={}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, applyIfNot={})"
> Phase "After Parsing":
- counts: Graph contains wrong number of nodes:
* Constraint 1: "(\d+(\s){2}(OpaqueConstantBool.)+(\s){2}===.)"
- Failed comparison: [found] 0 = 3 [given]
- No nodes matched!
java.lang.String::utf8 is not inlined which can be figured out like this:
java -XX:CompileCommand=inline,java.lang.StringCoding::* -XX:CompileCommand=exclude,jdk.internal.util.Preconditions::checkFromIndexSize -XX:CompileCommand=compileonly,test::test -XX:-TieredCompilation -XX:+PrintInlining test
CompileCommand: inline java/lang/StringCoding.* bool inline = true
CompileCommand: exclude jdk/internal/util/Preconditions.checkFromIndexSize bool exclude = true
CompileCommand: compileonly test.test bool compileonly = true
from base type: instptr:jdk/internal/lang/LazyConstantImpl (java/lang/LazyConstant,java/util/function/Supplier):Constant:exact+12,iid=bot [narrow]
sharpened value: instptr:java/lang/Object:BotPTR+0,iid=bot
@ 7 java.lang.String::<init> (17 bytes) inline (hot)
@ 1 java.nio.charset.Charset::defaultCharset (12 bytes) inline (hot)
@ 3 jdk.internal.lang.LazyConstantImpl::get (18 bytes) force inline by annotation
@ 1 jdk.internal.lang.LazyConstantImpl::getAcquire (11 bytes) force inline by annotation
@ 7 jdk.internal.misc.Unsafe::getReferenceAcquire (7 bytes) (intrinsic)
@ 9 java.lang.String::checkBoundsOffCount (10 bytes) inline (hot)
@ 6 jdk.internal.util.Preconditions::checkFromIndexSize (25 bytes) failed to inline: disallowed by CompileCommand
@ 13 java.lang.String::<init> (86 bytes) inline (hot)
@ 23 java.lang.String::utf8 (269 bytes) failed to inline: hot method too big
@ 82 java.lang.String::<init> (37 bytes) inline (hot)
@ 1 java.lang.Object::<init> (1 bytes) inline (hot)
----------------------------------
1) Method "compiler.intrinsics.string.TestOpaqueConstantBoolNodes::test" - [Failed IR rules: 1]:
* @IR rule 1: "@compiler.lib.ir_framework.IR(phase={AFTER_PARSING}, applyIfPlatformAnd={}, applyIfCPUFeatureOr={}, counts={"#OPAQUE_CONSTANT_BOOL#", "3"}, applyIfPlatform={}, applyIfPlatformOr={}, failOn={}, applyIfOr={}, applyIfCPUFeatureAnd={}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, applyIfNot={})"
> Phase "After Parsing":
- counts: Graph contains wrong number of nodes:
* Constraint 1: "(\d+(\s){2}(OpaqueConstantBool.)+(\s){2}===.)"
- Failed comparison: [found] 0 = 3 [given]
- No nodes matched!
java.lang.String::utf8 is not inlined which can be figured out like this:
java -XX:CompileCommand=inline,java.lang.StringCoding::* -XX:CompileCommand=exclude,jdk.internal.util.Preconditions::checkFromIndexSize -XX:CompileCommand=compileonly,test::test -XX:-TieredCompilation -XX:+PrintInlining test
CompileCommand: inline java/lang/StringCoding.* bool inline = true
CompileCommand: exclude jdk/internal/util/Preconditions.checkFromIndexSize bool exclude = true
CompileCommand: compileonly test.test bool compileonly = true
from base type: instptr:jdk/internal/lang/LazyConstantImpl (java/lang/LazyConstant,java/util/function/Supplier):Constant:exact+12,iid=bot [narrow]
sharpened value: instptr:java/lang/Object:BotPTR+0,iid=bot
@ 7 java.lang.String::<init> (17 bytes) inline (hot)
@ 1 java.nio.charset.Charset::defaultCharset (12 bytes) inline (hot)
@ 3 jdk.internal.lang.LazyConstantImpl::get (18 bytes) force inline by annotation
@ 1 jdk.internal.lang.LazyConstantImpl::getAcquire (11 bytes) force inline by annotation
@ 7 jdk.internal.misc.Unsafe::getReferenceAcquire (7 bytes) (intrinsic)
@ 9 java.lang.String::checkBoundsOffCount (10 bytes) inline (hot)
@ 6 jdk.internal.util.Preconditions::checkFromIndexSize (25 bytes) failed to inline: disallowed by CompileCommand
@ 13 java.lang.String::<init> (86 bytes) inline (hot)
@ 23 java.lang.String::utf8 (269 bytes) failed to inline: hot method too big
@ 82 java.lang.String::<init> (37 bytes) inline (hot)
@ 1 java.lang.Object::<init> (1 bytes) inline (hot)
- caused by
-
JDK-8374582 [REDO] Move input validation checks to Java for java.lang.StringCoding intrinsics
-
- Resolved
-
- links to
-
Commit(master)
openjdk/jdk/9cd25d51
-
Review(master)
openjdk/jdk/29605