JDK-8166002 : Emulate client build on platforms with reduced virtual address space
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 9
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS: windows
  • CPU: x86
  • Submitted: 2016-08-02
  • Updated: 2017-09-06
  • Resolved: 2017-01-18
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 10 JDK 9
10Fixed 9 b156Fixed
Related Reports
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Sub Tasks
JDK-8169582 :  
JDK-8177651 :  
Description
On 32-bit Windows, a limited amount of virtual address space (typically 2-3 GB) is available to processes. Running a server VM on 32-bit Windows is, therefore, unfeasible, as C2 compilation can consume virtual memory up to 1 GB.

Before JDK-8154209, client builds were used to execute tests on 32-bit Windows platforms. Since JDK-8154209, however, tests are executed with a server VM that causes many tests to fail on 32-bit Windows. Customers running applications on 32-bit Windows are likely to be negatively affected as well.

The goal of this bug is to emulate a client build on 32-bit Windows platforms using a standard tiered build. More specifically, the following should be performed:
- set TieredStopAtLevel to 1 by default (so that only C1 compilations are performed in the system)
- adjust tiered compilation thresholds so that in the emulated client build C1 compilation happens around the same time as in a "real" client build;
- set the size of the code cache to a value used in client builds before
- (optional) do not start C2 compiler threads in the emulated client build
- (optional) use ParallelGC instead of G1

Success criteria:
- measured memory usage with TreePostTest.java executed with -Xmx512m is < 1GB.
Comments
Hi Joe, okay, I added a release note subtask for this. Best regards, Tobias
27-03-2017

Someone running into problems running java on win32 in JDK 9 is unlikely to think to look at the Tools Reference Guide. Please document this change in the release notes to give users a better chance of reading about the change, even if the release note item is mostly a pointer to existing documentation.
24-03-2017

No release note required because this change is already documented in the Tools Reference Guide.
20-03-2017

Compiler Mem usage: SPECjbb2005: client VM compiler memory usage: - Compiler (reserved=72KB, committed=72KB) (malloc=6KB #97) (arena=66KB #2) server VM(non tiered) compiler memory usage - Compiler (reserved=1708KB, committed=1708KB) (malloc=5KB #69) (arena=1703KB #12) tiered VM compiler memory usage: - Compiler (reserved=8141KB, committed=8141KB) (malloc=6KB #85) (arena=8134KB #13) SPECjvm98 client VM compiler memory usage: - Compiler (reserved=6755KB, committed=6755KB) (malloc=7KB #103) (arena=6748KB #13) Tiered VM compiler memory usage - Compiler (reserved=69KB, committed=69KB) (malloc=3KB #71) (arena=66KB #2)
05-10-2016

perf comparison between jdk9 client compiler(used parallel gc for runs) n jdk8 client. [Done on Linux x64 m/c] + ./compare ./results/specjbb2005.jdk8 ./results/specjbb2005.jdk9.pgc ============================================================================== ./results/specjbb2005.jdk8: Benchmark Samples Mean Stdev Geomean Weight specjbb2005 5 25648.78 552.62 ============================================================================== ./results/specjbb2005.jdk9.pgc: Benchmark Samples Mean Stdev %Diff P Significant specjbb2005 5 25754.87 591.13 0.41 0.777 * ============================================================================== * - Not Significant: A non-zero %Diff for the mean could be noise. If the %Diff is 0, an actual difference may still exist. In either case, more samples would be needed to detect an actual difference in sample means. Alpha for this run: 0.010 + ./compare ./results/specjvm98.jdk8/ ./results/specjvm98.jdk9.pgc/ ============================================================================== ./results/specjvm98.jdk8/: Benchmark Samples Mean Stdev Geomean Weight specjvm98 20 447.23 11.30 ============================================================================== ./results/specjvm98.jdk9.pgc/: Benchmark Samples Mean Stdev %Diff P Significant specjvm98 20 458.14 7.35 2.44 0.001 Yes ============================================================================== will share memory profiling results shortly
29-09-2016

[~kvn] Thank you for the feedback, i will do the suggested change.
21-09-2016

Numerical values is difficult to remember. I would suggest using string flag: -XX:Compiler=[tiered | client | server | aot] product(ccstr, Compiler, TIERED_ONLY("tiered") NOT_TIERED(COMPILER2_PRESENT("server") NOT_COMPILER2(COMPILER1_PRESENT("client") NOT_COMPILER1(""))) , There should be matrix for default values depending on then build variant of JVM.
20-09-2016

Zoltan suggested : -XX:NonTieredCompiler with values 0 = C1, 1 = C2, 2 = JVMCI.
19-09-2016

"Another thought. We are trying emulate behavior similar to -XX:-TieredCompilation but using C1 instead of C2. There is also interest to use it even in 64-bit environment for small applications. May be we should provide new VM's product flags -Xclient/-Xserver with -XX:-TieredCompilation to control what JIT will be used." "Talked with Mikael V. He suggested to have -XX: flag which we can set internally (ergonomic) or on command line." [~kvn] can i name flag as -XX:Opt=[0,1,2,3] ?
19-09-2016

Igor V. suggested next flags setting to emulate Client VM compile threshold with TieredStopAtLevel=1: Tier3BackEdgeThreshold=14000 Tier3CompileThreshold=1500 Tier3InvocationThreshold=1500 Tier3MinInvocationThreshold =1500
16-09-2016

LiveNodeCountInliningCutoff changed by 20000 MaxNodeLimit changed by 5000 between JDK8 and JDK9
16-09-2016

made TieredStopAtLevel=1, ReservedCodeCacheSize is allocated based on tiered nature(i.e TieredStopAtLevel*level1_size), ProfileInterpreter disabled for level1. ran one round of hs-comp-tiered0, hit with these test case failing test/compiler/arguments/CheckCICompilerCount.java test/compiler/loopopts/UseCountedLoopSafepointsTest.java excluded both tests on win32-x86
16-09-2016

solution that i am proposing is limit amount of inlining by lower DesiredMethodLimit, limit huge methods compilation by HugeMethodLimit for win32 compiler2 and if anything escape from this bailout using a lower MaxNodeLimit. This helps as DesiredMethodLimit doesn't bailout compilation.
16-09-2016

tuning MaxNodeLimit will workout, then ?
16-09-2016

No, C2 may eat a lot of memory even with small/medium bytecode size because it does a lot of inlining. Memory usage in C2 depends on Ideal Graph size (number of IR nodes) and not on bytecode size.
16-09-2016

instead of making c1 as default compiler, why dont we have tiered with (compiler2 reduced bytecode size limit). i am not sure that solves that complete problem. but just a thought.
16-09-2016

It is C2 C1 does not do a lot inlining and does not have this problem.
16-09-2016

somewhere in analysis Zoltan mentioned method size and too much inlining was making Compiler2 to take so much memory, so asked. "The OOM appears when the compiler is compiling the com.sun.tools.javac.parser.JavacParser::term3() method (a large method with 2466 bytecodes). C2: 259254 19197 4 com.sun.tools.javac.parser.JavacParser::term3 (2466 bytes) Also, lots of methods are inlined (the replay compilation output keeps track of inlining decisions, each method name indicates that the method with that name was inlined, see below). "
16-09-2016

Don't touch them. They are (and were) the same for Client VM (with C1) - we did not have problems with them so leave them.
15-09-2016

[~kvn] how abt limiting inlining using DesiredMethodLimit, and limiting compilation by HugeMethodLimit for win32 compiler2 ? both are develop options now, should be made product.
15-09-2016

Talked with Mikael V. He suggested to have -XX: flag which we can set internally (ergonomic) or on command line.
15-09-2016

Also what about ProfileInterpreter switching off (off for Client VM since C1 does not use MDO so we can save memory on it). We did not test combination of Tiered and Interpreter profiling off. Another thought. We are trying emulate behavior similar to -XX:-TieredCompilation but using C1 instead of C2. There is also interest to use it even in 64-bit environment for small applications. May be we should provide new VM's product flags -Xclient/-Xserver with -XX:-TieredCompilation to control what JIT will be used.
14-09-2016

There is question how it should behave when tiered is off -XX:-TieredCompilation? Should it be C2 only (current Server VM behavior) or C1 only when running on win32?
14-09-2016

Hi Jamsheed, I'm assigning this bug to you, as previously discussed. Best regards, Zoltan
14-09-2016

Original description (out of memory error affecting TreePos): This has been observed four times recently. From test log, it show agent communication error as following: ----------messages:(4/144)---------- command: main TreePosTest -q -r . reason: User specified action: run main TreePosTest -q -r . Mode: agentvm elapsed time (seconds): 18.329 ----------configuration:(14/964)*---------- Boot Layer class path: C:\\jenkins\\workspace\\mach5data\\unpacked\\jpg\\infra\\builddeps\\jtreg-4.2\\1.2\\jtreg\\lib\\javatest.jar C:\\jenkins\\workspace\\mach5data\\unpacked\\jpg\\infra\\builddeps\\jtreg-4.2\\1.2\\jtreg\\lib\\jtreg.jar patch: java.base C:\\jenkins\\workspace\\9-dev\\testresults\\windows-x86\\tier1\\JTwork\\langtools_test\\patches\\java.base Test Layer add exports: jdk.compiler/com.sun.tools.javac.api ALL-UNNAMED jdk.compiler/com.sun.tools.javac.code ALL-UNNAMED jdk.compiler/com.sun.tools.javac.file ALL-UNNAMED jdk.compiler/com.sun.tools.javac.tree ALL-UNNAMED jdk.compiler/com.sun.tools.javac.util ALL-UNNAMED class path: C:\\jenkins\\workspace\\9-dev\\testresults\\windows-x86\\tier1\\JTwork\\langtools_test\\classes\\13\\tools\\javac\\tree C:\\jenkins\\workspace\\9-dev\\langtools\\test\\tools\\javac\\tree ----------rerun:(22/2321)*---------- PATH='C:\\cygwin\\usr\\local\\bin;C:\\cygwin\\bin;C:\\cygwin\\user\\bin;C:\\cygwin\\bin;.;C:\\ProgramData\\Oracle\\Java\\javapath;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0;C:\\Program Files\\Puppet Labs\\Puppet\\bin;C:\\Program Files (x86)\\Windows Kits\\8.1\\Windows Performance Toolkit;C:\\Program Files\\Microsoft SQL Server\\110\\Tools\\Binn' \\ SystemDrive=C: \\ SystemRoot='C:\\Windows' \\ TEMP='C:\\Temp' \\ buildid=BUILD_ID \\ windir='C:\\Windows' \\ 'c:\\jenkins\\workspace\\9-dev\\jdk\\bin\\java' \\ -Dtest.class.path.prefix='C:\\jenkins\\workspace\\9-dev\\testresults\\windows-x86\\tier1\\JTwork\\langtools_test\\classes\\13\\tools\\javac\\tree;C:\\jenkins\\workspace\\9-dev\\langtools\\test\\tools\\javac\\tree' \\ -Dtest.src='C:\\jenkins\\workspace\\9-dev\\langtools\\test\\tools\\javac\\tree' \\ -Dtest.src.path='C:\\jenkins\\workspace\\9-dev\\langtools\\test\\tools\\javac\\tree' \\ -Dtest.classes='C:\\jenkins\\workspace\\9-dev\\testresults\\windows-x86\\tier1\\JTwork\\langtools_test\\classes\\13\\tools\\javac\\tree' \\ -Dtest.class.path='C:\\jenkins\\workspace\\9-dev\\testresults\\windows-x86\\tier1\\JTwork\\langtools_test\\classes\\13\\tools\\javac\\tree' \\ -Dtest.vm.opts='-ea -esa -Xmx512m' \\ -Dtest.tool.vm.opts='-J-ea -J-esa -J-Xmx512m' \\ -Dtest.compiler.opts= \\ -Dtest.java.opts= \\ -Dtest.jdk='c:\\jenkins\\workspace\\9-dev\\jdk' \\ -Dcompile.jdk='c:\\jenkins\\workspace\\9-dev\\jdk' \\ -Dtest.timeout.factor=5.0 \\ -Dtest.modules='java.desktop jdk.compiler/com.sun.tools.javac.api jdk.compiler/com.sun.tools.javac.code jdk.compiler/com.sun.tools.javac.file jdk.compiler/com.sun.tools.javac.tree jdk.compiler/com.sun.tools.javac.util' \\ -classpath 'C:\\jenkins\\workspace\\9-dev\\testresults\\windows-x86\\tier1\\JTwork\\langtools_test\\classes\\13\\tools\\javac\\tree;C:\\jenkins\\workspace\\9-dev\\langtools\\test\\tools\\javac\\tree;C:\\jenkins\\workspace\\mach5data\\unpacked\\jpg\\infra\\builddeps\\jtreg-4.2\\1.2\\jtreg\\lib\\javatest.jar;C:\\jenkins\\workspace\\mach5data\\unpacked\\jpg\\infra\\builddeps\\jtreg-4.2\\1.2\\jtreg\\lib\\jtreg.jar' \\ TreePosTest -q -r . result: Error. Agent communication error: java.net.SocketException: Connection reset; check console log for any additional details This is actually because of vm crash. It looks to be a problem in javac: --------------- S U M M A R Y ------------ Command Line: -ea -esa -Xmx512m -Djdk.launcher.patch.0=java.base=C:\jenkins\workspace\9-dev\testresults\windows-x86\tier1\JTwork\langtools_test\patches\java.base -Djava.security.policy=file:/c:/jenkins/workspace/9-dev/testresults/windows-x86/tier1/JTwork/jtreg.policy com.sun.javatest.regtest.agent.AgentServer -allowSetSecurityManager -port 48080 Host: Intel(R) Xeon(R) CPU E5-2690 0 @ 2.90GHz, 32 cores, 255G, Windows Server 2012 R2 , 64 bit Build 9600 (6.3.9600.17415) Time: Mon Aug 01 12:59:40 2016 Pacific Daylight Time elapsed time: 259 seconds (0d 0h 4m 19s) --------------- T H R E A D --------------- Current thread (0x33384c00): JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=14460, stack(0x33cb0000,0x33d00000)] Current CompileTask: C2: 259254 19197 4 com.sun.tools.javac.parser.JavacParser::term3 (2466 bytes) Stack: [0x33cb0000,0x33d00000], sp=0x33cfe2f4, free space=312k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) V [jvm.dll+0x4ed7c9] V [jvm.dll+0x4edce5] V [jvm.dll+0x18a509] V [jvm.dll+0x76ea0] V [jvm.dll+0x775eb] V [jvm.dll+0x455b8c] V [jvm.dll+0x1ef209] V [jvm.dll+0x369f33] V [jvm.dll+0x160ae9] V [jvm.dll+0x1621c1] V [jvm.dll+0x1605b8] V [jvm.dll+0x104a8c] V [jvm.dll+0x16a4cf] V [jvm.dll+0x169874] V [jvm.dll+0x4c757c] V [jvm.dll+0x4c6bbd] V [jvm.dll+0x41145c] C [msvcr120.dll+0x2c01d] C [msvcr120.dll+0x2c001] C [KERNEL32.DLL+0x17c04] C [ntdll.dll+0x5ab8f] C [ntdll.dll+0x5ab5a] C 0x00000000 I have attached hs_err log and replay log. The ".mdmp" is actually empty.
14-09-2016

