[code-reflection] RFR: New example suite for code reflection
Juan Fumero
duke at openjdk.org
Fri Aug 8 15:04:36 UTC 2025
On Fri, 8 Aug 2025 14:38:13 GMT, Paul Sandoz <psandoz at openjdk.org> wrote:
>> New example suite for code reflection. It includes two programs that illustrate different functionality of the code reflection API.
>>
>> ### How to build?
>>
>> This module is built using the code-reflection fork of OpenJDK. Then, update the `JAVA_HOME` to point to the code-reflection port, and compile with maven. In detail:
>>
>> #### 1. Build Babylon JDK
>>
>> We need to use the JDK build that enables the code reflection API (Babylon).
>>
>>
>> git clone https://github.com/openjdk/babylon
>> cd babylon
>> bash configure --with-boot-jdk=${JAVA_HOME}
>>
>>
>> Then, we use the built JDK as `JAVA_HOME`
>>
>>
>> export JAVA_HOME=/$HOME/repos/babylon/build/macosx-aarch64-server-release/jdk/
>> export PATH=$JAVA_HOME/bin:$PATH
>>
>>
>> #### 2. Build the example suite
>>
>>
>> mvn clean package
>>
>>
>> #### 3. Run the examples
>>
>> ##### Run HelloCodeReflection
>>
>>
>> java --enable-preview -cp target/crsamples-1.0-SNAPSHOT.jar oracle.code.samples.HelloCodeReflection
>>
>>
>> ##### Run MathOptimizer
>>
>>
>> java --enable-preview -cp target/crsamples-1.0-SNAPSHOT.jar oracle.code.samples.MathOptimizer
>>
>>
>> More example to appear in this module.
>
> cr-examples/samples/src/main/java/oracle/code/samples/MathOptimizer.java line 87:
>
>> 85:
>> 86: // if pow(x, 2) then substitute for this function
>> 87: private static double functionMult(double x) {
>
> A more complex example to consider later after this PR would be to make these methods reflectable, and then you can inline these methods into the transformed model so `Math.pow` is substituted with direct expressions.
This looks a nice follow up example. I will take a look after this PR.
-------------
PR Review Comment: https://git.openjdk.org/babylon/pull/513#discussion_r2263222271
More information about the babylon-dev
mailing list