pax_global_header00006660000000000000000000000064135412350570014517gustar00rootroot0000000000000052 comment=4fdfccbb083d2e38f8cf5715a153c7cc21130ec1 compile-command-annotations-1.2.3/000077500000000000000000000000001354123505700171215ustar00rootroot00000000000000compile-command-annotations-1.2.3/.editorconfig000066400000000000000000000015671354123505700216070ustar00rootroot00000000000000# # Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net # Copyright © 2014-2019 Hotspot compile command annotations contributors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # root = true [*] end_of_line = lf insert_final_newline = true indent_style = space indent_size = 2 charset = utf-8 trim_trailing_whitespace = true [*.java] indent_size = 4 compile-command-annotations-1.2.3/.gitignore000066400000000000000000000004731354123505700211150ustar00rootroot00000000000000# Project build directory target/ # Intellij IDEA project files .idea/ *.iml *.ipr *.iws # Eclipse project files .settings/ .project .classpath # Maven release plugin files pom.xml.* release.properties # Hotspot files .hotspot_compiler .attach_pid* hs_err_pid*.log hotspot_pid*.log core.* # Local stuff local/ compile-command-annotations-1.2.3/.travis.yml000066400000000000000000000012201354123505700212250ustar00rootroot00000000000000language: java sudo: false jdk: - oraclejdk11 - openjdk8 - openjdk9 - openjdk10 - openjdk11 matrix: fast_finish: true cache: directories: - $HOME/.m2 before_script: - export MAVEN_SKIP_RC=true script: mvn clean verify after_script: - cat target/it/tests/IT-*/build.log after_success: - bash <(curl -s https://codecov.io/bash) notifications: email: false irc: channels: - "chat.freenode.net#nicoulaj" on_success: never on_failure: change on_start: never use_notice: true template: - "%{repository}/%{branch}#%{build_number}: %{message} | changes : %{compare_url} | build : %{build_url}" compile-command-annotations-1.2.3/COPYING000066400000000000000000000261351354123505700201630ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. compile-command-annotations-1.2.3/README.md000066400000000000000000000026251354123505700204050ustar00rootroot00000000000000compile-command-annotations [![Maven Central](https://maven-badges.herokuapp.com/maven-central/net.nicoulaj.compile-command-annotations/compile-command-annotations/badge.svg)](https://maven-badges.herokuapp.com/maven-central/net.nicoulaj.compile-command-annotations/compile-command-annotations) [![Build Status](https://travis-ci.org/nicoulaj/compile-command-annotations.svg)](https://travis-ci.org/nicoulaj/compile-command-annotations) [![codecov](https://codecov.io/gh/nicoulaj/compile-command-annotations/branch/master/graph/badge.svg)](https://codecov.io/gh/nicoulaj/compile-command-annotations) =============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== **Annotation based configuration file generator for the [Hotspot JVM](http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136373.html) JIT compiler**. The documentation is at . compile-command-annotations-1.2.3/etc/000077500000000000000000000000001354123505700176745ustar00rootroot00000000000000compile-command-annotations-1.2.3/etc/license/000077500000000000000000000000001354123505700213165ustar00rootroot00000000000000compile-command-annotations-1.2.3/etc/license/header.txt000066400000000000000000000011721354123505700233100ustar00rootroot00000000000000${project.name} - ${project.url} Copyright © ${project.inceptionYear}-${year} ${project.name} contributors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. compile-command-annotations-1.2.3/pom.xml000066400000000000000000000145011354123505700204370ustar00rootroot00000000000000 4.0.0 net.nicoulaj parent 59 net.nicoulaj.compile-command-annotations compile-command-annotations 1.2.3 Hotspot compile command annotations 2014 Annotation based configuration file generator for the Hotspot JVM JIT compiler. http://compile-command-annotations.nicoulaj.net http://github.com/nicoulaj/compile-command-annotations scm:git:git@github.com:nicoulaj/compile-command-annotations.git scm:git:git@github.com:nicoulaj/compile-command-annotations.git 1.2.3 Github http://github.com/nicoulaj/compile-command-annotations/issues Travis CI http://travis-ci.org/nicoulaj/compile-command-annotations github gitsite:git@github.com/nicoulaj/compile-command-annotations.git apache_v2 false 1.6 28.1-jre 3.13.2 2.6 org.testng testng test com.google.guava guava ${guava.version} test commons-io commons-io ${commons-io.version} test org.assertj assertj-core ${assertj-core.version} test maven-compiler-plugin ${java.level} ${java.level} -proc:none org.codehaus.mojo build-helper-maven-plugin add-additional-test-source-roots generate-test-sources add-test-source ${project.basedir}/src/samples/java maven-invoker-plugin ${debug} ${skipTests} ${skipTests} ${project.build.directory}/it/local-repository true src/it/settings.xml src/it/tests */pom.xml ${project.build.directory}/it/tests ${project.build.directory}/it/reports true selector.bsh clean install run-integration-tests install run org.jacoco jacoco-maven-plugin pre-unit-test prepare-agent post-unit-test report pre-integration-test prepare-agent-integration invoker.mavenOpts post-integration-test report-integration compile-command-annotations-1.2.3/src/000077500000000000000000000000001354123505700177105ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/000077500000000000000000000000001354123505700203245ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/settings.xml000066400000000000000000000031411354123505700227050ustar00rootroot00000000000000 it-repo true local.central @localRepositoryUrl@ true true local.central @localRepositoryUrl@ true true compile-command-annotations-1.2.3/src/it/tests/000077500000000000000000000000001354123505700214665ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-01/000077500000000000000000000000001354123505700222205ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-01/invoker.properties000066400000000000000000000055221354123505700260170ustar00rootroot00000000000000# # Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net # Copyright © 2014-2019 Hotspot compile command annotations contributors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ### # A comma or space separated list of goals/phases to execute, may # specify an empty list to execute the default goal of the IT project invoker.goals = clean install # Optionally, a list of goals to run during further invocations of Maven # invoker.goals.2 = ${project.groupId}:${project.artifactId}:${project.version}:run # A comma or space separated list of profiles to activate # invoker.profiles = its,jdk15 # The path to an alternative POM or base directory to invoke Maven on, defaults to the # project that was originally specified in the plugin configuration # Since plugin version 1.4 # invoker.project = sub-module # The value for the environment variable MAVEN_OPTS # invoker.mavenOpts = -Dfile.encoding=UTF-16 -Xms32m -Xmx256m # Possible values are "fail-fast" (default), "fail-at-end" and "fail-never" # invoker.failureBehavior = fail-never # The expected result of the build, possible values are "success" (default) and "failure" invoker.buildResult = success # A boolean value controlling the aggregator mode of Maven, defaults to "false" # invoker.nonRecursive = true # A boolean value controlling the network behavior of Maven, defaults to "false" # Since plugin version 1.4 # invoker.offline = true # The path to the properties file from which to load system properties, defaults to the # filename given by the plugin parameter testPropertiesFile # Since plugin version 1.4 # invoker.systemPropertiesFile = test.properties # An optional human friendly name for this build job to be included in the build reports. # Since plugin version 1.4 invoker.name = IT-01 # An optional description for this build job to be included in the build reports. # Since plugin version 1.4 # invoker.description = # A comma separated list of JRE versions on which this build job should be run. # Since plugin version 1.4 # invoker.java.version = 1.4+, !1.4.1, 1.7- # A comma separated list of OS families on which this build job should be run. # Since plugin version 1.4 # invoker.os.family = !windows, unix, mac # A comma separated list of Maven versions on which this build should be run. # Since plugin version 1.5 # invoker.maven.version = 2.0.10+, !2.1.0, !2.2.0 compile-command-annotations-1.2.3/src/it/tests/IT-01/pom.xml000066400000000000000000000054641354123505700235460ustar00rootroot00000000000000 4.0.0 net.nicoulaj.compile-command-annotations.it IT-01 1.0-SNAPSHOT net.nicoulaj.compile-command-annotations compile-command-annotations @project.version@ true @project.build.sourceEncoding@ maven-compiler-plugin @maven-compiler-plugin.version@ @java.level@ @java.level@ org.codehaus.mojo exec-maven-plugin @exec-maven-plugin.version@ run-program integration-test exec java -XX:+UnlockDiagnosticVMOptions -XX:+PrintInlining -XX:CompileCommandFile=${project.build.outputDirectory}/META-INF/hotspot_compiler -classpath net.nicoulaj.compilecommand.IT01 compile-command-annotations-1.2.3/src/it/tests/IT-01/postbuild.groovy000066400000000000000000000065221354123505700255010ustar00rootroot00000000000000/** * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import net.nicoulaj.compilecommand.ITAssert try { helper = new ITAssert(basedir, localRepositoryPath, context) // Check hotspot_compiler file helper.assertFileIsNotEmpty("target/classes/META-INF/hotspot_compiler") // Check startup traces helper.assertBuildLogDoesNotContain(": unrecognized line") helper.assertBuildLogContains(": inline net/nicoulaj/compilecommand/IT01.") helper.assertBuildLogContains(": inline net/nicoulaj/compilecommand/IT01.method01") helper.assertBuildLogContains(": inline net/nicoulaj/compilecommand/IT01.method02") helper.assertBuildLogContains(": inline net/nicoulaj/compilecommand/IT01.method03") helper.assertBuildLogContains(": inline net/nicoulaj/compilecommand/IT01.method04") helper.assertBuildLogContains(": inline net/nicoulaj/compilecommand/IT01.method05") helper.assertBuildLogContains(": inline net/nicoulaj/compilecommand/IT01.method06") helper.assertBuildLogContains(": inline net/nicoulaj/compilecommand/IT01.method07") helper.assertBuildLogContains(": inline net/nicoulaj/compilecommand/IT01.method08") helper.assertBuildLogContains(": inline net/nicoulaj/compilecommand/IT01.method09") helper.assertBuildLogContains(": inline net/nicoulaj/compilecommand/IT01.method10") // Check PrintInlining traces helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT01:: (5 bytes) force inline by Compile") helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT01::method01 (1 bytes) force inline by Compile") helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT01::method02 (1 bytes) force inline by Compile") helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT01::method03 (1 bytes) force inline by Compile") helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT01::method04 (1 bytes) force inline by Compile") helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT01::method05 (2 bytes) force inline by Compile") helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT01::method06 (1 bytes) force inline by Compile") helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT01::method07 (1 bytes) force inline by Compile") helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT01::method08 (2 bytes) force inline by Compile") helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT01::method09 (1 bytes) force inline by Compile") helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT01::method10 (1 bytes) force inline by Compile") } catch (Exception e) { System.err.println(e.getMessage()) return false; } compile-command-annotations-1.2.3/src/it/tests/IT-01/src/000077500000000000000000000000001354123505700230075ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-01/src/main/000077500000000000000000000000001354123505700237335ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-01/src/main/java/000077500000000000000000000000001354123505700246545ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-01/src/main/java/net/000077500000000000000000000000001354123505700254425ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-01/src/main/java/net/nicoulaj/000077500000000000000000000000001354123505700272465ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-01/src/main/java/net/nicoulaj/compilecommand/000077500000000000000000000000001354123505700322355ustar00rootroot00000000000000IT01.java000066400000000000000000000054571354123505700335110ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-01/src/main/java/net/nicoulaj/compilecommand/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand; import net.nicoulaj.compilecommand.annotations.Inline; import java.io.Serializable; import java.util.List; import static java.util.Arrays.asList; public class IT01 { @Inline public IT01() { } public static void main(String... args) { for (int i = 0; i < 100000; i++) { final IT01 it = new IT01(); it.method01(); it.method02(true); it.method03(); it.method04(asList("test")); it.method05(asList("test")); it.method06(new Double[]{}); it.method07(asList("test")); it.method08("test"); it.method09(true, (short) 0, (int) 0, (long) 0, (float) 0, (double) 0, (char) 0, (byte) 0); it.method10(true, (short) 0, (int) 0, (long) 0, (float) 0, (double) 0, (char) 0, (byte) 0); } } @Inline private static void method03() { } @Inline private void method01() { } @Inline private void method02(boolean arg1) { } @Inline private void method04(List arg1) { } @Inline private double method05(List arg1) { return 0; } @Inline private void method06(T[] arg1) { } @Inline private void method07(List arg1) { } @Inline private T method08(T arg1) { return arg1; } @Inline private void method09(boolean arg1, short arg2, int arg3, long arg4, float arg5, double arg6, char arg7, byte arg8) { } @Inline private void method10(Boolean arg1, Short arg2, Integer arg3, Long arg4, Float arg5, Double arg6, Character arg7, Byte arg8) { } } compile-command-annotations-1.2.3/src/it/tests/IT-02/000077500000000000000000000000001354123505700222215ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-02/invoker.properties000066400000000000000000000055221354123505700260200ustar00rootroot00000000000000# # Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net # Copyright © 2014-2019 Hotspot compile command annotations contributors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ### # A comma or space separated list of goals/phases to execute, may # specify an empty list to execute the default goal of the IT project invoker.goals = clean install # Optionally, a list of goals to run during further invocations of Maven # invoker.goals.2 = ${project.groupId}:${project.artifactId}:${project.version}:run # A comma or space separated list of profiles to activate # invoker.profiles = its,jdk15 # The path to an alternative POM or base directory to invoke Maven on, defaults to the # project that was originally specified in the plugin configuration # Since plugin version 1.4 # invoker.project = sub-module # The value for the environment variable MAVEN_OPTS # invoker.mavenOpts = -Dfile.encoding=UTF-16 -Xms32m -Xmx256m # Possible values are "fail-fast" (default), "fail-at-end" and "fail-never" # invoker.failureBehavior = fail-never # The expected result of the build, possible values are "success" (default) and "failure" invoker.buildResult = success # A boolean value controlling the aggregator mode of Maven, defaults to "false" # invoker.nonRecursive = true # A boolean value controlling the network behavior of Maven, defaults to "false" # Since plugin version 1.4 # invoker.offline = true # The path to the properties file from which to load system properties, defaults to the # filename given by the plugin parameter testPropertiesFile # Since plugin version 1.4 # invoker.systemPropertiesFile = test.properties # An optional human friendly name for this build job to be included in the build reports. # Since plugin version 1.4 invoker.name = IT-02 # An optional description for this build job to be included in the build reports. # Since plugin version 1.4 # invoker.description = # A comma separated list of JRE versions on which this build job should be run. # Since plugin version 1.4 # invoker.java.version = 1.4+, !1.4.1, 1.7- # A comma separated list of OS families on which this build job should be run. # Since plugin version 1.4 # invoker.os.family = !windows, unix, mac # A comma separated list of Maven versions on which this build should be run. # Since plugin version 1.5 # invoker.maven.version = 2.0.10+, !2.1.0, !2.2.0 compile-command-annotations-1.2.3/src/it/tests/IT-02/pom.xml000066400000000000000000000054641354123505700235470ustar00rootroot00000000000000 4.0.0 net.nicoulaj.compile-command-annotations.it IT-02 1.0-SNAPSHOT net.nicoulaj.compile-command-annotations compile-command-annotations @project.version@ true @project.build.sourceEncoding@ maven-compiler-plugin @maven-compiler-plugin.version@ @java.level@ @java.level@ org.codehaus.mojo exec-maven-plugin @exec-maven-plugin.version@ run-program integration-test exec java -XX:+UnlockDiagnosticVMOptions -XX:+PrintInlining -XX:CompileCommandFile=${project.build.outputDirectory}/META-INF/hotspot_compiler -classpath net.nicoulaj.compilecommand.IT02 compile-command-annotations-1.2.3/src/it/tests/IT-02/postbuild.groovy000066400000000000000000000064511354123505700255030ustar00rootroot00000000000000/** * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import net.nicoulaj.compilecommand.ITAssert try { helper = new ITAssert(basedir, localRepositoryPath, context) // Check hotspot_compiler file helper.assertFileIsNotEmpty("target/classes/META-INF/hotspot_compiler") // Check startup traces helper.assertBuildLogContains(": dontinline net/nicoulaj/compilecommand/IT02.") helper.assertBuildLogContains(": dontinline net/nicoulaj/compilecommand/IT02.method01") helper.assertBuildLogContains(": dontinline net/nicoulaj/compilecommand/IT02.method02") helper.assertBuildLogContains(": dontinline net/nicoulaj/compilecommand/IT02.method03") helper.assertBuildLogContains(": dontinline net/nicoulaj/compilecommand/IT02.method04") helper.assertBuildLogContains(": dontinline net/nicoulaj/compilecommand/IT02.method05") helper.assertBuildLogContains(": dontinline net/nicoulaj/compilecommand/IT02.method06") helper.assertBuildLogContains(": dontinline net/nicoulaj/compilecommand/IT02.method07") helper.assertBuildLogContains(": dontinline net/nicoulaj/compilecommand/IT02.method08") helper.assertBuildLogContains(": dontinline net/nicoulaj/compilecommand/IT02.method09") helper.assertBuildLogContains(": dontinline net/nicoulaj/compilecommand/IT02.method10") // Check PrintInlining traces helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT02:: (5 bytes) disallowed by Compile") helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT02::method01 (1 bytes) disallowed by Compile") helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT02::method02 (1 bytes) disallowed by Compile") helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT02::method03 (1 bytes) disallowed by Compile") helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT02::method04 (1 bytes) disallowed by Compile") helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT02::method05 (2 bytes) disallowed by Compile") helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT02::method06 (1 bytes) disallowed by Compile") helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT02::method07 (1 bytes) disallowed by Compile") helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT02::method08 (2 bytes) disallowed by Compile") helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT02::method09 (1 bytes) disallowed by Compile") helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT02::method10 (1 bytes) disallowed by Compile") } catch (Exception e) { System.err.println(e.getMessage()) return false; } compile-command-annotations-1.2.3/src/it/tests/IT-02/src/000077500000000000000000000000001354123505700230105ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-02/src/main/000077500000000000000000000000001354123505700237345ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-02/src/main/java/000077500000000000000000000000001354123505700246555ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-02/src/main/java/net/000077500000000000000000000000001354123505700254435ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-02/src/main/java/net/nicoulaj/000077500000000000000000000000001354123505700272475ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-02/src/main/java/net/nicoulaj/compilecommand/000077500000000000000000000000001354123505700322365ustar00rootroot00000000000000IT02.java000066400000000000000000000055371354123505700335120ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-02/src/main/java/net/nicoulaj/compilecommand/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand; import net.nicoulaj.compilecommand.annotations.DontInline; import java.io.Serializable; import java.util.List; import static java.util.Arrays.asList; public class IT02 { @DontInline public IT02() { } public static void main(String... args) { for (int i = 0; i < 100000; i++) { final IT02 it = new IT02(); it.method01(); it.method02(true); it.method03(); it.method04(asList("test")); it.method05(asList("test")); it.method06(new Double[]{}); it.method07(asList("test")); it.method08("test"); it.method09(true, (short) 0, (int) 0, (long) 0, (float) 0, (double) 0, (char) 0, (byte) 0); it.method10(true, (short) 0, (int) 0, (long) 0, (float) 0, (double) 0, (char) 0, (byte) 0); } } @DontInline private static void method03() { } @DontInline private void method01() { } @DontInline private void method02(boolean arg1) { } @DontInline private void method04(List arg1) { } @DontInline private double method05(List arg1) { return 0; } @DontInline private void method06(T[] arg1) { } @DontInline private void method07(List arg1) { } @DontInline private T method08(T arg1) { return arg1; } @DontInline private void method09(boolean arg1, short arg2, int arg3, long arg4, float arg5, double arg6, char arg7, byte arg8) { } @DontInline private void method10(Boolean arg1, Short arg2, Integer arg3, Long arg4, Float arg5, Double arg6, Character arg7, Byte arg8) { } } compile-command-annotations-1.2.3/src/it/tests/IT-03/000077500000000000000000000000001354123505700222225ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-03/invoker.properties000066400000000000000000000055221354123505700260210ustar00rootroot00000000000000# # Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net # Copyright © 2014-2019 Hotspot compile command annotations contributors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ### # A comma or space separated list of goals/phases to execute, may # specify an empty list to execute the default goal of the IT project invoker.goals = clean install # Optionally, a list of goals to run during further invocations of Maven # invoker.goals.2 = ${project.groupId}:${project.artifactId}:${project.version}:run # A comma or space separated list of profiles to activate # invoker.profiles = its,jdk15 # The path to an alternative POM or base directory to invoke Maven on, defaults to the # project that was originally specified in the plugin configuration # Since plugin version 1.4 # invoker.project = sub-module # The value for the environment variable MAVEN_OPTS # invoker.mavenOpts = -Dfile.encoding=UTF-16 -Xms32m -Xmx256m # Possible values are "fail-fast" (default), "fail-at-end" and "fail-never" # invoker.failureBehavior = fail-never # The expected result of the build, possible values are "success" (default) and "failure" invoker.buildResult = success # A boolean value controlling the aggregator mode of Maven, defaults to "false" # invoker.nonRecursive = true # A boolean value controlling the network behavior of Maven, defaults to "false" # Since plugin version 1.4 # invoker.offline = true # The path to the properties file from which to load system properties, defaults to the # filename given by the plugin parameter testPropertiesFile # Since plugin version 1.4 # invoker.systemPropertiesFile = test.properties # An optional human friendly name for this build job to be included in the build reports. # Since plugin version 1.4 invoker.name = IT-03 # An optional description for this build job to be included in the build reports. # Since plugin version 1.4 # invoker.description = # A comma separated list of JRE versions on which this build job should be run. # Since plugin version 1.4 # invoker.java.version = 1.4+, !1.4.1, 1.7- # A comma separated list of OS families on which this build job should be run. # Since plugin version 1.4 # invoker.os.family = !windows, unix, mac # A comma separated list of Maven versions on which this build should be run. # Since plugin version 1.5 # invoker.maven.version = 2.0.10+, !2.1.0, !2.2.0 compile-command-annotations-1.2.3/src/it/tests/IT-03/pom.xml000066400000000000000000000055551354123505700235510ustar00rootroot00000000000000 4.0.0 net.nicoulaj.compile-command-annotations.it IT-03 1.0-SNAPSHOT net.nicoulaj.compile-command-annotations compile-command-annotations @project.version@ true @project.build.sourceEncoding@ maven-compiler-plugin @maven-compiler-plugin.version@ @java.level@ @java.level@ org.codehaus.mojo exec-maven-plugin @exec-maven-plugin.version@ run-program integration-test exec java -XX:+UnlockDiagnosticVMOptions -XX:+PrintInlining -XX:+LogCompilation -XX:CompileCommandFile=${project.build.outputDirectory}/META-INF/hotspot_compiler -classpath net.nicoulaj.compilecommand.IT03 compile-command-annotations-1.2.3/src/it/tests/IT-03/postbuild.groovy000066400000000000000000000026131354123505700255000ustar00rootroot00000000000000/** * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import net.nicoulaj.compilecommand.ITAssert try { helper = new ITAssert(basedir, localRepositoryPath, context) // Check hotspot_compiler file helper.assertFileIsNotEmpty("target/classes/META-INF/hotspot_compiler") // Check startup traces helper.assertBuildLogDoesNotContain(": unrecognized line") helper.assertBuildLogDoesNotContain(": exclude net/nicoulaj/compilecommand/IT03.") // Check PrintInlining/LogCompilation traces helper.assertBuildLogContains("net.nicoulaj.compilecommand.IT03:: (5 bytes)") helper.assertBuildLogContains("Compiled method") } catch (Exception e) { System.err.println(e.getMessage()) return false; } compile-command-annotations-1.2.3/src/it/tests/IT-03/src/000077500000000000000000000000001354123505700230115ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-03/src/main/000077500000000000000000000000001354123505700237355ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-03/src/main/java/000077500000000000000000000000001354123505700246565ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-03/src/main/java/net/000077500000000000000000000000001354123505700254445ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-03/src/main/java/net/nicoulaj/000077500000000000000000000000001354123505700272505ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-03/src/main/java/net/nicoulaj/compilecommand/000077500000000000000000000000001354123505700322375ustar00rootroot00000000000000IT03.java000066400000000000000000000024361354123505700335070ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-03/src/main/java/net/nicoulaj/compilecommand/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand; import net.nicoulaj.compilecommand.annotations.*; @Quiet public class IT03 { @Exclude public IT03() { } public static void main(String... args) { for (int i = 0; i < 100000; i++) { final IT03 it = new IT03(); it.method01(); it.method02(); } } @Print @Log @Options({ "UseSuperWord", "PrintIntrinsics", "EliminateAutoBox" }) private void method01() { } @Option("UseSuperWord") private void method02() { } } compile-command-annotations-1.2.3/src/it/tests/IT-04/000077500000000000000000000000001354123505700222235ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-04/invoker.properties000066400000000000000000000055221354123505700260220ustar00rootroot00000000000000# # Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net # Copyright © 2014-2019 Hotspot compile command annotations contributors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ### # A comma or space separated list of goals/phases to execute, may # specify an empty list to execute the default goal of the IT project invoker.goals = clean install # Optionally, a list of goals to run during further invocations of Maven # invoker.goals.2 = ${project.groupId}:${project.artifactId}:${project.version}:run # A comma or space separated list of profiles to activate # invoker.profiles = its,jdk15 # The path to an alternative POM or base directory to invoke Maven on, defaults to the # project that was originally specified in the plugin configuration # Since plugin version 1.4 # invoker.project = sub-module # The value for the environment variable MAVEN_OPTS # invoker.mavenOpts = -Dfile.encoding=UTF-16 -Xms32m -Xmx256m # Possible values are "fail-fast" (default), "fail-at-end" and "fail-never" # invoker.failureBehavior = fail-never # The expected result of the build, possible values are "success" (default) and "failure" invoker.buildResult = success # A boolean value controlling the aggregator mode of Maven, defaults to "false" # invoker.nonRecursive = true # A boolean value controlling the network behavior of Maven, defaults to "false" # Since plugin version 1.4 # invoker.offline = true # The path to the properties file from which to load system properties, defaults to the # filename given by the plugin parameter testPropertiesFile # Since plugin version 1.4 # invoker.systemPropertiesFile = test.properties # An optional human friendly name for this build job to be included in the build reports. # Since plugin version 1.4 invoker.name = IT-04 # An optional description for this build job to be included in the build reports. # Since plugin version 1.4 # invoker.description = # A comma separated list of JRE versions on which this build job should be run. # Since plugin version 1.4 # invoker.java.version = 1.4+, !1.4.1, 1.7- # A comma separated list of OS families on which this build job should be run. # Since plugin version 1.4 # invoker.os.family = !windows, unix, mac # A comma separated list of Maven versions on which this build should be run. # Since plugin version 1.5 # invoker.maven.version = 2.0.10+, !2.1.0, !2.2.0 compile-command-annotations-1.2.3/src/it/tests/IT-04/pom.xml000066400000000000000000000056671354123505700235560ustar00rootroot00000000000000 4.0.0 net.nicoulaj.compile-command-annotations.it IT-04 1.0-SNAPSHOT net.nicoulaj.compile-command-annotations compile-command-annotations @project.version@ true @project.build.sourceEncoding@ maven-compiler-plugin @maven-compiler-plugin.version@ @java.level@ @java.level@ -Acompile.command.file.output.path=my-compile-command-file org.codehaus.mojo exec-maven-plugin @exec-maven-plugin.version@ run-program integration-test exec java -XX:+UnlockDiagnosticVMOptions -XX:+PrintInlining -XX:CompileCommandFile=${project.build.outputDirectory}/my-compile-command-file -classpath net.nicoulaj.compilecommand.IT04 compile-command-annotations-1.2.3/src/it/tests/IT-04/postbuild.groovy000066400000000000000000000023031354123505700254750ustar00rootroot00000000000000/** * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import net.nicoulaj.compilecommand.ITAssert try { helper = new ITAssert(basedir, localRepositoryPath, context) // Check hotspot_compiler file helper.assertFileIsNotEmpty("target/classes/my-compile-command-file") // Check startup traces helper.assertBuildLogDoesNotContain(": unrecognized line") helper.assertBuildLogContains(": inline net/nicoulaj/compilecommand/IT04.") } catch (Exception e) { System.err.println(e.getMessage()) return false; } compile-command-annotations-1.2.3/src/it/tests/IT-04/src/000077500000000000000000000000001354123505700230125ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-04/src/main/000077500000000000000000000000001354123505700237365ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-04/src/main/java/000077500000000000000000000000001354123505700246575ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-04/src/main/java/net/000077500000000000000000000000001354123505700254455ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-04/src/main/java/net/nicoulaj/000077500000000000000000000000001354123505700272515ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-04/src/main/java/net/nicoulaj/compilecommand/000077500000000000000000000000001354123505700322405ustar00rootroot00000000000000IT04.java000066400000000000000000000016521354123505700335100ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-04/src/main/java/net/nicoulaj/compilecommand/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand; import net.nicoulaj.compilecommand.annotations.Inline; public class IT04 { @Inline public IT04() { } public static void main(String... args) { } } compile-command-annotations-1.2.3/src/it/tests/IT-05/000077500000000000000000000000001354123505700222245ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-05/invoker.properties000066400000000000000000000055221354123505700260230ustar00rootroot00000000000000# # Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net # Copyright © 2014-2019 Hotspot compile command annotations contributors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ### # A comma or space separated list of goals/phases to execute, may # specify an empty list to execute the default goal of the IT project invoker.goals = clean install # Optionally, a list of goals to run during further invocations of Maven # invoker.goals.2 = ${project.groupId}:${project.artifactId}:${project.version}:run # A comma or space separated list of profiles to activate # invoker.profiles = its,jdk15 # The path to an alternative POM or base directory to invoke Maven on, defaults to the # project that was originally specified in the plugin configuration # Since plugin version 1.4 # invoker.project = sub-module # The value for the environment variable MAVEN_OPTS # invoker.mavenOpts = -Dfile.encoding=UTF-16 -Xms32m -Xmx256m # Possible values are "fail-fast" (default), "fail-at-end" and "fail-never" # invoker.failureBehavior = fail-never # The expected result of the build, possible values are "success" (default) and "failure" invoker.buildResult = failure # A boolean value controlling the aggregator mode of Maven, defaults to "false" # invoker.nonRecursive = true # A boolean value controlling the network behavior of Maven, defaults to "false" # Since plugin version 1.4 # invoker.offline = true # The path to the properties file from which to load system properties, defaults to the # filename given by the plugin parameter testPropertiesFile # Since plugin version 1.4 # invoker.systemPropertiesFile = test.properties # An optional human friendly name for this build job to be included in the build reports. # Since plugin version 1.4 invoker.name = IT-05 # An optional description for this build job to be included in the build reports. # Since plugin version 1.4 # invoker.description = # A comma separated list of JRE versions on which this build job should be run. # Since plugin version 1.4 # invoker.java.version = 1.4+, !1.4.1, 1.7- # A comma separated list of OS families on which this build job should be run. # Since plugin version 1.4 # invoker.os.family = !windows, unix, mac # A comma separated list of Maven versions on which this build should be run. # Since plugin version 1.5 # invoker.maven.version = 2.0.10+, !2.1.0, !2.2.0 compile-command-annotations-1.2.3/src/it/tests/IT-05/pom.xml000066400000000000000000000037741354123505700235540ustar00rootroot00000000000000 4.0.0 net.nicoulaj.compile-command-annotations.it IT-05 1.0-SNAPSHOT net.nicoulaj.compile-command-annotations compile-command-annotations @project.version@ true @project.build.sourceEncoding@ maven-compiler-plugin @maven-compiler-plugin.version@ @java.level@ @java.level@ -Acompile.command.file.output.charset=aaaaaaaaaaaaaaaaaaaaaaaaaaa compile-command-annotations-1.2.3/src/it/tests/IT-05/postbuild.groovy000066400000000000000000000020001354123505700254700ustar00rootroot00000000000000/** * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import net.nicoulaj.compilecommand.ITAssert try { helper = new ITAssert(basedir, localRepositoryPath, context) // Check build traces helper.assertBuildLogContains("UnsupportedEncodingException") } catch (Exception e) { System.err.println(e.getMessage()) return false; } compile-command-annotations-1.2.3/src/it/tests/IT-05/src/000077500000000000000000000000001354123505700230135ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-05/src/main/000077500000000000000000000000001354123505700237375ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-05/src/main/java/000077500000000000000000000000001354123505700246605ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-05/src/main/java/net/000077500000000000000000000000001354123505700254465ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-05/src/main/java/net/nicoulaj/000077500000000000000000000000001354123505700272525ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-05/src/main/java/net/nicoulaj/compilecommand/000077500000000000000000000000001354123505700322415ustar00rootroot00000000000000IT05.java000066400000000000000000000015611354123505700335110ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/it/tests/IT-05/src/main/java/net/nicoulaj/compilecommand/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand; import net.nicoulaj.compilecommand.annotations.*; public class IT05 { @Inline public void method(){} } compile-command-annotations-1.2.3/src/main/000077500000000000000000000000001354123505700206345ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/main/java/000077500000000000000000000000001354123505700215555ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/main/java/net/000077500000000000000000000000001354123505700223435ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/main/java/net/nicoulaj/000077500000000000000000000000001354123505700241475ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/main/java/net/nicoulaj/compilecommand/000077500000000000000000000000001354123505700271365ustar00rootroot00000000000000CompileCommandProcessor.java000066400000000000000000000334111354123505700345130ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/main/java/net/nicoulaj/compilecommand/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand; import net.nicoulaj.compilecommand.annotations.*; import javax.annotation.processing.AbstractProcessor; import javax.annotation.processing.Processor; import javax.annotation.processing.RoundEnvironment; import javax.lang.model.SourceVersion; import javax.lang.model.element.Element; import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.TypeElement; import javax.lang.model.element.VariableElement; import javax.lang.model.type.ArrayType; import javax.lang.model.type.NoType; import javax.lang.model.type.PrimitiveType; import javax.lang.model.type.TypeMirror; import javax.lang.model.util.SimpleElementVisitor6; import javax.lang.model.util.SimpleTypeVisitor6; import javax.lang.model.util.Types; import javax.tools.Diagnostic; import javax.tools.FileObject; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.lang.annotation.Annotation; import java.util.HashSet; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; import static java.lang.String.format; import static java.util.Arrays.asList; import static javax.tools.Diagnostic.Kind.*; import static javax.tools.StandardLocation.CLASS_OUTPUT; /** * {@link Processor} that generates a hotspot_compiler file for using with -XX:CompileCommandFile. * * @author Julien Nicoulaud * @see CompileCommand/CompileCommandFile documentation */ @SuppressWarnings("unused") public final class CompileCommandProcessor extends AbstractProcessor { public static final String COMPILE_COMMAND_FILE_CHARSET_OPTION = "compile.command.file.output.charset"; public static final String COMPILE_COMMAND_FILE_CHARSET_DEFAULT = "UTF-8"; public static final String COMPILE_COMMAND_FILE_PATH_OPTION = "compile.command.file.output.path"; public static final String COMPILE_COMMAND_FILE_PATH_DEFAULT = "META-INF/hotspot_compiler"; public static final String COMPILE_COMMAND_INCREMENTAL_OUTPUT_OPTION = "compile.command.incremental.output"; private String compileCommandsDir; private String charset; private final SortedSet lines; public CompileCommandProcessor() { lines = new TreeSet(); } @Override public SourceVersion getSupportedSourceVersion() { return SourceVersion.latest(); } @Override public Set getSupportedAnnotationTypes() { return new HashSet(asList( Break.class.getName(), CompileOnly.class.getName(), DontInline.class.getName(), Exclude.class.getName(), Inline.class.getName(), Log.class.getName(), Option.class.getName(), Options.class.getName(), Print.class.getName(), Quiet.class.getName() )); } @Override public Set getSupportedOptions() { Set supportedOptions = new HashSet(); supportedOptions.add(COMPILE_COMMAND_FILE_CHARSET_OPTION); supportedOptions.add(COMPILE_COMMAND_FILE_PATH_OPTION); supportedOptions.add(COMPILE_COMMAND_INCREMENTAL_OUTPUT_OPTION); return supportedOptions; } @Override public boolean process(final Set annotations, final RoundEnvironment roundEnv) { message(NOTE, "Processing compiler hints annotations"); this.compileCommandsDir = processingEnv.getOptions().get(COMPILE_COMMAND_INCREMENTAL_OUTPUT_OPTION); this.charset = processingEnv.getOptions().get(COMPILE_COMMAND_FILE_CHARSET_OPTION); if (this.charset == null) this.charset = COMPILE_COMMAND_FILE_CHARSET_DEFAULT; processBreak(roundEnv); processCompileOnly(roundEnv); processDontInline(roundEnv); processExclude(roundEnv); processInline(roundEnv); processLog(roundEnv); processOptions(roundEnv); processOption(roundEnv); processPrint(roundEnv); processQuiet(roundEnv); if (!roundEnv.processingOver()) return true; final String outputPath = processingEnv.getOptions().get(COMPILE_COMMAND_FILE_PATH_OPTION); generateCompileCommandFile( outputPath != null ? outputPath : COMPILE_COMMAND_FILE_PATH_DEFAULT ); message(NOTE, "Done processing compiler hints annotations"); return true; } private void processBreak(RoundEnvironment roundEnv) { processSimpleMethodAnnotation(Break.class, roundEnv); } private void processCompileOnly(RoundEnvironment roundEnv) { processSimpleMethodAnnotation(CompileOnly.class, roundEnv); } private void processDontInline(RoundEnvironment roundEnv) { processSimpleMethodAnnotation(DontInline.class, roundEnv); } private void processExclude(RoundEnvironment roundEnv) { processSimpleMethodAnnotation(Exclude.class, roundEnv); } private void processInline(RoundEnvironment roundEnv) { processSimpleMethodAnnotation(Inline.class, roundEnv); } private void processLog(RoundEnvironment roundEnv) { processSimpleMethodAnnotation(Log.class, roundEnv); } private void processOptions(RoundEnvironment roundEnv) { for (Element element : roundEnv.getElementsAnnotatedWith(Options.class)) for (String option : element.getAnnotation(Options.class).value()) processOption(element, option, roundEnv); } private void processOption(RoundEnvironment roundEnv) { for (Element element : roundEnv.getElementsAnnotatedWith(Option.class)) processOption(element, element.getAnnotation(Option.class).value(), roundEnv); } private void processOption(final Element element, String option, RoundEnvironment roundEnv) { addLine(element.accept(new SimpleElementVisitor6() { @Override public Line visitExecutable(final ExecutableElement e, final String option) { return new Line(getDescriptor(e) + " " + option, Option.class); } }, option), element); } private void processPrint(RoundEnvironment roundEnv) { processSimpleMethodAnnotation(Print.class, roundEnv); } private void processQuiet(RoundEnvironment roundEnv) { for (Element element : roundEnv.getElementsAnnotatedWith(Quiet.class)) addLine(element.accept(new SimpleElementVisitor6() { @Override public Line visitType(TypeElement e, RoundEnvironment roundEnvironment) { return new Line("quiet", getDescriptor(e), Quiet.class); } @Override public Line visitExecutable(final ExecutableElement e, final RoundEnvironment roundEnvironment) { return new Line("quiet", getDescriptor(e), Quiet.class); } }, roundEnv), element); } private void processSimpleMethodAnnotation(final Class clazz, RoundEnvironment roundEnv) { for (Element element : roundEnv.getElementsAnnotatedWith(clazz)) addLine(element.accept(new SimpleElementVisitor6() { @Override public Line visitExecutable(final ExecutableElement e, final RoundEnvironment roundEnvironment) { return new Line(getDescriptor(e), clazz); } }, roundEnv), element); } private String getDescriptor(TypeElement element) { return processingEnv.getElementUtils().getBinaryName(element).toString(); } private String getDescriptor(ExecutableElement element) { return getDescriptor((TypeElement) element.getEnclosingElement()) + "::" + element.getSimpleName() + " " + getSignature(element); } private String getSignature(ExecutableElement element) { final Types types = processingEnv.getTypeUtils(); final StringBuilder sb = new StringBuilder("("); for (VariableElement p : element.getParameters()) sb.append(getSignature(types.erasure(p.asType()))); return sb.append(")") .append(getSignature(types.erasure(element.getReturnType()))) .toString(); } private String getSignature(TypeMirror type) { return type.accept(new SimpleTypeVisitor6() { @Override public String visitPrimitive(final PrimitiveType t, final Void dummy) { final String type = t.toString(); if ("boolean".equals(type)) return "Z"; if ("short".equals(type)) return "S"; if ("int".equals(type)) return "I"; if ("long".equals(type)) return "J"; if ("float".equals(type)) return "F"; if ("double".equals(type)) return "D"; if ("char".equals(type)) return "C"; if ("byte".equals(type)) return "B"; return super.visitPrimitive(t, dummy); } @Override public String visitNoType(final NoType t, final Void aVoid) { return "V"; } @Override public String visitArray(final ArrayType t, final Void aVoid) { return "[" + getSignature(t.getComponentType()); } @Override protected String defaultAction(final TypeMirror e, final Void aVoid) { return "L" + e.toString() + ";"; } }, null); } private void addLine(Line line, Element element) { lines.add(line); if (compileCommandsDir != null) { String p = compileCommandsDir + "/" + makeFileName(line); PrintWriter pw = null; try { final FileObject file = processingEnv.getFiler().createResource(CLASS_OUTPUT, "", p, element); pw = new PrintWriter(new OutputStreamWriter(file.openOutputStream(), charset)); pw.println(line.line); pw.flush(); } catch (IOException e) { throw new RuntimeException("Failed writing incremental-compile-compatible fragment at " + p, e); } finally { if (pw != null) pw.close(); } } } private String makeFileName(Line line) { String fn = line.annotation.getSimpleName().toLowerCase() + '-' + line.descriptor; int l = fn.length(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < l; i++) { char c = fn.charAt(i); if (Character.isLetterOrDigit(c) || c == '.' || c == '_' || c == '-') sb.append(c); else sb.append(Integer.toHexString(c & 0xffff)); } return sb.toString(); } private void generateCompileCommandFile(String path) { if (compileCommandsDir != null) { message(NOTE, "Wrote incremental-compile-compatible fragments for the hotspot_compiler file to %s.", compileCommandsDir); return; } message(NOTE, "Writing compiler command file at %s", path); PrintWriter pw = null; try { final FileObject file = processingEnv.getFiler().createResource(CLASS_OUTPUT, "", path); pw = new PrintWriter(new OutputStreamWriter(file.openOutputStream(), charset)); boolean quiet = false; for (Line value : lines) { if (value.annotation != Quiet.class) { pw.println(value.line); continue; } if (!quiet) pw.println(value.line); quiet = true; } pw.flush(); } catch (IOException e) { throw new RuntimeException("Failed writing compiler command file at " + path, e); } finally { if (pw != null) pw.close(); } } private void message(Diagnostic.Kind level, String msg, Object... args) { processingEnv.getMessager().printMessage(level, format(msg, args)); } private static class Line implements Comparable { final String line; final String descriptor; final Class annotation; Line(String descriptor, Class annotation) { this(annotation.getSimpleName().toLowerCase() + " " + descriptor, descriptor, annotation); } Line(String line, String descriptor, Class annotation) { this.line = line; this.descriptor = descriptor; this.annotation = annotation; } @Override public int compareTo(Line o) { if (this.annotation == Quiet.class && o.annotation != Quiet.class) return -1; if (this.annotation != Quiet.class && o.annotation == Quiet.class) return 1; return this.line.compareTo(o.line); } } } IncrementalCompilationHelper.java000066400000000000000000000056161354123505700355320ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/main/java/net/nicoulaj/compilecommand/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.util.Set; import java.util.TreeSet; public class IncrementalCompilationHelper { public static void mergeIncrementalFiles(File incrementalFiles, File outputFile) throws IOException { if (incrementalFiles == null) throw new NullPointerException("Input directory must not be null"); if (!incrementalFiles.isDirectory()) throw new FileNotFoundException("Directory for incrementalFiles '" + incrementalFiles + "' does not exist"); if (outputFile == null) throw new NullPointerException("Output file must not be null"); PrintWriter pw = null; try { File[] files = incrementalFiles.listFiles(); if (files == null) throw new IOException("Could not list files in input directory " + incrementalFiles); Set lines = new TreeSet(); boolean quiet = false; for (File file : files) { quiet = processFile(lines, quiet, file); } pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(outputFile), "UTF-8")); if (quiet) { pw.println("quiet"); } for (String line : lines) { pw.println(line); } } finally { if (pw != null) pw.close(); } } private static boolean processFile(Set lines, boolean quiet, File file) throws IOException { BufferedReader br = null; try { br = new BufferedReader(new FileReader(file)); String l; while ((l = br.readLine()) != null) { if ("quiet".equals(l)) quiet = true; else lines.add(l); } } finally { if (br != null) br.close(); } return quiet; } } compile-command-annotations-1.2.3/src/main/java/net/nicoulaj/compilecommand/annotations/000077500000000000000000000000001354123505700314735ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/main/java/net/nicoulaj/compilecommand/annotations/Break.java000066400000000000000000000031631354123505700333650ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.annotations; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.RetentionPolicy.SOURCE; /** * Set a breakpoint when debugging the JVM to stop at the beginning of just in time compilation of the specified method. * * @author Julien Nicoulaud * @see Hotspot compiler hints generator documentation * @see CompileCommand/CompileCommandFile documentation */ @Documented @Retention(SOURCE) @Target({CONSTRUCTOR, METHOD}) public @interface Break { } CompileOnly.java000066400000000000000000000031261354123505700345130ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/main/java/net/nicoulaj/compilecommand/annotations/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.annotations; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.RetentionPolicy.SOURCE; /** * Exclude all methods from just in time compilation except for the specified method. * * @author Julien Nicoulaud * @see Hotspot compiler hints generator documentation * @see CompileCommand/CompileCommandFile documentation */ @Documented @Retention(SOURCE) @Target({CONSTRUCTOR, METHOD}) public @interface CompileOnly { } DontInline.java000066400000000000000000000032671354123505700343320ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/main/java/net/nicoulaj/compilecommand/annotations/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.annotations; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.RetentionPolicy.SOURCE; /** * Prevent the just in time compiler from inlining the specified method. * * @author Julien Nicoulaud * @see Hotspot compiler hints generator documentation * @see CompileCommand/CompileCommandFile documentation * @see net.nicoulaj.compilecommand.annotations.Exclude * @see net.nicoulaj.compilecommand.annotations.Inline */ @Documented @Retention(SOURCE) @Target({CONSTRUCTOR, METHOD}) public @interface DontInline { } compile-command-annotations-1.2.3/src/main/java/net/nicoulaj/compilecommand/annotations/Exclude.java000066400000000000000000000032551354123505700337340ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.annotations; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.RetentionPolicy.SOURCE; /** * Exclude the specified method from just in time compilation. * * @author Julien Nicoulaud * @see Hotspot compiler hints generator documentation * @see CompileCommand/CompileCommandFile documentation * @see net.nicoulaj.compilecommand.annotations.DontInline * @see net.nicoulaj.compilecommand.annotations.Inline */ @Documented @Retention(SOURCE) @Target({CONSTRUCTOR, METHOD}) public @interface Exclude { } compile-command-annotations-1.2.3/src/main/java/net/nicoulaj/compilecommand/annotations/Inline.java000066400000000000000000000032731354123505700335610ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.annotations; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.RetentionPolicy.SOURCE; /** * Force the just in time compiler to attempt inlining the specified method. * * @author Julien Nicoulaud * @see Hotspot compiler hints generator documentation * @see CompileCommand/CompileCommandFile documentation * @see net.nicoulaj.compilecommand.annotations.DontInline * @see net.nicoulaj.compilecommand.annotations.Exclude */ @Documented @Retention(SOURCE) @Target({CONSTRUCTOR, METHOD}) public @interface Inline { } compile-command-annotations-1.2.3/src/main/java/net/nicoulaj/compilecommand/annotations/Log.java000066400000000000000000000031731354123505700330630ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.annotations; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.RetentionPolicy.SOURCE; /** * Exclude compilation logging (with the -XX:+LogCompilation option) for all methods except for the specified method. * * @author Julien Nicoulaud * @see Hotspot compiler hints generator documentation * @see CompileCommand/CompileCommandFile documentation */ @Documented @Retention(SOURCE) @Target({CONSTRUCTOR, METHOD}) public @interface Log { } compile-command-annotations-1.2.3/src/main/java/net/nicoulaj/compilecommand/annotations/Option.java000066400000000000000000000031111354123505700336020ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.annotations; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.RetentionPolicy.SOURCE; /** * Pass a JIT compilation option to the specified method. * * @author Julien Nicoulaud * @see Hotspot compiler hints generator documentation * @see CompileCommand/CompileCommandFile documentation */ @Documented @Retention(SOURCE) @Target({CONSTRUCTOR, METHOD}) public @interface Option { String value(); } compile-command-annotations-1.2.3/src/main/java/net/nicoulaj/compilecommand/annotations/Options.java000066400000000000000000000031131354123505700337670ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.annotations; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.RetentionPolicy.SOURCE; /** * Pass JIT compilation options to the specified method. * * @author Julien Nicoulaud * @see Hotspot compiler hints generator documentation * @see CompileCommand/CompileCommandFile documentation */ @Documented @Retention(SOURCE) @Target({CONSTRUCTOR, METHOD}) public @interface Options { String[] value(); } compile-command-annotations-1.2.3/src/main/java/net/nicoulaj/compilecommand/annotations/Print.java000066400000000000000000000031071354123505700334330ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.annotations; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.RetentionPolicy.SOURCE; /** * Print generated assembler code after compilation of the specified method. * * @author Julien Nicoulaud * @see Hotspot compiler hints generator documentation * @see CompileCommand/CompileCommandFile documentation */ @Documented @Retention(SOURCE) @Target({CONSTRUCTOR, METHOD}) public @interface Print { } compile-command-annotations-1.2.3/src/main/java/net/nicoulaj/compilecommand/annotations/Quiet.java000066400000000000000000000030051354123505700334230ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.annotations; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.*; import static java.lang.annotation.RetentionPolicy.SOURCE; /** * Do not print the compile commands on application startup. * * @author Julien Nicoulaud * @see Hotspot compiler hints generator documentation * @see CompileCommand/CompileCommandFile documentation */ @Documented @Retention(SOURCE) @Target({PACKAGE, TYPE, CONSTRUCTOR, METHOD}) public @interface Quiet { } package-info.java000066400000000000000000000021701354123505700346030ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/main/java/net/nicoulaj/compilecommand/annotations/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Annotations used to generate a hotspot_compiler file for using with -XX:CompileCommandFile. * * @author Julien Nicoulaud * @see CompileCommand/CompileCommandFile documentation */ package net.nicoulaj.compilecommand.annotations; compile-command-annotations-1.2.3/src/main/java/net/nicoulaj/compilecommand/package-info.java000066400000000000000000000022141354123505700323240ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * {@link javax.annotation.processing.Processor} that generates a hotspot_compiler file for using with -XX:CompileCommandFile. * * @author Julien Nicoulaud * @see CompileCommand/CompileCommandFile documentation */ package net.nicoulaj.compilecommand; compile-command-annotations-1.2.3/src/main/resources/000077500000000000000000000000001354123505700226465ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/main/resources/META-INF/000077500000000000000000000000001354123505700240065ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/main/resources/META-INF/gradle/000077500000000000000000000000001354123505700252445ustar00rootroot00000000000000incremental.annotation.processors000066400000000000000000000000761354123505700337660ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/main/resources/META-INF/gradlenet.nicoulaj.compilecommand.CompileCommandProcessor,isolating compile-command-annotations-1.2.3/src/main/resources/META-INF/services/000077500000000000000000000000001354123505700256315ustar00rootroot00000000000000javax.annotation.processing.Processor000066400000000000000000000000641354123505700351100ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/main/resources/META-INF/servicesnet.nicoulaj.compilecommand.CompileCommandProcessor compile-command-annotations-1.2.3/src/samples/000077500000000000000000000000001354123505700213545ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/samples/java/000077500000000000000000000000001354123505700222755ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/samples/java/net/000077500000000000000000000000001354123505700230635ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/samples/java/net/nicoulaj/000077500000000000000000000000001354123505700246675ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/samples/java/net/nicoulaj/compilecommand/000077500000000000000000000000001354123505700276565ustar00rootroot00000000000000Sample_01_Inlining.java000066400000000000000000000033551354123505700340200ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/samples/java/net/nicoulaj/compilecommand/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand; import net.nicoulaj.compilecommand.annotations.DontInline; import net.nicoulaj.compilecommand.annotations.Inline; public class Sample_01_Inlining { // This sample demonstrates how to force or prevent JIT from inlining a method. // // To run: // $ mvn clean test // $ java -cp target/test-classes \ // -XX:+UnlockDiagnosticVMOptions \ // -XX:+PrintInlining \ // -XX:CompileCommandFile=src/samples/resources/net/nicoulaj/compilecommand/Sample_01_Inlining \ // net.nicoulaj.compilecommand.Sample_01_Inlining public static void main(String... args) { for (int i = 0; i < 100000; i++) { method01(); method02(); } } @Inline // Force the just in time compiler to attempt inlining the specified method. private static void method01() { } @DontInline // Prevent the just in time compiler from inlining the specified method. private static void method02() { } } Sample_02_Compilation.java000066400000000000000000000033751354123505700345320ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/samples/java/net/nicoulaj/compilecommand/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand; import net.nicoulaj.compilecommand.annotations.CompileOnly; import net.nicoulaj.compilecommand.annotations.Exclude; public class Sample_02_Compilation { // This sample demonstrates how to force or prevent JIT from compiling a method. // // To run: // $ mvn clean test // $ java -cp target/test-classes \ // -XX:+UnlockDiagnosticVMOptions \ // -XX:+PrintCompilation \ // -XX:CompileCommandFile=src/samples/resources/net/nicoulaj/compilecommand/Sample_02_Compilation \ // net.nicoulaj.compilecommand.Sample_02_Compilation public static void main(String... args) { for (int i = 0; i < 100000; i++) { method01(); method02(); } } @Exclude // Exclude the specified method from just in time compilation. private static void method01() { } @CompileOnly // Exclude all methods from just in time compilation except for the specified method. private static void method02() { } } Sample_03_Logging.java000066400000000000000000000036241354123505700336400ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/samples/java/net/nicoulaj/compilecommand/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand; import net.nicoulaj.compilecommand.annotations.Log; import net.nicoulaj.compilecommand.annotations.Print; import net.nicoulaj.compilecommand.annotations.Quiet; @Quiet // Do not print the compile commands on application startup. public class Sample_03_Logging { // This sample demonstrates the different logging options. // // To run: // $ mvn clean test // $ java -cp target/test-classes \ // -XX:+UnlockDiagnosticVMOptions \ // -XX:+PrintCompilation \ // -XX:+LogCompilation \ // -XX:+PrintInlining \ // -XX:CompileCommandFile=src/samples/resources/net/nicoulaj/compilecommand/Sample_03_Logging \ // net.nicoulaj.compilecommand.Sample_03_Logging public static void main(String... args) { for (int i = 0; i < 100000; i++) { method01(); method02(); } } @Print // Print generated assembler code after compilation of the specified method. private static void method01() { } @Log // Exclude compilation logging for all methods except for the specified method. private static void method02() { } } Sample_04_Options.java000066400000000000000000000032061354123505700337020ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/samples/java/net/nicoulaj/compilecommand/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand; import net.nicoulaj.compilecommand.annotations.Options; public class Sample_04_Options { // This sample demonstrates how to use compiler options. // // To list available options: // $ java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version | grep C2 // // To run: // $ mvn clean test // $ java -cp target/test-classes \ // -XX:+UnlockDiagnosticVMOptions \ // -XX:+PrintCompilation \ // -XX:+LogCompilation \ // -XX:+PrintInlining \ // -XX:CompileCommandFile=src/samples/resources/net/nicoulaj/compilecommand/Sample_04_Options \ // net.nicoulaj.compilecommand.Sample_04_Options public static void main(String... args) { } @Options({"UseSuperWord", "PrintIntrinsics", "EliminateAutoBox"}) private static void method01() { } } compile-command-annotations-1.2.3/src/samples/java/net/nicoulaj/compilecommand/package-info.java000066400000000000000000000022141354123505700330440ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * {@link javax.annotation.processing.Processor} that generates a hotspot_compiler file for using with -XX:CompileCommandFile. * * @author Julien Nicoulaud * @see CompileCommand/CompileCommandFile documentation */ package net.nicoulaj.compilecommand; compile-command-annotations-1.2.3/src/samples/resources/000077500000000000000000000000001354123505700233665ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/samples/resources/net/000077500000000000000000000000001354123505700241545ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/samples/resources/net/nicoulaj/000077500000000000000000000000001354123505700257605ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/samples/resources/net/nicoulaj/compilecommand/000077500000000000000000000000001354123505700307475ustar00rootroot00000000000000Sample_01_Inlining000066400000000000000000000002141354123505700341600ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/samples/resources/net/nicoulaj/compilecommanddontinline net.nicoulaj.compilecommand.Sample_01_Inlining::method02 ()V inline net.nicoulaj.compilecommand.Sample_01_Inlining::method01 ()V Sample_02_Compilation000066400000000000000000000002241354123505700346710ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/samples/resources/net/nicoulaj/compilecommandcompileonly net.nicoulaj.compilecommand.Sample_02_Compilation::method02 ()V exclude net.nicoulaj.compilecommand.Sample_02_Compilation::method01 ()V Sample_03_Logging000066400000000000000000000002101354123505700337750ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/samples/resources/net/nicoulaj/compilecommandquiet log net.nicoulaj.compilecommand.Sample_03_Logging::method02 ()V print net.nicoulaj.compilecommand.Sample_03_Logging::method01 ()V Sample_04_Options000066400000000000000000000003671354123505700340600ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/samples/resources/net/nicoulaj/compilecommandoption net.nicoulaj.compilecommand.Sample_04_Options::method01 ()V EliminateAutoBox option net.nicoulaj.compilecommand.Sample_04_Options::method01 ()V PrintIntrinsics option net.nicoulaj.compilecommand.Sample_04_Options::method01 ()V UseSuperWord compile-command-annotations-1.2.3/src/site/000077500000000000000000000000001354123505700206545ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/site/markdown/000077500000000000000000000000001354123505700224765ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/site/markdown/index.md.vm000066400000000000000000000123431354123505700245530ustar00rootroot00000000000000#* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *# Introduction ------------ The [Hotspot JVM](http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136373.html) allows to provide a command file for the JIT compiler (see [-XX:CompileCommandFile](http://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html)). Using this project, you can generate this file automatically from annotations in the source code. Disclaimer ---------- The Hotspot JIT does a tremendous work optimizing your code, don't see this as "@Inline for the masses" : this is not a cheap way to make your code faster. Also, this is not portable and uses an internal feature of the Hotspot JVM. Only use this if you know what you are doing and have a good reason to. Usage ----- * Add the jar to your compilation classpath (or grab it directly at [Maven central repository](http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22${project.artifactId}%22)): ${project.groupId} ${project.artifactId} ${project.version} true * Add annotations in your source code : @Inline public void method01() { } See [samples](${project.scm.url}/tree/master/src/samples/java/net/nicoulaj/compilecommand) and [integration tests](${project.scm.url}/tree/master/src/it/tests). * When your program is compiled, the file is generated at `META-INF/hotspot_compiler` * You can then run your program using the compile command file: java -XX:CompileCommandFile:target/classes/META-INF/hotspot_compiler ... Incremental compilation support for Gradle ------------------------------------------ Incremental compilation in Gradle with this annotation processor requires a few tweaks to work properly. The compile-command-annotations-processor needs to write multiple files to be compatible with incremental compilation. This is enabled with the `-Acompile.command.incremental.output=COMPILE_COMMAND_INCREMENTAL` compiler option. Gradle can then associate and manage these files produced by compile-command-annotations with the Java source files. A helper task is then needed to merge all these files into a single `hotspot_compiler` file that can be consumed by a compatible JVM. In your module's `build.gradle`: buildscript { // note: omitting mandatory repository configuration in this snippet dependencies { classpath("net.nicoulaj.compile-command-annotations:compile-command-annotations:1.2.3") } } import net.nicoulaj.compilecommand.IncrementalCompilationHelper dependencies { annotationProcessor("net.nicoulaj.compile-command-annotations:compile-command-annotations:1.2.3") compileOnly("net.nicoulaj.compile-command-annotations:compile-command-annotations:1.2.3") } // Have a task that takes the incremental files and merges these into a single hotspot_compiler file. // The helper method IncrementalCompilationHelper.mergeIncrementalFiles ensures that the result file // is deterministic and that the (optional) 'quiet command' is the first in the output file. tasks.register("copyHotspotCompiler", DefaultTask) { DefaultTask t -> t.inputs.files(fileTree("${sourceSets.main.java.outputDir}/COMPILE_COMMAND_INCREMENTAL")) t.outputs.file("conf/hotspot_compiler") t.doLast({ IncrementalCompilationHelper.mergeIncrementalFiles(file("${sourceSets.main.java.outputDir}/COMPILE_COMMAND_INCREMENTAL"), file("conf/hotspot_compiler")) }) } tasks.named("compileJava") { JavaCompile t -> // Tell the compile-command-annotations-processor to write the incremental files // to the COMPILE_COMMAND_INCREMENTAL directory. t.options.compilerArgs += ["-Acompile.command.incremental.output=COMPILE_COMMAND_INCREMENTAL"] t.finalizedBy(tasks.named("copyHotspotCompiler")) } // exclude the COMPILE_COMMAND_INCREMENTAL directory from the generated jar tasks.named("jar") { Jar t -> t.exclude("COMPILE_COMMAND_INCREMENTAL/**") } Gradle will fall back to full compilation without these tweaks, because incremental compilation needs exactly one "element" in the source tree for every output file. Since without these tweaks the single `hotspot_compiler` file would have 0 elements, incremental compilation would not work. compile-command-annotations-1.2.3/src/site/site.xml000066400000000000000000000037511354123505700223500ustar00rootroot00000000000000 UA-2189278-12 org.apache.maven.skins maven-fluido-skin ${maven-fluido-skin.version} nicoulaj/compile-command-annotations right black 716095 users-gray compile-command-annotations-1.2.3/src/test/000077500000000000000000000000001354123505700206675ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/java/000077500000000000000000000000001354123505700216105ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/java/net/000077500000000000000000000000001354123505700223765ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/000077500000000000000000000000001354123505700242025ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/000077500000000000000000000000001354123505700271715ustar00rootroot00000000000000CompileCommandProcessorTest.java000066400000000000000000000071321354123505700354070ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import static com.google.common.collect.ObjectArrays.concat; import static java.util.Arrays.sort; import static net.nicoulaj.compilecommand.CompileCommandProcessor.COMPILE_COMMAND_FILE_PATH_DEFAULT; import static net.nicoulaj.compilecommand.JavaCompilationTester.Report; import static org.apache.commons.io.FilenameUtils.getBaseName; import static org.apache.commons.io.FilenameUtils.getExtension; import static org.assertj.core.api.Assertions.assertThat; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; /** * Unit tests for {@link CompileCommandProcessor}. * * @author Julien Nicoulaud */ public final class CompileCommandProcessorTest { private static final JavaCompilationTester JAVAC = new JavaCompilationTester(); private static final File SAMPLES_SOURCES = new File("src/samples/java/net/nicoulaj/compilecommand"); private static final File SAMPLES_RESOURCES = new File("src/samples/resources/net/nicoulaj/compilecommand"); private static final File TEST_CASES_SOURCES = new File("src/test/java/net/nicoulaj/compilecommand/testcases"); private static final File TEST_CASES_RESOURCES = new File("src/test/resources/net/nicoulaj/compilecommand/testcases"); @DataProvider public Object[][] testcases() throws IOException { return concat(getDataProvider(TEST_CASES_SOURCES, TEST_CASES_RESOURCES), getDataProvider(SAMPLES_SOURCES, SAMPLES_RESOURCES), Object[].class); } private Object[][] getDataProvider(File sourceDir, File resourceDir) throws IOException { final List data = new ArrayList(); final File[] sources = sourceDir.listFiles(); if (sources == null) throw new IllegalArgumentException("No source in " + sourceDir); sort(sources); for (File source : sources) if ("java".equals(getExtension(source.toString()))) if (!"package-info".equals(getBaseName(source.toString()))) data.add(new Object[]{source, new File(resourceDir, getBaseName(source.toString()))}); return data.toArray(new Object[data.size()][]); } @Test(dataProvider = "testcases") public void test(File source, File expected) { final Report compilation = JAVAC.compile(source); assertTrue(compilation.isSuccessful(), "compilation failed"); assertFalse(compilation.hasErrors(), "compilation has errors"); assertFalse(compilation.hasWarnings(), "compilation has warnings"); assertThat(new File(compilation.getClassesDirectory(), COMPILE_COMMAND_FILE_PATH_DEFAULT)).hasContentEqualTo(expected); } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/ITAssert.java000066400000000000000000000154051354123505700315370ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand; import org.apache.commons.io.FileUtils; import java.io.File; import java.nio.charset.Charset; import java.util.Map; /** * Utility for integration test asserts.. *