Should we also use ParallelGC as default instead of G1 in such configuration? It use less memory and faster setup as I understand.
13-09-2016

This is not an infrastructure issue, this is a general problem running the server VM on 32-bit Windows that happens to manifest when running some tests in an "infra" environment. However we also related build failures in JPRT because of: Error occurred during initialization of VM Could not reserve enough space for 1048576KB object heap GenerateModuleSummary.gmk:37: recipe for target '/cygdrive/c/jprt/T/P1/192454.vkozlov/s/build/windows-x86/images/gengraphs/jdk.dot' failed We either need to modify the VM so that 32-bit windows has a different set of ergonomics choices (eg compilation policy for tiered) or we have to modify the build to apply those changes externally, and modify all tests when run on 32-bit windows. I think we need to modify the VM! And I think this whole issue needs to be escalated somehow.
07-09-2016

Updated ILW = Crash due to OOM, rare/win32 only, workaround as mentioned by Vladimir K = HLL = P4. The problem is due to switching to Server VM from Client VM. As Vladimir K suggested, we can try to run the test with the configuration -XX:TieredStopAtLevel=1, some compiler threshold changes, and a reduction of the code cache's size. Those are test changes and not VM changes. Vladimir K also suggested not to reduce the number of C2 compiler threads even further, as a reduction is likely to not give us any benefit. That would have been the only short-term VM change to be performed on the VM side. Other possible changes to limit the C2 compiler's memory usage are handled by JDK-8143321. So there won't be any VM changes in the scope of this issue. I'm adding back the testbug label. If there won't be any test adjustments within the context of this bug, from the VM JIT compiler perspective we can close this issue.
23-08-2016

Moving component/subcomponent to original ones, since it's not a compiler issue.
23-08-2016

Removing testbug label for this issue to track respective vm changes.
22-08-2016

Based on hs_err_pid24996.log OOM happens at some later time (259 sec after start) and only one compilation was executed by one C2 thread. Even if you reduce number of C2 compiler threads it may not help - you only save 1Mb stack space and thread data. As David H. said it is general problem of switching from Client VM to Server VM which requires a lot more memory resources to run. As workaround we can emulate Client VM behavior on such systems with -XX:TieredStopAtLevel=1 (may be not even creating C2 threads) and corresponding compiler threshold changes + codecache size reduction.
15-08-2016

