[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