Closed aryairani closed 2 years ago
A weirder one:
Could not parse line 1148 : org.u.Lib2$$$Lambda$30.1002191352 apply (DD)D :
MetaMember not found for org.u.Lib2$$$Lambda$30.1002191352 apply (DD)D
the corresponding line is
<task_queued compile_id='500' method='org.u.Lib2$$$Lambda$30/1002191352 apply (DD)D'
bytes='6' count='3968' iicount='3968' level='3' stamp='1.236' comment='tiered' hot_count='3968'/>
and I'm not sure how to interpret that one at all. I do have an org.u.Lib2$.class$ but nothing with both
Lib2and
Lambda` in the class file name.
Hi,
For the first one, if you've set up the config then that could be a bug. Is there any more detail in a file called jitwatch.out
in your jitwatch directory?
For the second one, those look like autogenerated classes if you are using functional programming in JDK8+ (lambdas) but this could be related to the first problem.
Thanks,
Chris
Thanks Chris. Will JDK8 lambdas be problematic? I am using them.
Hi, I've not tested much (any?) lambda code in JITWatch yet. Do you have a short example program you could share and I'll see if I can get JITWatch to analyse it correctly?
Thanks
I similarly was attempting to use jitwatch
specifically to dive into the performance of lambdas (and LambdaMetafactory) but also ran into this limitation:
Could not parse line 169708 : com.fasterxml.jackson.module.blackbird.BaseBenchmark$SomeBean$$Lambda$71.0x00000008400f9c40 get ()Ljava.lang.Object; : MetaMember not found for com.fasterxml.jackson.module.blackbird.BaseBenchmark$SomeBean$$Lambda$71.0x00000008400f9c40 get ()Ljava.lang.Object;
Could not parse line 169711 : com.fasterxml.jackson.module.blackbird.BaseBenchmark$SomeBean$$Lambda$54.0x00000008400dc040 accept (Ljava.lang.Object;Ljava.lang.Object;)V : MetaMember not found for com.fasterxml.jackson.module.blackbird.BaseBenchmark$SomeBean$$Lambda$54.0x00000008400dc040 accept (Ljava.lang.Object;Ljava.lang.Object;)V
Could not parse line 170960 : com.fasterxml.jackson.module.blackbird.BaseBenchmark$SomeBean$$Lambda$51.0x00000008400dd040 accept (Ljava.lang.Object;I)V : MetaMember not found for com.fasterxml.jackson.module.blackbird.BaseBenchmark$SomeBean$$Lambda$51.0x00000008400dd040 accept (Ljava.lang.Object;I)V
Could not parse line 170961 : com.fasterxml.jackson.module.blackbird.BaseBenchmark$SomeBean$$Lambda$52.0x00000008400dd440 accept (Ljava.lang.Object;Ljava.lang.Object;)V : MetaMember not found for com.fasterxml.jackson.module.blackbird.BaseBenchmark$SomeBean$$Lambda$52.0x00000008400dd440 accept (Ljava.lang.Object;Ljava.lang.Object;)V
Could not parse line 172129 : com.fasterxml.jackson.module.blackbird.BaseBenchmark$SomeBean$$Lambda$54.0x00000008400dc040 accept (Ljava.lang.Object;Ljava.lang.Object;)V : MetaMember not found for com.fasterxml.jackson.module.blackbird.BaseBenchmark$SomeBean$$Lambda$54.0x00000008400dc040 accept (Ljava.lang.Object;Ljava.lang.Object;)V
Could not parse line 173207 : com.fasterxml.jackson.module.blackbird.BaseBenchmark$SomeBean$$Lambda$55.0x00000008400dc440 accept (Ljava.lang.Object;Ljava.lang.Object;)V : MetaMember not found for com.fasterxml.jackson.module.blackbird.BaseBenchmark$SomeBean$$Lambda$55.0x00000008400dc440 accept (Ljava.lang.Object;Ljava.lang.Object;)V
Could not parse line 218766 : com.fasterxml.jackson.module.blackbird.BaseBenchmark$SomeBean$$Lambda$55.0x00000008400dc440 accept (Ljava.lang.Object;Ljava.lang.Object;)V : MetaMember not found for com.fasterxml.jackson.module.blackbird.BaseBenchmark$SomeBean$$Lambda$55.0x00000008400dc440 accept (Ljava.lang.Object;Ljava.lang.Object;)V
Could not parse line 219447 : com.fasterxml.jackson.module.blackbird.BaseBenchmark$SomeBean$$Lambda$51.0x00000008400dd040 accept (Ljava.lang.Object;I)V : MetaMember not found for com.fasterxml.jackson.module.blackbird.BaseBenchmark$SomeBean$$Lambda$51.0x00000008400dd040 accept (Ljava.lang.Object;I)V
Could not parse line 227589 : java.util.regex.Pattern$$Lambda$6.0x0000000840066040 is (I)Z : MetaMember not found for java.util.regex.Pattern$$Lambda$6.0x0000000840066040 is (I)Z
Could not parse line 227592 : java.util.regex.Pattern$$Lambda$6.0x0000000840066040 is (I)Z : MetaMember not found for java.util.regex.Pattern$$Lambda$6.0x0000000840066040 is (I)Z
Could not parse line 237526 : java.util.regex.CharPredicates$$Lambda$31.0x000000084007a440 is (I)Z : MetaMember not found for java.util.regex.CharPredicates$$Lambda$31.0x000000084007a440 is (I)Z
Could not parse line 238304 : java.util.regex.CharPredicates$$Lambda$31.0x000000084007a440 is (I)Z : MetaMember not found for java.util.regex.CharPredicates$$Lambda$31.0x000000084007a440 is (I)Z
Could not parse line 240373 : java.util.regex.Pattern$$Lambda$33.0x000000084007ac40 is (I)Z : MetaMember not found for java.util.regex.Pattern$$Lambda$33.0x000000084007ac40 is (I)Z
Could not parse line 240376 : java.util.regex.Pattern$$Lambda$33.0x000000084007ac40 is (I)Z : MetaMember not found for java.util.regex.Pattern$$Lambda$33.0x000000084007ac40 is (I)Z
Could not parse line 240762 : java.util.regex.Pattern$BmpCharPredicate$$Lambda$35.0x000000084007b440 is (I)Z : MetaMember not found for java.util.regex.Pattern$BmpCharPredicate$$Lambda$35.0x000000084007b440 is (I)Z
Could not parse line 240767 : java.util.regex.Pattern$BmpCharPredicate$$Lambda$35.0x000000084007b440 is (I)Z : MetaMember not found for java.util.regex.Pattern$BmpCharPredicate$$Lambda$35.0x000000084007b440 is (I)Z
Could not parse line 254447 : java.util.regex.Pattern$$Lambda$34.0x000000084007b040 is (I)Z : MetaMember not found for java.util.regex.Pattern$$Lambda$34.0x000000084007b040 is (I)Z
Could not parse line 254451 : java.util.regex.Pattern$$Lambda$34.0x000000084007b040 is (I)Z : MetaMember not found for java.util.regex.Pattern$$Lambda$34.0x000000084007b040 is (I)Z
It is not trivial, but I am running:
https://github.com/stevenschlansker/jackson-blackbird
as
java -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation -XX:+PrintAssembly -XX:+TraceClassLoading -jar benchmarks/target/benchmarks.jar -f 0 -wi 50 -i 50 Blackbird.beanDeser
Hoping that jitwatch can understand lambdas soon, this feature will not be going away :)
Hi @stevenschlansker thanks for providing a reproducer for this issue. A lot of JITWatch functionality relies on the bytecode for a method being available (this was one of the design assumptions) but I don't think this is available after the program exits in the case of lambdas so I need to find a way to build the class model as best I can from method signatures found in the logs etc. Will give it some thought. Kind regards, Chris
@chriswhocodes - is there any plan for supporting this?
@chriswhocodes
A lot of JITWatch functionality relies on the bytecode for a method being available (this was one of the design assumptions) but I don't think this is available after the program exits in the case of lambdas so I need to find a way to build the class model as best I can from method signatures found in the logs etc.
Anonymous classes for lambdas can be exported to the path specified by the system property "jdk.internal.lambda.dumpProxyClasses"
Example: java -Djdk.internal.lambda.dumpProxyClasses=. Main.java
https://github.com/openjdk/jdk/blob/c6339cb8a255d387bb182ad20dd69f3d460cf1ed/src/java.base/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java#L100-L102
Maybe, you can get the method signature.
Hi, I'm closing all the issues except for the ones I'm actively working on.
Maybe it's worth to add to JITWatch description or documentation info that lambdas are not supported and there are no plans to support them?
I am getting hundreds of errors like
MetaMember not found for org.mypkg.benchmark.Compilation2Benchmarks$ fib$1
, corresponding to the classes that I specifically want to analyze. 😄 I believe I've set the sources and classes correctly in config. The class and method do exist:Where should I go from here?