In March 2016, JDK-8150839 set the number of compiler threads to 3 (on 32-bit platforms w/ tiered compilation disabled). Before that, the number of threads was proportional to the number of cores available on the system where the VM was running, which clearly consumes too much memory to be acceptable in practice. http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/rev/0adf6c8c7223 We could further reduce the number of threads to 2. We discussed about that in the context of JDK-8150839 (see comments), but we eventually decided to limit the number of of threads to 3 (and not 2). Now we have a good example why 2 might be a better number. Vladimir [~kvn], could you please say what you think? Thank you!
15-08-2016

FTR, I don't think this is a javac problem (yes, javac has some big method(s); yes, this test is probably putting some pressure on the hotspot compiler, but I don't think javac or the test are doing anything wrong). I assume the correct fix would be for hotspot to bail out of the compilation if it cannot allocate memory and continue with less optimized (or not optimized) code. If needed, as a workaround, we could try to use /othervm or even disable tiered compilation (or something like that) for the test, although I would rather avoid that.
12-08-2016

Right - so tests that used to run fine on the default VM now run into various resource problems running with C2 and G1. Unfortunately there are numerous parts of the VM that do not handle OOM conditions gracefully.
12-08-2016

I think so. Looks like the issue started after: JDK-8154209: Remove client VM from default JIB profile on windows-x86 and linux-x86 (Fixed in b126)
12-08-2016

Is this another case of switching from client VM testing to server VM testing on 32-bit?
12-08-2016

It is not reasonable to close as not an issue, though it is simply not a hotspot issue. The tests still keep on failing in Mach 5 tier1 testing. As I commented above, we can see the jvm were started with "-ea -esa -Xmx512m". Since the tests need more space, it is necessary for langtools engineer to consider to explicitly specify memory usage. BTW, these tests look like not new tests, are we indeed sure why we never observe such failures before? Can it be somehow "regression" on something?
12-08-2016

Jan, could you have a look at this? Or please help to route to suitable engineer
12-08-2016