See {@code src/main/it/projects/.../postbuild.groovy} scripts.

* * @author Julien Nicoulaud * @see * maven-invoker-plugin post-build script invocation */ public final class ITAssert { /** The name of the build log file. */ public static final String BUILD_LOG_FILE = "build.log"; /** The absolute path to the base directory of the test project. */ protected File baseDirectory; /** The absolute path to the local repository used for the Maven invocation on the test project. */ protected File localRepositoryPath; /** The storage of key-value pairs used to pass data from the pre-build hook script to the post-build hook script. */ protected Map context; /** * Build a new {@link ITAssert} instance. * * @param baseDirectory the absolute path to the base directory of the test project.. * @param localRepositoryPath the absolute path to the local repository used for the Maven invocation on the test * project.. * @param context the storage of key-value pairs used to pass data from the pre-build hook script to the * post-build hook script.. * @see * maven-invoker-plugin post-build script invocation */ public ITAssert(File baseDirectory, File localRepositoryPath, Map context) { this.baseDirectory = baseDirectory; this.localRepositoryPath = localRepositoryPath; this.context = context; } /** * Get the contents of the file. * * @param path the path to the file relative to {@link #baseDirectory}. * @return the file content. * @throws Exception if the build log could not be open. */ public String getFileContent(String path) throws Exception { return FileUtils.readFileToString(new File(baseDirectory, path)); } /** * Get the project build log content. * * @return the project build log content. * @throws Exception if the build log could not be open. */ public String getBuildLog() throws Exception { return getFileContent(BUILD_LOG_FILE); } /** * Assert the given file exists and is a file. * * @param path the path to the file relative to {@link #baseDirectory}. * @throws Exception if conditions are not fulfilled. */ public void assertFileExists(String path) throws Exception { if (!new File(baseDirectory, path).isFile()) throw new Exception("The file " + path + " is missing."); } /** * Assert the given file does not exist. * * @param path the path to the file relative to {@link #baseDirectory}. * @throws Exception if conditions are not fulfilled. */ public void assertFileDoesNotExist(String path) throws Exception { if (new File(baseDirectory, path).isFile()) throw new Exception("The file " + path + " exists, but it should not."); } /** * Assert the given file exists and is a non-empty file. * * @param path the path to the file relative to {@link #baseDirectory}. * @throws Exception if conditions are not fulfilled. */ public void assertFileIsNotEmpty(String path) throws Exception { final File file = new File(baseDirectory, path); if (!file.isFile()) throw new Exception("The file " + path + " is missing or not a file."); else if (FileUtils.readFileToString(file).length() == 0) throw new Exception("The file " + path + " is empty."); } /** * Assert the file contains the given search. * * @param path the path to the file relative to {@link #baseDirectory}. * @param search the expression to search in the build log. * @throws Exception if conditions are not fulfilled. */ public void assertFileContains(String path, String search) throws Exception { if (!FileUtils.readFileToString(new File(baseDirectory, path), Charset.defaultCharset()).contains(search)) throw new Exception(path + " does not contain '" + search + "'."); } /** * Assert the project build log contains the given search. * * @param search the expression to search in the build log. * @throws Exception if conditions are not fulfilled. */ public void assertBuildLogContains(String search) throws Exception { assertFileContains(BUILD_LOG_FILE, search); } /** * Assert the file does not contain the given search. * * @param path the path to the file relative to {@link #baseDirectory}. * @param search the expression to search in the build log. * @throws Exception if conditions are not fulfilled. */ public void assertFileDoesNotContain(String path, String search) throws Exception { if (FileUtils.readFileToString(new File(baseDirectory, path), Charset.defaultCharset()).contains(search)) throw new Exception(path + " contains '" + search + "'."); } /** * Assert the project build log does not contain the given search. * * @param search the expression to search in the build log. * @throws Exception if conditions are not fulfilled. */ public void assertBuildLogDoesNotContain(String search) throws Exception { assertFileDoesNotContain(BUILD_LOG_FILE, search); } /** * Delete the given file if it exists. * * @param file path to the file relative to basedir * @throws Exception if conditions are not fulfilled. */ public void deleteIfExists(String file) throws Exception { final File f = new File(baseDirectory, file); if (f.exists() && f.isFile()) f.delete(); } } IncrementalCompileTest.java000066400000000000000000000145451354123505700344000ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import static java.util.Arrays.sort; import static net.nicoulaj.compilecommand.CompileCommandProcessor.COMPILE_COMMAND_FILE_PATH_DEFAULT; import static net.nicoulaj.compilecommand.CompileCommandProcessor.COMPILE_COMMAND_INCREMENTAL_OUTPUT_OPTION; import static net.nicoulaj.compilecommand.JavaCompilationTester.Report; import static org.apache.commons.io.FilenameUtils.getBaseName; import static org.apache.commons.io.FilenameUtils.getExtension; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; public class IncrementalCompileTest { private static final JavaCompilationTester JAVAC = new JavaCompilationTester(); private static final File TEST_CASES_SOURCES = new File("src/test/java/net/nicoulaj/compilecommand/incrementaltests"); private static final File TEST_CASES_RESOURCES = new File("src/test/resources/net/nicoulaj/compilecommand/incrementaltests"); private static final File TEST_CASES_MERGED = new File("src/test/resources/net/nicoulaj/compilecommand/incrementaltests-merged"); private static final String INCREMENTAL_FRAGMENTS = "INCREMENTAL_FRAGMENTS"; @DataProvider public Object[][] testcases() throws IOException { return getDataProvider(TEST_CASES_SOURCES, TEST_CASES_RESOURCES, TEST_CASES_MERGED); } private Object[][] getDataProvider(File sourceDir, File resourceDir, File mergedDir) { final List data = new ArrayList(); final File[] sources = sourceDir.listFiles(); if (sources == null) throw new IllegalArgumentException("No source in " + sourceDir); sort(sources); for (File source : sources) if ("java".equals(getExtension(source.toString()))) if (!"package-info".equals(getBaseName(source.toString()))) data.add(new Object[]{source, new File(resourceDir, getBaseName(source.toString())), new File(mergedDir, getBaseName(source.toString()))}); return data.toArray(new Object[data.size()][]); } @Test(dataProvider = "testcases") public void test(File source, File expected, File expectedMerged) throws IOException { final Report compilation = JAVAC.compile(source, String.format("-A%s=%s", COMPILE_COMMAND_INCREMENTAL_OUTPUT_OPTION, INCREMENTAL_FRAGMENTS)); assertTrue(compilation.isSuccessful(), "compilation failed"); assertFalse(compilation.hasErrors(), "compilation has errors"); assertFalse(compilation.hasWarnings(), "compilation has warnings"); assertFalse(new File(compilation.getClassesDirectory(), COMPILE_COMMAND_FILE_PATH_DEFAULT).exists(), "default output file exists, but must not exist"); File fragmentsDir = new File(compilation.getClassesDirectory(), INCREMENTAL_FRAGMENTS); assertTrue(fragmentsDir.isDirectory(), "incremental fragments output must be a directory"); Map fragments = readFiles(fragmentsDir); Map expectedFragments = readFiles(expected); assertEquals(expectedFragments, fragments); String expectedMerge = readFile(expectedMerged); File hotspotCompilerFile = new File(fragmentsDir.getParent(), "hotspot_compiler"); IncrementalCompilationHelper.mergeIncrementalFiles(fragmentsDir, hotspotCompilerFile); String merged = readFile(hotspotCompilerFile); assertEquals(expectedMerge, merged); } private static Map readFiles(File dir) throws IOException { Map map = new HashMap(); File[] files = dir.listFiles(); for (File file : files) { if (!file.isFile()) continue; String content = readFile(file); map.put(file.getName(), content); } return map; } private static String readFile(File file) throws IOException { byte[] data = new byte[(int) file.length()]; FileInputStream in = new FileInputStream(file); try { for (int p = 0; p < data.length; ) { int rd = in.read(data, p, data.length - p); if (rd < 0) { throw new IOException("EOF reading " + file); } p += rd; } } finally { in.close(); } return new String(data); } @Test(expectedExceptions = { NullPointerException.class }, expectedExceptionsMessageRegExp = "Input directory must not be null") public void testNullDir() throws IOException { IncrementalCompilationHelper.mergeIncrementalFiles(null, new File("f")); } @Test(expectedExceptions = { NullPointerException.class }, expectedExceptionsMessageRegExp = "Output file must not be null") public void testNullFile() throws IOException { IncrementalCompilationHelper.mergeIncrementalFiles(new File("."), null); } @Test(expectedExceptions = { FileNotFoundException.class }, expectedExceptionsMessageRegExp = "Directory for incrementalFiles '.*' does not exist") public void testInvalidDirectory() throws IOException { IncrementalCompilationHelper.mergeIncrementalFiles(new File("does_not_exist"), null); } } JavaCompilationTester.java000066400000000000000000000141451354123505700342310ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand; import javax.tools.*; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.OutputStreamWriter; import java.nio.charset.Charset; import java.util.List; import java.util.Locale; import static com.google.common.collect.Iterables.toArray; import static java.lang.System.nanoTime; import static java.util.Arrays.asList; import static java.util.Collections.singleton; import static javax.tools.Diagnostic.Kind.MANDATORY_WARNING; import static javax.tools.Diagnostic.Kind.WARNING; import static javax.tools.JavaCompiler.CompilationTask; import static javax.tools.StandardLocation.CLASS_OUTPUT; import static javax.tools.StandardLocation.SOURCE_OUTPUT; /** * Java compiler for testing. * * @author Julien Nicoulaud */ public final class JavaCompilationTester { private static final JavaCompiler COMPILER = ToolProvider.getSystemJavaCompiler(); private static final File COMPILATION_OUTPUT_BASE_DIRECTORY = new File("target", "test-compilation"); public Report compile(File source, String... options) { return compile(source.toString(), options); } public Report compile(String source, String... options) { return compile(asList(source), asList(options)); } public Report compile(Iterable sources, Iterable options) { for (String option : options) if (COMPILER.isSupportedOption(option) < 0) throw new IllegalArgumentException("Unsupported option \"" + option + "\""); final DiagnosticCollector collector = new DiagnosticCollector(); final StandardJavaFileManager fileManager = COMPILER.getStandardFileManager(collector, Locale.getDefault(), Charset.defaultCharset()); File outputClasses; File outputSources; try { final File output = new File(COMPILATION_OUTPUT_BASE_DIRECTORY, String.valueOf(nanoTime())); if (!output.mkdirs()) throw new RuntimeException("Failed creating compilation output directory"); outputClasses = new File(output, "classes"); if (!outputClasses.mkdir()) throw new RuntimeException("Failed creating compilation output directory"); fileManager.setLocation(CLASS_OUTPUT, singleton(outputClasses)); outputSources = new File(output, "sources"); if (!outputSources.mkdir()) throw new RuntimeException("Failed creating compilation output directory"); fileManager.setLocation(SOURCE_OUTPUT, singleton(outputClasses)); } catch (IOException e) { throw new RuntimeException("Failed setting up compilation output directories", e); } ByteArrayOutputStream stream = new ByteArrayOutputStream(); OutputStreamWriter out = new OutputStreamWriter(stream); try { final CompilationTask task = COMPILER.getTask(out, fileManager, collector, options, null, fileManager.getJavaFileObjects(toArray(sources, String.class))); final Boolean successful = task.call(); final String stdout = new String(stream.toByteArray()); return new Report(outputClasses, outputSources, successful, collector.getDiagnostics(), stdout); } finally { try { stream.close(); out.close(); } catch (IOException e) { throw new RuntimeException(e); } } } public static final class Report { private final File classesDirectory; private final File sourcesDirectory; private final boolean successful; private final List> diagnostics; private final String stdout; Report(final File classesDirectory, final File sourcesDirectory, final boolean successful, final List> diagnostics, final String stdout) { this.classesDirectory = classesDirectory; this.sourcesDirectory = sourcesDirectory; this.successful = successful; this.diagnostics = diagnostics; this.stdout = stdout; } public File getClassesDirectory() { return classesDirectory; } public File getSourcesDirectory() { return sourcesDirectory; } public boolean isSuccessful() { return successful; } public boolean isFailed() { return !successful; } public boolean hasErrors() { return !successful; } public boolean hasWarnings() { for (Diagnostic diagnostic : diagnostics) if (diagnostic.getKind() == WARNING || diagnostic.getKind() == MANDATORY_WARNING) return true; return false; } public List> getDiagnostics() { return diagnostics; } public String getStdout() { return stdout; } } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/incrementaltests/000077500000000000000000000000001354123505700325555ustar00rootroot00000000000000Test01.java000066400000000000000000000025011354123505700344170ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/incrementaltests/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.incrementaltests; import net.nicoulaj.compilecommand.annotations.DontInline; import net.nicoulaj.compilecommand.annotations.Inline; import net.nicoulaj.compilecommand.annotations.Option; import net.nicoulaj.compilecommand.annotations.Options; import net.nicoulaj.compilecommand.annotations.Quiet; @Quiet public class Test01 { @Inline public void foo() { } @DontInline @Options({"option_a", "option_b"}) public void bar() { } @Inline @Option("some_option") public void abc() { } @Quiet public void quietIsQuiet() { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/000077500000000000000000000000001354123505700311675ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test01.java000066400000000000000000000016121354123505700331120ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Inline; public class Test01 { @Inline public void method01() { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test02.java000066400000000000000000000016031354123505700331130ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Inline; public class Test02 { @Inline public Test02() { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test03.java000066400000000000000000000016211354123505700331140ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Inline; public class Test03 { @Inline public static void method01() { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test04.java000066400000000000000000000016131354123505700331160ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Inline; public class Test04 { @Inline private void method01() { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test05.java000066400000000000000000000016741354123505700331260ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Inline; public class Test05 { private void method01() { } @Inline private void method01(boolean arg1) { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test06.java000066400000000000000000000016741354123505700331270ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Inline; public class Test06 { @Inline private void method01() { } private void method01(boolean arg1) { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test07.java000066400000000000000000000016641354123505700331270ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Inline; import java.util.List; public class Test07 { @Inline private void method01(List arg1) { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test08.java000066400000000000000000000017571354123505700331330ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Inline; import java.io.Serializable; import java.util.List; public class Test08 { @Inline private void method01(List arg1) { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test09.java000066400000000000000000000017121354123505700331230ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Inline; import java.io.Serializable; public class Test09 { @Inline private void method01(T[] arg1) { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test10.java000066400000000000000000000017101354123505700331110ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Inline; import java.util.List; public class Test10 { @Inline private double method01(List arg1) { return 0; } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test11.java000066400000000000000000000017531354123505700331210ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Inline; import java.io.Serializable; import java.util.List; public class Test11 { @Inline private Serializable method01(List arg1) { return 0; } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test12.java000066400000000000000000000022351354123505700331160ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Inline; public class Test12 { @Inline private void method01(boolean arg1, short arg2, int arg3, long arg4, float arg5, double arg6, char arg7, byte arg8) { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test13.java000066400000000000000000000022461354123505700331210ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Inline; public class Test13 { @Inline private void method01(Boolean arg1, Short arg2, Integer arg3, Long arg4, Float arg5, Double arg6, Character arg7, Byte arg8) { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test14.java000066400000000000000000000016101354123505700331140ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Break; public class Test14 { @Break public void method01() { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test15.java000066400000000000000000000016241354123505700331220ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.CompileOnly; public class Test15 { @CompileOnly public void method01() { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test16.java000066400000000000000000000016221354123505700331210ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.DontInline; public class Test16 { @DontInline public void method01() { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test17.java000066400000000000000000000016141354123505700331230ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Exclude; public class Test17 { @Exclude public void method01() { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test18.java000066400000000000000000000016041354123505700331230ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Log; public class Test18 { @Log public void method01() { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test19.java000066400000000000000000000016371354123505700331320ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Option; public class Test19 { @Option("UseSuperWord=true") public void method01() { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test20.java000066400000000000000000000017601354123505700331170ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Options; public class Test20 { @Options({"UseSuperWord=true", "PrintIntrinsics=true", "EliminateAutoBox=true"}) public void method01() { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test21.java000066400000000000000000000017601354123505700331200ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Options; public class Test21 { @Options({"UseSuperWord=true", "PrintIntrinsics=true", "EliminateAutoBox=true"}) public void method01() { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test22.java000066400000000000000000000016101354123505700331130ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Print; public class Test22 { @Print public void method01() { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test23.java000066400000000000000000000016101354123505700331140ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Quiet; public class Test23 { @Quiet public void method01() { } } compile-command-annotations-1.2.3/src/test/java/net/nicoulaj/compilecommand/testcases/Test24.java000066400000000000000000000016041354123505700331200ustar00rootroot00000000000000/* * Hotspot compile command annotations - http://compile-command-annotations.nicoulaj.net * Copyright © 2014-2019 Hotspot compile command annotations contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.nicoulaj.compilecommand.testcases; import net.nicoulaj.compilecommand.annotations.Quiet; @Quiet public class Test24 { public void method01() { } } compile-command-annotations-1.2.3/src/test/resources/000077500000000000000000000000001354123505700227015ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/resources/net/000077500000000000000000000000001354123505700234675ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/000077500000000000000000000000001354123505700252735ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/000077500000000000000000000000001354123505700302625ustar00rootroot00000000000000incrementaltests-merged/000077500000000000000000000000001354123505700350305ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommandTest01000066400000000000000000000007001354123505700360300ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/incrementaltests-mergedquiet dontinline net.nicoulaj.compilecommand.incrementaltests.Test01::bar ()V inline net.nicoulaj.compilecommand.incrementaltests.Test01::abc ()V inline net.nicoulaj.compilecommand.incrementaltests.Test01::foo ()V option net.nicoulaj.compilecommand.incrementaltests.Test01::abc ()V some_option option net.nicoulaj.compilecommand.incrementaltests.Test01::bar ()V option_a option net.nicoulaj.compilecommand.incrementaltests.Test01::bar ()V option_b compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/incrementaltests/000077500000000000000000000000001354123505700336465ustar00rootroot00000000000000Test01/000077500000000000000000000000001354123505700346475ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/incrementaltestsdontinline-net.nicoulaj.compilecommand.incrementaltests.Test013a3abar202829V000066400000000000000000000001101354123505700527160ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/incrementaltests/Test01dontinline net.nicoulaj.compilecommand.incrementaltests.Test01::bar ()V inline-net.nicoulaj.compilecommand.incrementaltests.Test013a3aabc202829V000066400000000000000000000001041354123505700520150ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/incrementaltests/Test01inline net.nicoulaj.compilecommand.incrementaltests.Test01::abc ()V inline-net.nicoulaj.compilecommand.incrementaltests.Test013a3afoo202829V000066400000000000000000000001041354123505700520530ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/incrementaltests/Test01inline net.nicoulaj.compilecommand.incrementaltests.Test01::foo ()V option-net.nicoulaj.compilecommand.incrementaltests.Test013a3aabc202829V20some_option000066400000000000000000000001201354123505700544630ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/incrementaltests/Test01option net.nicoulaj.compilecommand.incrementaltests.Test01::abc ()V some_option option-net.nicoulaj.compilecommand.incrementaltests.Test013a3abar202829V20option_a000066400000000000000000000001151354123505700537630ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/incrementaltests/Test01option net.nicoulaj.compilecommand.incrementaltests.Test01::bar ()V option_a option-net.nicoulaj.compilecommand.incrementaltests.Test013a3abar202829V20option_b000066400000000000000000000001151354123505700537640ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/incrementaltests/Test01option net.nicoulaj.compilecommand.incrementaltests.Test01::bar ()V option_b quiet-net.nicoulaj.compilecommand.incrementaltests.Test01000066400000000000000000000000061354123505700477340ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/incrementaltests/Test01quiet quiet-net.nicoulaj.compilecommand.incrementaltests.Test013a3aquietIsQuiet202829V000066400000000000000000000000061354123505700535750ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/incrementaltests/Test01quiet compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/000077500000000000000000000000001354123505700322605ustar00rootroot00000000000000compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test01000066400000000000000000000001021354123505700332540ustar00rootroot00000000000000inline net.nicoulaj.compilecommand.testcases.Test01::method01 ()V compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test02000066400000000000000000000001001354123505700332530ustar00rootroot00000000000000inline net.nicoulaj.compilecommand.testcases.Test02:: ()V compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test03000066400000000000000000000001021354123505700332560ustar00rootroot00000000000000inline net.nicoulaj.compilecommand.testcases.Test03::method01 ()V compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test04000066400000000000000000000001021354123505700332570ustar00rootroot00000000000000inline net.nicoulaj.compilecommand.testcases.Test04::method01 ()V compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test05000066400000000000000000000001031354123505700332610ustar00rootroot00000000000000inline net.nicoulaj.compilecommand.testcases.Test05::method01 (Z)V compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test06000066400000000000000000000001021354123505700332610ustar00rootroot00000000000000inline net.nicoulaj.compilecommand.testcases.Test06::method01 ()V compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test07000066400000000000000000000001221354123505700332640ustar00rootroot00000000000000inline net.nicoulaj.compilecommand.testcases.Test07::method01 (Ljava.util.List;)V compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test08000066400000000000000000000001221354123505700332650ustar00rootroot00000000000000inline net.nicoulaj.compilecommand.testcases.Test08::method01 (Ljava.util.List;)V compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test09000066400000000000000000000001311354123505700332660ustar00rootroot00000000000000inline net.nicoulaj.compilecommand.testcases.Test09::method01 ([Ljava.io.Serializable;)V compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test10000066400000000000000000000001221354123505700332560ustar00rootroot00000000000000inline net.nicoulaj.compilecommand.testcases.Test10::method01 (Ljava.util.List;)D compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test11000066400000000000000000000001471354123505700332660ustar00rootroot00000000000000inline net.nicoulaj.compilecommand.testcases.Test11::method01 (Ljava.util.List;)Ljava.io.Serializable; compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test12000066400000000000000000000001121354123505700332570ustar00rootroot00000000000000inline net.nicoulaj.compilecommand.testcases.Test12::method01 (ZSIJFDCB)V compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test13000066400000000000000000000003211354123505700332620ustar00rootroot00000000000000inline net.nicoulaj.compilecommand.testcases.Test13::method01 (Ljava.lang.Boolean;Ljava.lang.Short;Ljava.lang.Integer;Ljava.lang.Long;Ljava.lang.Float;Ljava.lang.Double;Ljava.lang.Character;Ljava.lang.Byte;)V compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test14000066400000000000000000000001001354123505700332560ustar00rootroot00000000000000break net.nicoulaj.compilecommand.testcases.Test14::method01 ()Vcompile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test15000066400000000000000000000001061354123505700332650ustar00rootroot00000000000000compileonly net.nicoulaj.compilecommand.testcases.Test15::method01 ()Vcompile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test16000066400000000000000000000001051354123505700332650ustar00rootroot00000000000000dontinline net.nicoulaj.compilecommand.testcases.Test16::method01 ()Vcompile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test17000066400000000000000000000001021354123505700332630ustar00rootroot00000000000000exclude net.nicoulaj.compilecommand.testcases.Test17::method01 ()Vcompile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test18000066400000000000000000000000761354123505700332760ustar00rootroot00000000000000log net.nicoulaj.compilecommand.testcases.Test18::method01 ()Vcompile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test19000066400000000000000000000001231354123505700332700ustar00rootroot00000000000000option net.nicoulaj.compilecommand.testcases.Test19::method01 ()V UseSuperWord=truecompile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test20000066400000000000000000000004031354123505700332610ustar00rootroot00000000000000option net.nicoulaj.compilecommand.testcases.Test20::method01 ()V EliminateAutoBox=true option net.nicoulaj.compilecommand.testcases.Test20::method01 ()V PrintIntrinsics=true option net.nicoulaj.compilecommand.testcases.Test20::method01 ()V UseSuperWord=true compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test21000066400000000000000000000004031354123505700332620ustar00rootroot00000000000000option net.nicoulaj.compilecommand.testcases.Test21::method01 ()V EliminateAutoBox=true option net.nicoulaj.compilecommand.testcases.Test21::method01 ()V PrintIntrinsics=true option net.nicoulaj.compilecommand.testcases.Test21::method01 ()V UseSuperWord=true compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test22000066400000000000000000000001011354123505700332560ustar00rootroot00000000000000print net.nicoulaj.compilecommand.testcases.Test22::method01 ()V compile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test23000066400000000000000000000000051354123505700332620ustar00rootroot00000000000000quietcompile-command-annotations-1.2.3/src/test/resources/net/nicoulaj/compilecommand/testcases/Test24000066400000000000000000000000051354123505700332630ustar00rootroot00000000000000quiet