I ran the test on my own linux-x64 machine with a recent server-enabled build in three configurations with -Xmx512m. Here is the maximum memory usage I measured: -Xint (interpreter-only): 750 MB -XX:TieredStopAtLevel=3 (C1-only): 1063 MB -XX:TieredStopAtLevel=4 (C1 and C2): 1260 MB The compilation-enabled configurations run with 3 compiler threads (1 C1, 2 C2). Compilation has some overhead in memory usage (~60%), but 500 MB is reasonable amount. For some use cases, however, that memory usage is too high. The JIT Compiler Team is considering investing some effort into reducing the C2 compiler's memory usage. We plan to handle that problem with JDK-8143321 that is slated to be fixed in JDK 10. Regarding bailing out compilation gracefully when there there is no native memory available: Unfortunately, the compilation system of HotSpot does not (by its design) handle the VM running out of native memory gracefully. That issue is also known, but there is currently no planned effort to change that design (at least not to my knowledge). Implementing such change would be a medium to large effort and would (in my opinion) require a JEP on its own. Reducing the memory usage (JDK-8143321) seems to be a simpler change at the moment, so we will most likely try to solve JDK-8143321 before considering redesigning the way the compiler handles running out of memory. Regarding the test: The main issue with the test is caused by the high memory usage of the compiler that the JIT Compiler Team is aware of and plans to mitigate. So, from the compiler's perspective, there is nothing with this issue that we are not already tracking (with JDK-8143321). Until JDK-8143321 is fixed, this test is likely to continue failing in Mach5 testing. I'd recommend to run the test with 'othervm' (so that the test experiences only the overhead of its own compilations). Also, I'd suggest to run the test with a reduced heap (e.g., -Xmx512). (Without Xmx=512 the test's total memory consumption is up to 2GB on my system; that amount is already over the limit for some Windows systems.) I'm changing the component to 'tools' and adding the label 'testbug' so that this issue reflects the problem better (problem with a javac test). [1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx
12-08-2016

The compiler seems to not do anything wrong for this failure to appear. The problem is likely to be related to the limited virtual memory space available on 32-bit Win32 systems (2-3GB). The compiler is just unlucky to be the first to hit the memory space limit. If the compiler is compiling a large method and/or is inlining a large number of methods, its memory usage can be quite high. A single C2 compiler instance can use up to ~1GB of memory (see JDK-8129847 for an example). In the current case we have the VM running with 2 C2 compiler instances. The OOM appears when the compiler is compiling the com.sun.tools.javac.parser.JavacParser::term3() method (a large method with 2466 bytecodes). C2: 259254 19197 4 com.sun.tools.javac.parser.JavacParser::term3 (2466 bytes) Also, lots of methods are inlined (the replay compilation output keeps track of inlining decisions, each method name indicates that the method with that name was inlined, see below). When the OOM appears, the memory chunk allocated is ~620K, which is reasonably-sized allocation. # Native memory allocation (malloc) failed to allocate 623712 bytes for Chunk::new The OOM appears also when compiling com.sun.tools.javac.parser.JavacParser::term3Rest C2: 295212 17528 4 com.sun.tools.javac.parser.JavacParser::term3Rest (706 bytes) In that case a lot of inlining is going on as well (see below). We've already reduced the compiler threads on 32-bit platforms to limit the compiler's memory usage (see JDK-8150839). We could reduce the inlining thresholds on 32-bit platforms, but, on the other hand, we need the large inlining threshold to allow the compiler generate high-performance code for Lambda Forms (see JDK-8058148 that was fixed in JDK 9). If desired, we could start a discussion about the tradeoff between the quality of compiler-generated code and resource usage of the compiler on 32-bit systems. That is more an architectural decision, as we need a detailed performance investigation to find a good tradeoff and is therefore outside the scope of this bug. So I'll close this bug as "Not an issue". One could also try to run the test with less heap space allocated (i.e., < 512m), but the 100-200 MBs we can save there will most likely not account for the compiler's memory usage. ============ Replay compilation output for the compilation of com.sun.tools.javac.parser.JavacParser::term3 compile com/sun/tools/javac/parser/JavacParser term3 ()Lcom/sun/tools/javac/tree/JCTree$JCExpression; -1 4 inline 181 0 -1 com/sun/tools/javac/parser/JavacParser term3 ()Lcom/sun/tools/javac/tree/JCTree$JCExpression; 1 10 com/sun/tools/javac/parser/JavacParser typeArgumentsOpt (I)Lcom/sun/tools/javac/util/List; 1 24 java/lang/Enum ordinal ()I 1 419 com/sun/tools/javac/parser/JavacParser nextToken ()V 2 4 com/sun/tools/javac/parser/Scanner nextToken ()V 3 12 java/util/ArrayList isEmpty ()Z 3 26 java/util/ArrayList remove (I)Ljava/lang/Object; 4 5 java/util/Objects checkIndex (II)I 4 21 java/util/ArrayList elementData (I)Ljava/lang/Object; 2 14 com/sun/tools/javac/parser/Scanner token ()Lcom/sun/tools/javac/parser/Tokens$Token; 3 2 com/sun/tools/javac/parser/Scanner token (I)Lcom/sun/tools/javac/parser/Tokens$Token; 1 465 com/sun/tools/javac/parser/Tokens$NumericToken radix ()I 1 504 com/sun/tools/javac/tree/TreeMaker at (I)Lcom/sun/tools/javac/tree/TreeMaker; 1 509 com/sun/tools/javac/parser/JavacParser unoptag (Lcom/sun/tools/javac/parser/Tokens$TokenKind;)Lcom/sun/tools/javac/tree/JCTree$Tag; 2 4 java/lang/Enum ordinal ()I 1 513 com/sun/tools/javac/tree/TreeMaker Unary (Lcom/sun/tools/javac/tree/JCTree$Tag;Lcom/sun/tools/javac/tree/JCTree$JCExpression;)Lcom/sun/tools/javac/tree/JCTree$JCUnary; 2 6 com/sun/tools/javac/tree/JCTree$JCUnary <init> (Lcom/sun/tools/javac/tree/JCTree$Tag;Lcom/sun/tools/javac/tree/JCTree$JCExpression;)V 3 1 com/sun/tools/javac/tree/JCTree$JCExpression <init> ()V 4 1 com/sun/tools/javac/tree/JCTree <init> ()V 5 1 java/lang/Object <init> ()V 1 549 java/lang/Enum ordinal ()I 1 738 com/sun/tools/javac/parser/JavacParser accept (Lcom/sun/tools/javac/parser/Tokens$TokenKind;)V 2 12 com/sun/tools/javac/parser/JavacParser nextToken ()V 3 4 com/sun/tools/javac/parser/Scanner nextToken ()V 4 12 java/util/ArrayList isEmpty ()Z 4 26 java/util/ArrayList remove (I)Ljava/lang/Object; 5 5 java/util/Objects checkIndex (II)I 5 21 java/util/ArrayList elementData (I)Ljava/lang/Object; 3 14 com/sun/tools/javac/parser/Scanner token ()Lcom/sun/tools/javac/parser/Tokens$Token; 4 2 com/sun/tools/javac/parser/Scanner token (I)Lcom/sun/tools/javac/parser/Tokens$Token; 2 26 com/sun/tools/javac/parser/JavacParser setErrorEndPos (I)V 3 5 com/sun/tools/javac/parser/JavacParser$AbstractEndPosTable setErrorEndPos (I)V 2 34 com/sun/tools/javac/parser/Scanner prevToken ()Lcom/sun/tools/javac/parser/Tokens$Token; 2 52 com/sun/tools/javac/parser/JavacParser reportSyntaxError (ILjava/lang/String;[Ljava/lang/Object;)V 3 5 com/sun/tools/javac/util/JCDiagnostic$SimpleDiagnosticPosition <init> (I)V 4 1 java/lang/Object <init> ()V 1 754 com/sun/tools/javac/parser/JavacParser term2Rest (Lcom/sun/tools/javac/tree/JCTree$JCExpression;I)Lcom/sun/tools/javac/tree/JCTree$JCExpression; 2 39 com/sun/tools/javac/parser/JavacParser prec (Lcom/sun/tools/javac/parser/Tokens$TokenKind;)I 2 102 com/sun/tools/javac/parser/JavacParser prec (Lcom/sun/tools/javac/parser/Tokens$TokenKind;)I 2 112 com/sun/tools/javac/parser/JavacParser prec (Lcom/sun/tools/javac/parser/Tokens$TokenKind;)I 2 171 com/sun/tools/javac/util/Assert check (Z)V 2 182 com/sun/tools/javac/tree/JCTree hasTag (Lcom/sun/tools/javac/tree/JCTree$Tag;)Z 1 760 com/sun/tools/javac/parser/JavacParser termRest (Lcom/sun/tools/javac/tree/JCTree$JCExpression;)Lcom/sun/tools/javac/tree/JCTree$JCExpression; 2 10 java/lang/Enum ordinal ()I 2 155 com/sun/tools/javac/tree/TreeMaker at (I)Lcom/sun/tools/javac/tree/TreeMaker; 2 165 com/sun/tools/javac/tree/TreeMaker Assignop (Lcom/sun/tools/javac/tree/JCTree$Tag;Lcom/sun/tools/javac/tree/JCTree;Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree$JCAssignOp; 3 8 com/sun/tools/javac/tree/JCTree$JCAssignOp <init> (Lcom/sun/tools/javac/tree/JCTree$Tag;Lcom/sun/tools/javac/tree/JCTree;Lcom/sun/tools/javac/tree/JCTree;Lcom/sun/tools/javac/code/Symbol$OperatorSymbol;)V 4 1 com/sun/tools/javac/tree/JCTree$JCExpression <init> ()V 5 1 com/sun/tools/javac/tree/JCTree <init> ()V 6 1 java/lang/Object <init> ()V 2 104 com/sun/tools/javac/tree/TreeMaker at (I)Lcom/sun/tools/javac/tree/TreeMaker; 2 109 com/sun/tools/javac/tree/TreeMaker Assign (Lcom/sun/tools/javac/tree/JCTree$JCExpression;Lcom/sun/tools/javac/tree/JCTree$JCExpression;)Lcom/sun/tools/javac/tree/JCTree$JCAssign; 3 6 com/sun/tools/javac/tree/JCTree$JCAssign <init> (Lcom/sun/tools/javac/tree/JCTree$JCExpression;Lcom/sun/tools/javac/tree/JCTree$JCExpression;)V 4 1 com/sun/tools/javac/tree/JCTree$JCExpression <init> ()V 5 1 com/sun/tools/javac/tree/JCTree <init> ()V 6 1 java/lang/Object <init> ()V 1 768 com/sun/tools/javac/parser/JavacParser accept (Lcom/sun/tools/javac/parser/Tokens$TokenKind;)V 2 12 com/sun/tools/javac/parser/JavacParser nextToken ()V 3 4 com/sun/tools/javac/parser/Scanner nextToken ()V 4 12 java/util/ArrayList isEmpty ()Z 4 26 java/util/ArrayList remove (I)Ljava/lang/Object; 5 5 java/util/Objects checkIndex (II)I 5 21 java/util/ArrayList elementData (I)Ljava/lang/Object; 3 14 com/sun/tools/javac/parser/Scanner token ()Lcom/sun/tools/javac/parser/Tokens$Token; 4 2 com/sun/tools/javac/parser/Scanner token (I)Lcom/sun/tools/javac/parser/Tokens$Token; 2 26 com/sun/tools/javac/parser/JavacParser setErrorEndPos (I)V 3 5 com/sun/tools/javac/parser/JavacParser$AbstractEndPosTable setErrorEndPos (I)V 2 34 com/sun/tools/javac/parser/Scanner prevToken ()Lcom/sun/tools/javac/parser/Tokens$Token; 2 52 com/sun/tools/javac/parser/JavacParser reportSyntaxError (ILjava/lang/String;[Ljava/lang/Object;)V 3 5 com/sun/tools/javac/util/JCDiagnostic$SimpleDiagnosticPosition <init> (I)V 4 1 java/lang/Object <init> ()V 1 777 com/sun/tools/javac/tree/TreeMaker at (I)Lcom/sun/tools/javac/tree/TreeMaker; 1 781 com/sun/tools/javac/tree/TreeMaker Parens (Lcom/sun/tools/javac/tree/JCTree$JCExpression;)Lcom/sun/tools/javac/tree/JCTree$JCParens; 2 5 com/sun/tools/javac/tree/JCTree$JCParens <init> (Lcom/sun/tools/javac/tree/JCTree$JCExpression;)V 3 1 com/sun/tools/javac/tree/JCTree$JCExpression <init> ()V 4 1 com/sun/tools/javac/tree/JCTree <init> ()V 5 1 java/lang/Object <init> ()V 1 784 com/sun/tools/javac/parser/JavacParser toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 2 5 com/sun/tools/javac/parser/JavacParser$SimpleEndPosTable toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 3 9 com/sun/tools/javac/parser/Scanner prevToken ()Lcom/sun/tools/javac/parser/Tokens$Token; 3 17 com/sun/tools/javac/parser/JavacParser$SimpleEndPosTable storeEnd (Lcom/sun/tools/javac/tree/JCTree;I)V 4 26 com/sun/tools/javac/util/IntHashTable lookup (Ljava/lang/Object;)I 5 4 com/sun/tools/javac/util/IntHashTable hash (Ljava/lang/Object;)I 5 7 com/sun/tools/javac/util/IntHashTable lookup (Ljava/lang/Object;I)I 4 29 com/sun/tools/javac/util/IntHashTable putAtIndex (Ljava/lang/Object;II)I 2 5 com/sun/tools/javac/parser/JavacParser$EmptyEndPosTable toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 1 727 com/sun/tools/javac/parser/JavacParser lambdaExpressionOrStatement (ZZI)Lcom/sun/tools/javac/tree/JCTree$JCExpression; 2 6 com/sun/tools/javac/parser/JavacParser formalParameters (Z)Lcom/sun/tools/javac/util/List; 3 4 com/sun/tools/javac/util/ListBuffer <init> ()V 4 1 java/util/AbstractQueue <init> ()V 5 1 java/util/AbstractCollection <init> ()V 6 1 java/lang/Object <init> ()V 4 5 com/sun/tools/javac/util/ListBuffer clear ()V 5 1 com/sun/tools/javac/util/List nil ()Lcom/sun/tools/javac/util/List; 3 12 com/sun/tools/javac/parser/JavacParser accept (Lcom/sun/tools/javac/parser/Tokens$TokenKind;)V 4 12 com/sun/tools/javac/parser/JavacParser nextToken ()V 5 4 com/sun/tools/javac/parser/Scanner nextToken ()V 6 12 java/util/ArrayList isEmpty ()Z 6 26 java/util/ArrayList remove (I)Ljava/lang/Object; 7 5 java/util/Objects checkIndex (II)I 7 21 java/util/ArrayList elementData (I)Ljava/lang/Object; 5 14 com/sun/tools/javac/parser/Scanner token ()Lcom/sun/tools/javac/parser/Tokens$Token; 6 2 com/sun/tools/javac/parser/Scanner token (I)Lcom/sun/tools/javac/parser/Tokens$Token; 4 26 com/sun/tools/javac/parser/JavacParser setErrorEndPos (I)V 5 5 com/sun/tools/javac/parser/JavacParser$AbstractEndPosTable setErrorEndPos (I)V 4 34 com/sun/tools/javac/parser/Scanner prevToken ()Lcom/sun/tools/javac/parser/Tokens$Token; 4 52 com/sun/tools/javac/parser/JavacParser reportSyntaxError (ILjava/lang/String;[Ljava/lang/Object;)V 5 5 com/sun/tools/javac/util/JCDiagnostic$SimpleDiagnosticPosition <init> (I)V 6 1 java/lang/Object <init> ()V 3 56 com/sun/tools/javac/util/ListBuffer append (Ljava/lang/Object;)Lcom/sun/tools/javac/util/ListBuffer; 4 1 com/sun/tools/javac/util/Assert checkNonNull (Ljava/lang/Object;)Ljava/lang/Object; 4 17 com/sun/tools/javac/util/List of (Ljava/lang/Object;)Lcom/sun/tools/javac/util/List; 5 5 com/sun/tools/javac/util/List nil ()Lcom/sun/tools/javac/util/List; 5 8 com/sun/tools/javac/util/List <init> (Ljava/lang/Object;Lcom/sun/tools/javac/util/List;)V 6 1 java/util/AbstractCollection <init> ()V 7 1 java/lang/Object <init> ()V 3 103 com/sun/tools/javac/parser/JavacParser error (Lcom/sun/tools/javac/util/JCDiagnostic$DiagnosticPosition;Ljava/lang/String;[Ljava/lang/Object;)V 4 10 com/sun/tools/javac/util/AbstractLog error (Lcom/sun/tools/javac/util/JCDiagnostic$DiagnosticFlag;Lcom/sun/tools/javac/util/JCDiagnostic$DiagnosticPosition;Ljava/lang/String;[Ljava/lang/Object;)V 5 10 com/sun/tools/javac/util/JCDiagnostic$Factory errorKey (Ljava/lang/String;[Ljava/lang/Object;)Lcom/sun/tools/javac/util/JCDiagnostic$Error; 5 13 com/sun/tools/javac/util/AbstractLog error (Lcom/sun/tools/javac/util/JCDiagnostic$DiagnosticFlag;Lcom/sun/tools/javac/util/JCDiagnostic$DiagnosticPosition;Lcom/sun/tools/javac/util/JCDiagnostic$Error;)V 6 15 com/sun/tools/javac/util/Log report (Lcom/sun/tools/javac/util/JCDiagnostic;)V 3 107 com/sun/tools/javac/parser/JavacParser nextToken ()V 4 4 com/sun/tools/javac/parser/Scanner nextToken ()V 5 12 java/util/ArrayList isEmpty ()Z 5 26 java/util/ArrayList remove (I)Ljava/lang/Object; 6 5 java/util/Objects checkIndex (II)I 6 21 java/util/ArrayList elementData (I)Ljava/lang/Object; 4 14 com/sun/tools/javac/parser/Scanner token ()Lcom/sun/tools/javac/parser/Tokens$Token; 5 2 com/sun/tools/javac/parser/Scanner token (I)Lcom/sun/tools/javac/parser/Tokens$Token; 3 118 com/sun/tools/javac/util/ListBuffer append (Ljava/lang/Object;)Lcom/sun/tools/javac/util/ListBuffer; 4 1 com/sun/tools/javac/util/Assert checkNonNull (Ljava/lang/Object;)Ljava/lang/Object; 4 17 com/sun/tools/javac/util/List of (Ljava/lang/Object;)Lcom/sun/tools/javac/util/List; 5 5 com/sun/tools/javac/util/List nil ()Lcom/sun/tools/javac/util/List; 5 8 com/sun/tools/javac/util/List <init> (Ljava/lang/Object;Lcom/sun/tools/javac/util/List;)V 6 1 java/util/AbstractCollection <init> ()V 7 1 java/lang/Object <init> ()V 3 139 com/sun/tools/javac/parser/JavacParser nextToken ()V 4 4 com/sun/tools/javac/parser/Scanner nextToken ()V 5 12 java/util/ArrayList isEmpty ()Z 5 26 java/util/ArrayList remove (I)Ljava/lang/Object; 6 5 java/util/Objects checkIndex (II)I 6 21 java/util/ArrayList elementData (I)Ljava/lang/Object; 4 14 com/sun/tools/javac/parser/Scanner token ()Lcom/sun/tools/javac/parser/Tokens$Token; 5 2 com/sun/tools/javac/parser/Scanner token (I)Lcom/sun/tools/javac/parser/Tokens$Token; 3 153 com/sun/tools/javac/parser/JavacParser setErrorEndPos (I)V 4 5 com/sun/tools/javac/parser/JavacParser$AbstractEndPosTable setErrorEndPos (I)V 3 161 com/sun/tools/javac/parser/Scanner prevToken ()Lcom/sun/tools/javac/parser/Tokens$Token; 3 194 com/sun/tools/javac/parser/JavacParser reportSyntaxError (ILjava/lang/String;[Ljava/lang/Object;)V 4 5 com/sun/tools/javac/util/JCDiagnostic$SimpleDiagnosticPosition <init> (I)V 5 1 java/lang/Object <init> ()V 3 198 com/sun/tools/javac/util/ListBuffer toList ()Lcom/sun/tools/javac/util/List; 2 14 com/sun/tools/javac/parser/JavacParser implicitParameters (Z)Lcom/sun/tools/javac/util/List; 3 8 com/sun/tools/javac/parser/JavacParser accept (Lcom/sun/tools/javac/parser/Tokens$TokenKind;)V 4 12 com/sun/tools/javac/parser/JavacParser nextToken ()V 5 4 com/sun/tools/javac/parser/Scanner nextToken ()V 6 12 java/util/ArrayList isEmpty ()Z 6 26 java/util/ArrayList remove (I)Ljava/lang/Object; 7 5 java/util/Objects checkIndex (II)I 7 21 java/util/ArrayList elementData (I)Ljava/lang/Object; 5 14 com/sun/tools/javac/parser/Scanner token ()Lcom/sun/tools/javac/parser/Tokens$Token; 6 2 com/sun/tools/javac/parser/Scanner token (I)Lcom/sun/tools/javac/parser/Tokens$Token; 4 26 com/sun/tools/javac/parser/JavacParser setErrorEndPos (I)V 5 5 com/sun/tools/javac/parser/JavacParser$AbstractEndPosTable setErrorEndPos (I)V 4 34 com/sun/tools/javac/parser/Scanner prevToken ()Lcom/sun/tools/javac/parser/Tokens$Token; 4 52 com/sun/tools/javac/parser/JavacParser reportSyntaxError (ILjava/lang/String;[Ljava/lang/Object;)V 5 5 com/sun/tools/javac/util/JCDiagnostic$SimpleDiagnosticPosition <init> (I)V 6 1 java/lang/Object <init> ()V 3 15 com/sun/tools/javac/util/ListBuffer <init> ()V 4 1 java/util/AbstractQueue <init> ()V 5 1 java/util/AbstractCollection <init> ()V 6 1 java/lang/Object <init> ()V 4 5 com/sun/tools/javac/util/ListBuffer clear ()V 5 1 com/sun/tools/javac/util/List nil ()Lcom/sun/tools/javac/util/List; 1 1319 com/sun/tools/javac/util/List$1 isEmpty ()Z 1 1377 java/lang/Enum ordinal ()I 1 1696 java/lang/Enum ordinal ()I 1 1617 com/sun/tools/javac/util/List$1 isEmpty ()Z 1 1540 com/sun/tools/javac/util/List$1 isEmpty ()Z 1 1077 com/sun/tools/javac/tree/JCTree$JCFieldAccess getTag ()Lcom/sun/tools/javac/tree/JCTree$Tag; 1 1077 com/sun/tools/javac/tree/JCTree$JCMemberReference getTag ()Lcom/sun/tools/javac/tree/JCTree$Tag; 1 1080 java/lang/Enum ordinal ()I Replay compilation output for the compilation of com.sun.tools.javac.parser.JavacParser::term3Rest compile com/sun/tools/javac/parser/JavacParser term3Rest (Lcom/sun/tools/javac/tree/JCTree$JCExpression;Lcom/sun/tools/javac/util/List;)Lcom/sun/tools/javac/tree/JCTree$JCExpression; -1 4 inline 175 0 -1 com/sun/tools/javac/parser/JavacParser term3Rest (Lcom/sun/tools/javac/tree/JCTree$JCExpression;Lcom/sun/tools/javac/util/List;)Lcom/sun/tools/javac/tree/JCTree$JCExpression; 1 18 com/sun/tools/javac/parser/JavacParser typeAnnotationsOpt ()Lcom/sun/tools/javac/util/List; 1 89 com/sun/tools/javac/tree/TreeMaker at (I)Lcom/sun/tools/javac/tree/TreeMaker; 1 93 com/sun/tools/javac/tree/TreeMaker TypeArray (Lcom/sun/tools/javac/tree/JCTree$JCExpression;)Lcom/sun/tools/javac/tree/JCTree$JCArrayTypeTree; 2 5 com/sun/tools/javac/tree/JCTree$JCArrayTypeTree <init> (Lcom/sun/tools/javac/tree/JCTree$JCExpression;)V 3 1 com/sun/tools/javac/tree/JCTree$JCExpression <init> ()V 4 1 com/sun/tools/javac/tree/JCTree <init> ()V 5 1 java/lang/Object <init> ()V 1 96 com/sun/tools/javac/parser/JavacParser toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 2 5 com/sun/tools/javac/parser/JavacParser$SimpleEndPosTable toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 3 9 com/sun/tools/javac/parser/Scanner prevToken ()Lcom/sun/tools/javac/parser/Tokens$Token; 3 17 com/sun/tools/javac/parser/JavacParser$SimpleEndPosTable storeEnd (Lcom/sun/tools/javac/tree/JCTree;I)V 4 26 com/sun/tools/javac/util/IntHashTable lookup (Ljava/lang/Object;)I 5 4 com/sun/tools/javac/util/IntHashTable hash (Ljava/lang/Object;)I 5 7 com/sun/tools/javac/util/IntHashTable lookup (Ljava/lang/Object;I)I 4 29 com/sun/tools/javac/util/IntHashTable putAtIndex (Ljava/lang/Object;II)I 2 5 com/sun/tools/javac/parser/JavacParser$EmptyEndPosTable toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 1 126 com/sun/tools/javac/util/List nonEmpty ()Z 1 138 com/sun/tools/javac/tree/TreeMaker at (I)Lcom/sun/tools/javac/tree/TreeMaker; 1 144 com/sun/tools/javac/tree/TreeMaker AnnotatedType (Lcom/sun/tools/javac/util/List;Lcom/sun/tools/javac/tree/JCTree$JCExpression;)Lcom/sun/tools/javac/tree/JCTree$JCAnnotatedType; 2 6 com/sun/tools/javac/tree/JCTree$JCAnnotatedType <init> (Lcom/sun/tools/javac/util/List;Lcom/sun/tools/javac/tree/JCTree$JCExpression;)V 3 1 com/sun/tools/javac/tree/JCTree$JCExpression <init> ()V 4 1 com/sun/tools/javac/tree/JCTree <init> ()V 5 1 java/lang/Object <init> ()V 3 9 com/sun/tools/javac/util/List nonEmpty ()Z 3 20 com/sun/tools/javac/util/Assert check (Z)V 1 147 com/sun/tools/javac/parser/JavacParser toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 2 5 com/sun/tools/javac/parser/JavacParser$SimpleEndPosTable toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 3 9 com/sun/tools/javac/parser/Scanner prevToken ()Lcom/sun/tools/javac/parser/Tokens$Token; 3 17 com/sun/tools/javac/parser/JavacParser$SimpleEndPosTable storeEnd (Lcom/sun/tools/javac/tree/JCTree;I)V 4 26 com/sun/tools/javac/util/IntHashTable lookup (Ljava/lang/Object;)I 5 4 com/sun/tools/javac/util/IntHashTable hash (Ljava/lang/Object;)I 5 7 com/sun/tools/javac/util/IntHashTable lookup (Ljava/lang/Object;I)I 4 29 com/sun/tools/javac/util/IntHashTable putAtIndex (Ljava/lang/Object;II)I 2 5 com/sun/tools/javac/parser/JavacParser$EmptyEndPosTable toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 1 188 com/sun/tools/javac/tree/TreeMaker at (I)Lcom/sun/tools/javac/tree/TreeMaker; 1 194 com/sun/tools/javac/tree/TreeMaker Indexed (Lcom/sun/tools/javac/tree/JCTree$JCExpression;Lcom/sun/tools/javac/tree/JCTree$JCExpression;)Lcom/sun/tools/javac/tree/JCTree$JCArrayAccess; 2 6 com/sun/tools/javac/tree/JCTree$JCArrayAccess <init> (Lcom/sun/tools/javac/tree/JCTree$JCExpression;Lcom/sun/tools/javac/tree/JCTree$JCExpression;)V 3 1 com/sun/tools/javac/tree/JCTree$JCExpression <init> ()V 4 1 com/sun/tools/javac/tree/JCTree <init> ()V 5 1 java/lang/Object <init> ()V 1 228 com/sun/tools/javac/parser/JavacParser nextToken ()V 2 4 com/sun/tools/javac/parser/Scanner nextToken ()V 3 12 java/util/ArrayList isEmpty ()Z 3 26 java/util/ArrayList remove (I)Ljava/lang/Object; 4 5 java/util/Objects checkIndex (II)I 4 21 java/util/ArrayList elementData (I)Ljava/lang/Object; 2 14 com/sun/tools/javac/parser/Scanner token ()Lcom/sun/tools/javac/parser/Tokens$Token; 3 2 com/sun/tools/javac/parser/Scanner token (I)Lcom/sun/tools/javac/parser/Tokens$Token; 1 233 com/sun/tools/javac/parser/JavacParser typeArgumentsOpt (I)Lcom/sun/tools/javac/util/List; 1 270 com/sun/tools/javac/tree/TreeMaker at (I)Lcom/sun/tools/javac/tree/TreeMaker; 1 281 com/sun/tools/javac/tree/TreeMaker Select (Lcom/sun/tools/javac/tree/JCTree$JCExpression;Lcom/sun/tools/javac/util/Name;)Lcom/sun/tools/javac/tree/JCTree$JCFieldAccess; 2 7 com/sun/tools/javac/tree/JCTree$JCFieldAccess <init> (Lcom/sun/tools/javac/tree/JCTree$JCExpression;Lcom/sun/tools/javac/util/Name;Lcom/sun/tools/javac/code/Symbol;)V 3 1 com/sun/tools/javac/tree/JCTree$JCExpression <init> ()V 4 1 com/sun/tools/javac/tree/JCTree <init> ()V 5 1 java/lang/Object <init> ()V 1 415 com/sun/tools/javac/parser/JavacParser typeAnnotationsOpt ()Lcom/sun/tools/javac/util/List; 1 426 com/sun/tools/javac/tree/TreeMaker at (I)Lcom/sun/tools/javac/tree/TreeMaker; 1 435 com/sun/tools/javac/tree/TreeMaker Select (Lcom/sun/tools/javac/tree/JCTree$JCExpression;Lcom/sun/tools/javac/util/Name;)Lcom/sun/tools/javac/tree/JCTree$JCFieldAccess; 2 7 com/sun/tools/javac/tree/JCTree$JCFieldAccess <init> (Lcom/sun/tools/javac/tree/JCTree$JCExpression;Lcom/sun/tools/javac/util/Name;Lcom/sun/tools/javac/code/Symbol;)V 3 1 com/sun/tools/javac/tree/JCTree$JCExpression <init> ()V 4 1 com/sun/tools/javac/tree/JCTree <init> ()V 5 1 java/lang/Object <init> ()V 1 438 com/sun/tools/javac/parser/JavacParser toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 2 5 com/sun/tools/javac/parser/JavacParser$SimpleEndPosTable toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 3 9 com/sun/tools/javac/parser/Scanner prevToken ()Lcom/sun/tools/javac/parser/Tokens$Token; 3 17 com/sun/tools/javac/parser/JavacParser$SimpleEndPosTable storeEnd (Lcom/sun/tools/javac/tree/JCTree;I)V 4 26 com/sun/tools/javac/util/IntHashTable lookup (Ljava/lang/Object;)I 5 4 com/sun/tools/javac/util/IntHashTable hash (Ljava/lang/Object;)I 5 7 com/sun/tools/javac/util/IntHashTable lookup (Ljava/lang/Object;I)I 4 29 com/sun/tools/javac/util/IntHashTable putAtIndex (Ljava/lang/Object;II)I 2 5 com/sun/tools/javac/parser/JavacParser$EmptyEndPosTable toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 1 452 com/sun/tools/javac/util/List nonEmpty ()Z 1 474 com/sun/tools/javac/tree/TreeMaker at (I)Lcom/sun/tools/javac/tree/TreeMaker; 1 480 com/sun/tools/javac/tree/TreeMaker AnnotatedType (Lcom/sun/tools/javac/util/List;Lcom/sun/tools/javac/tree/JCTree$JCExpression;)Lcom/sun/tools/javac/tree/JCTree$JCAnnotatedType; 2 6 com/sun/tools/javac/tree/JCTree$JCAnnotatedType <init> (Lcom/sun/tools/javac/util/List;Lcom/sun/tools/javac/tree/JCTree$JCExpression;)V 3 1 com/sun/tools/javac/tree/JCTree$JCExpression <init> ()V 4 1 com/sun/tools/javac/tree/JCTree <init> ()V 5 1 java/lang/Object <init> ()V 3 9 com/sun/tools/javac/util/List nonEmpty ()Z 3 20 com/sun/tools/javac/util/Assert check (Z)V 1 483 com/sun/tools/javac/parser/JavacParser toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 2 5 com/sun/tools/javac/parser/JavacParser$SimpleEndPosTable toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 3 9 com/sun/tools/javac/parser/Scanner prevToken ()Lcom/sun/tools/javac/parser/Tokens$Token; 3 17 com/sun/tools/javac/parser/JavacParser$SimpleEndPosTable storeEnd (Lcom/sun/tools/javac/tree/JCTree;I)V 4 26 com/sun/tools/javac/util/IntHashTable lookup (Ljava/lang/Object;)I 5 4 com/sun/tools/javac/util/IntHashTable hash (Ljava/lang/Object;)I 5 7 com/sun/tools/javac/util/IntHashTable lookup (Ljava/lang/Object;I)I 4 29 com/sun/tools/javac/util/IntHashTable putAtIndex (Ljava/lang/Object;II)I 2 5 com/sun/tools/javac/parser/JavacParser$EmptyEndPosTable toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 1 494 com/sun/tools/javac/parser/JavacParser typeArgumentsOpt (Lcom/sun/tools/javac/tree/JCTree$JCExpression;)Lcom/sun/tools/javac/tree/JCTree$JCExpression; 2 39 com/sun/tools/javac/parser/JavacParser typeArguments (Lcom/sun/tools/javac/tree/JCTree$JCExpression;Z)Lcom/sun/tools/javac/tree/JCTree$JCTypeApply; 3 21 com/sun/tools/javac/tree/TreeMaker at (I)Lcom/sun/tools/javac/tree/TreeMaker; 3 27 com/sun/tools/javac/tree/TreeMaker TypeApply (Lcom/sun/tools/javac/tree/JCTree$JCExpression;Lcom/sun/tools/javac/util/List;)Lcom/sun/tools/javac/tree/JCTree$JCTypeApply; 4 6 com/sun/tools/javac/tree/JCTree$JCTypeApply <init> (Lcom/sun/tools/javac/tree/JCTree$JCExpression;Lcom/sun/tools/javac/util/List;)V 5 1 com/sun/tools/javac/tree/JCTree$JCExpression <init> ()V 6 1 com/sun/tools/javac/tree/JCTree <init> ()V 7 1 java/lang/Object <init> ()V 3 30 com/sun/tools/javac/parser/JavacParser toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 4 5 com/sun/tools/javac/parser/JavacParser$SimpleEndPosTable toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 5 9 com/sun/tools/javac/parser/Scanner prevToken ()Lcom/sun/tools/javac/parser/Tokens$Token; 5 17 com/sun/tools/javac/parser/JavacParser$SimpleEndPosTable storeEnd (Lcom/sun/tools/javac/tree/JCTree;I)V 6 26 com/sun/tools/javac/util/IntHashTable lookup (Ljava/lang/Object;)I 7 4 com/sun/tools/javac/util/IntHashTable hash (Ljava/lang/Object;)I 7 7 com/sun/tools/javac/util/IntHashTable lookup (Ljava/lang/Object;I)I 6 29 com/sun/tools/javac/util/IntHashTable putAtIndex (Ljava/lang/Object;II)I 4 5 com/sun/tools/javac/parser/JavacParser$EmptyEndPosTable toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 1 497 com/sun/tools/javac/parser/JavacParser argumentsOpt (Lcom/sun/tools/javac/util/List;Lcom/sun/tools/javac/tree/JCTree$JCExpression;)Lcom/sun/tools/javac/tree/JCTree$JCExpression; 2 34 com/sun/tools/javac/parser/JavacParser arguments (Lcom/sun/tools/javac/util/List;Lcom/sun/tools/javac/tree/JCTree$JCExpression;)Lcom/sun/tools/javac/tree/JCTree$JCMethodInvocation; 3 20 com/sun/tools/javac/tree/TreeMaker at (I)Lcom/sun/tools/javac/tree/TreeMaker; 3 27 com/sun/tools/javac/tree/TreeMaker Apply (Lcom/sun/tools/javac/util/List;Lcom/sun/tools/javac/tree/JCTree$JCExpression;Lcom/sun/tools/javac/util/List;)Lcom/sun/tools/javac/tree/JCTree$JCMethodInvocation; 4 7 com/sun/tools/javac/tree/JCTree$JCMethodInvocation <init> (Lcom/sun/tools/javac/util/List;Lcom/sun/tools/javac/tree/JCTree$JCExpression;Lcom/sun/tools/javac/util/List;)V 5 1 com/sun/tools/javac/tree/JCTree$JCPolyExpression <init> ()V 6 1 com/sun/tools/javac/tree/JCTree$JCExpression <init> ()V 7 1 com/sun/tools/javac/tree/JCTree <init> ()V 8 1 java/lang/Object <init> ()V 5 9 com/sun/tools/javac/util/List nil ()Lcom/sun/tools/javac/util/List; 3 30 com/sun/tools/javac/parser/JavacParser toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 4 5 com/sun/tools/javac/parser/JavacParser$SimpleEndPosTable toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 5 9 com/sun/tools/javac/parser/Scanner prevToken ()Lcom/sun/tools/javac/parser/Tokens$Token; 5 17 com/sun/tools/javac/parser/JavacParser$SimpleEndPosTable storeEnd (Lcom/sun/tools/javac/tree/JCTree;I)V 6 26 com/sun/tools/javac/util/IntHashTable lookup (Ljava/lang/Object;)I 7 4 com/sun/tools/javac/util/IntHashTable hash (Ljava/lang/Object;)I 7 7 com/sun/tools/javac/util/IntHashTable lookup (Ljava/lang/Object;I)I 6 29 com/sun/tools/javac/util/IntHashTable putAtIndex (Ljava/lang/Object;II)I 4 5 com/sun/tools/javac/parser/JavacParser$EmptyEndPosTable toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 1 546 com/sun/tools/javac/parser/JavacParser accept (Lcom/sun/tools/javac/parser/Tokens$TokenKind;)V 2 12 com/sun/tools/javac/parser/JavacParser nextToken ()V 3 4 com/sun/tools/javac/parser/Scanner nextToken ()V 4 12 java/util/ArrayList isEmpty ()Z 4 26 java/util/ArrayList remove (I)Ljava/lang/Object; 5 5 java/util/Objects checkIndex (II)I 5 21 java/util/ArrayList elementData (I)Ljava/lang/Object; 3 14 com/sun/tools/javac/parser/Scanner token ()Lcom/sun/tools/javac/parser/Tokens$Token; 4 2 com/sun/tools/javac/parser/Scanner token (I)Lcom/sun/tools/javac/parser/Tokens$Token; 2 26 com/sun/tools/javac/parser/JavacParser setErrorEndPos (I)V 3 5 com/sun/tools/javac/parser/JavacParser$AbstractEndPosTable setErrorEndPos (I)V 2 34 com/sun/tools/javac/parser/Scanner prevToken ()Lcom/sun/tools/javac/parser/Tokens$Token; 1 552 com/sun/tools/javac/parser/JavacParser memberReferenceSuffix (ILcom/sun/tools/javac/tree/JCTree$JCExpression;)Lcom/sun/tools/javac/tree/JCTree$JCExpression; 2 70 com/sun/tools/javac/parser/JavacParser ident ()Lcom/sun/tools/javac/util/Name; 2 81 com/sun/tools/javac/tree/JCTree getStartPosition ()I 2 84 com/sun/tools/javac/tree/TreeMaker at (I)Lcom/sun/tools/javac/tree/TreeMaker; 2 93 com/sun/tools/javac/tree/TreeMaker Reference (Lcom/sun/source/tree/MemberReferenceTree$ReferenceMode;Lcom/sun/tools/javac/util/Name;Lcom/sun/tools/javac/tree/JCTree$JCExpression;Lcom/sun/tools/javac/util/List;)Lcom/sun/tools/javac/tree/JCTree$JCMemberReference; 3 9 com/sun/tools/javac/tree/JCTree$JCMemberReference <init> (Lcom/sun/source/tree/MemberReferenceTree$ReferenceMode;Lcom/sun/tools/javac/util/Name;Lcom/sun/tools/javac/tree/JCTree$JCExpression;Lcom/sun/tools/javac/util/List;)V 4 1 com/sun/tools/javac/tree/JCTree$JCFunctionalExpression <init> ()V 5 1 com/sun/tools/javac/tree/JCTree$JCPolyExpression <init> ()V 6 1 com/sun/tools/javac/tree/JCTree$JCExpression <init> ()V 7 1 com/sun/tools/javac/tree/JCTree <init> ()V 8 1 java/lang/Object <init> ()V 2 96 com/sun/tools/javac/parser/JavacParser toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 3 5 com/sun/tools/javac/parser/JavacParser$SimpleEndPosTable toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 4 9 com/sun/tools/javac/parser/Scanner prevToken ()Lcom/sun/tools/javac/parser/Tokens$Token; 4 17 com/sun/tools/javac/parser/JavacParser$SimpleEndPosTable storeEnd (Lcom/sun/tools/javac/tree/JCTree;I)V 5 26 com/sun/tools/javac/util/IntHashTable lookup (Ljava/lang/Object;)I 6 4 com/sun/tools/javac/util/IntHashTable hash (Ljava/lang/Object;)I 6 7 com/sun/tools/javac/util/IntHashTable lookup (Ljava/lang/Object;I)I 5 29 com/sun/tools/javac/util/IntHashTable putAtIndex (Ljava/lang/Object;II)I 3 5 com/sun/tools/javac/parser/JavacParser$EmptyEndPosTable toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 1 561 com/sun/tools/javac/util/List$1 isEmpty ()Z 1 561 com/sun/tools/javac/util/List isEmpty ()Z 1 654 com/sun/tools/javac/tree/TreeMaker at (I)Lcom/sun/tools/javac/tree/TreeMaker; 1 680 com/sun/tools/javac/tree/TreeMaker Unary (Lcom/sun/tools/javac/tree/JCTree$Tag;Lcom/sun/tools/javac/tree/JCTree$JCExpression;)Lcom/sun/tools/javac/tree/JCTree$JCUnary; 2 6 com/sun/tools/javac/tree/JCTree$JCUnary <init> (Lcom/sun/tools/javac/tree/JCTree$Tag;Lcom/sun/tools/javac/tree/JCTree$JCExpression;)V 3 1 com/sun/tools/javac/tree/JCTree$JCExpression <init> ()V 4 1 com/sun/tools/javac/tree/JCTree <init> ()V 5 1 java/lang/Object <init> ()V 1 699 com/sun/tools/javac/parser/JavacParser toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 2 5 com/sun/tools/javac/parser/JavacParser$SimpleEndPosTable toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree; 3 9 com/sun/tools/javac/parser/Scanner prevToken ()Lcom/sun/tools/javac/parser/Tokens$Token; 3 17 com/sun/tools/javac/parser/JavacParser$SimpleEndPosTable storeEnd (Lcom/sun/tools/javac/tree/JCTree;I)V 4 26 com/sun/tools/javac/util/IntHashTable lookup (Ljava/lang/Object;)I 5 4 com/sun/tools/javac/util/IntHashTable hash (Ljava/lang/Object;)I 5 7 com/sun/tools/javac/util/IntHashTable lookup (Ljava/lang/Object;I)I 4 29 com/sun/tools/javac/util/IntHashTable putAtIndex (Ljava/lang/Object;II)I 2 5 com/sun/tools/javac/parser/JavacParser$EmptyEndPosTable toP (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree;
11-08-2016

Initial ILW = Crash due to OOM in compiler, rare/win32 only, no workaround = HLH = P2
02-08-2016

[~xiaofeya] The out-of-memory error happens in the compiler thread according to the hs_err file. I suggest that this bug is first triaged by the HotSpot compiler team. I've moved it to the compiler subcomponent.
02-08-2016

Moved to hotspot component for first triage
02-08-2016

If HotSpot crashes, the first assumption should be it is a JVM issue.
02-08-2016

Jonathan, could you have a look at this issue?
02-08-2016

Decoded stack traces: # JRE version: Java(TM) SE Runtime Environment (9.0+130) (build 9-ea+130-mach5-b914) https://bugs.openjdk.java.net/secure/attachment/61869/%23914_hs_err_pid29960.log --------------- T H R E A D --------------- Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) V [jvm.dll+0x4ed7c9] ?transfer_exceptions_into_jvms@GraphKit@@QAEPAVJVMState@@XZ+0x159 V [jvm.dll+0x4edce5] ?uncommon_trap@GraphKit@@QAEXHPAVciKlass@@PBD_N2@Z+0x1e5 V [jvm.dll+0x18a509] ?MachNodeGenerator@State@@QAEPAVMachNode@@H@Z+0x76a9 V [jvm.dll+0x76ea0] ?emit@storeL2INode@@EBEXAAVCodeBuffer@@PAVPhaseRegAlloc@@@Z+0x50 V [jvm.dll+0x775eb] ?emit@storeLNode@@EBEXAAVCodeBuffer@@PAVPhaseRegAlloc@@@Z+0x27b V [jvm.dll+0x27183a] ?do_Invoke@LIRGenerator@@UAEXPAVInvoke@@@Z+0x2ea V [jvm.dll+0x23fd3c] ?print@BlockListBuilder@@AAEXXZ+0xcc V [jvm.dll+0x23f56e] ?new_multi_array@GraphBuilder@@AAEXH@Z+0x2e V [jvm.dll+0x16061d] ?format@vsra2S_reg_imm_avxNode@@UBEXPAVPhaseRegAlloc@@PAVoutputStream@@@Z+0x11d V [jvm.dll+0x104a8c] ?format@cmovLL_mem_LEGTNode@@UBEXPAVPhaseRegAlloc@@PAVoutputStream@@@Z+0x15c V [jvm.dll+0x16a4cf] ?format@vsub2S_mem_evex_specialNode@@UBEXPAVPhaseRegAlloc@@PAVoutputStream@@@Z+0x19f V [jvm.dll+0x169874] ?format@vsub2I_memNode@@UBEXPAVPhaseRegAlloc@@PAVoutputStream@@@Z+0x64 V [jvm.dll+0x4c757c] ?release_scratch@GenCollectedHeap@@QAEXXZ+0x1c V [jvm.dll+0x4c6bbd] ?initialize@GenCollectedHeap@@UAEHXZ+0x21d V [jvm.dll+0x41145c] ?_sub_Op_ReplicateD@State@@QAEXPBVNode@@@Z+0x1bc C [msvcr120.dll+0x2c01d] C [msvcr120.dll+0x2c001] C [KERNEL32.DLL+0x17c04] C [ntdll.dll+0x5ab8f] C [ntdll.dll+0x5ab5a] C 0x00000000 # JRE version: Java(TM) SE Runtime Environment (9.0+130) (build 9-ea+130-mach5-b925) https://bugs.openjdk.java.net/secure/attachment/61867/hs_err_pid24996.log --------------- T H R E A D --------------- Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) V [jvm.dll+0x4ed7c9] ?transfer_exceptions_into_jvms@GraphKit@@QAEPAVJVMState@@XZ+0x159 V [jvm.dll+0x4edce5] ?uncommon_trap@GraphKit@@QAEXHPAVciKlass@@PBD_N2@Z+0x1e5 V [jvm.dll+0x18a509] ?MachNodeGenerator@State@@QAEPAVMachNode@@H@Z+0x76a9 V [jvm.dll+0x76ea0] ?emit@storeL2INode@@EBEXAAVCodeBuffer@@PAVPhaseRegAlloc@@@Z+0x50 V [jvm.dll+0x775eb] ?emit@storeLNode@@EBEXAAVCodeBuffer@@PAVPhaseRegAlloc@@@Z+0x27b V [jvm.dll+0x455b8c] ?print@FrameValues@@QAEXPAVJavaThread@@@Z+0x3ec V [jvm.dll+0x1ef209] ?vpand@Assembler@@QAEXPAVXMMRegisterImpl@@0VAddress@@H@Z+0x59 V [jvm.dll+0x369f33] ?par_get_chunk_of_blocks@CompactibleFreeListSpace@@AAEXIIPAV?$AdaptiveFreeList@VFreeChunk@@@@@Z+0x73 V [jvm.dll+0x160ae9] ?format@vsra32S_regNode@@UBEXPAVPhaseRegAlloc@@PAVoutputStream@@@Z+0x149 V [jvm.dll+0x1621c1] ?format@vsra8S_immNode@@UBEXPAVPhaseRegAlloc@@PAVoutputStream@@@Z+0xa1 V [jvm.dll+0x1605b8] ?format@vsra2S_reg_imm_avxNode@@UBEXPAVPhaseRegAlloc@@PAVoutputStream@@@Z+0xb8 V [jvm.dll+0x104a8c] ?format@cmovLL_mem_LEGTNode@@UBEXPAVPhaseRegAlloc@@PAVoutputStream@@@Z+0x15c V [jvm.dll+0x16a4cf] ?format@vsub2S_mem_evex_specialNode@@UBEXPAVPhaseRegAlloc@@PAVoutputStream@@@Z+0x19f V [jvm.dll+0x169874] ?format@vsub2I_memNode@@UBEXPAVPhaseRegAlloc@@PAVoutputStream@@@Z+0x64 V [jvm.dll+0x4c757c] ?release_scratch@GenCollectedHeap@@QAEXXZ+0x1c V [jvm.dll+0x4c6bbd] ?initialize@GenCollectedHeap@@UAEHXZ+0x21d V [jvm.dll+0x41145c] ?_sub_Op_ReplicateD@State@@QAEXPBVNode@@@Z+0x1bc C [msvcr120.dll+0x2c01d] C [msvcr120.dll+0x2c001] C [KERNEL32.DLL+0x17c04] C [ntdll.dll+0x5ab8f] C [ntdll.dll+0x5ab5a] C 0x00000000
02-08-2016