IP Library Granted Patent US 12,536,005
Granted Patent B2
US 12,536,005 · App. 18/168,161 · Granted Jan 27, 2026

Transforming a Java program using a symbolic description language model

Inventor: Paul D. Sandoz (Campbell, CA)
Assignee: Oracle International Corporation
G06F8/443
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,536,005
App. No.
18/168,161
Granted
Jan 27, 2026
Kind
B2
Abstract

Techniques for transforming Java source code using a symbolic description language are disclosed, including: obtaining a set of Java source code corresponding to a Java program; generating a symbolic description language (SDL) model of the set of Java source code; generating, based on the SDL model, a transformed program including at least one transformation relative to the Java program.

Claims (67)

1 . One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause performance of operations comprising:

obtaining a set of Java source code corresponding to a Java program;

generating a symbolic description language (SDL) model of the set of Java source code, wherein the SDL model represents the set of Java source code using a schema comprising:

an operation comprising a name, zero or more operands, an operation result, zero or more attributes, and a body;

the body comprising one or more blocks; and

each block in the one or more blocks comprising, respectively, one or more respective operations;

generating, based on the SDL model, a transformed program comprising at least one transformation relative to the Java program, wherein generating the transformed program comprises one or more of:

a) iterating, by a machine learning model, over transformations of the SDL model until a threshold condition is satisfied; or

b) compiling, by a compiler configured to generate executable code based on SDL models, the transformed program; and

performing, at runtime by a runtime environment configured to execute the transformed program, a reflection operation using at least part of the SDL model.

2 . The one or more non-transitory computer-readable media of claim 1 , wherein generating the transformed program comprises:

generating, based on the SDL model, a differentiated SDL model;

generating, based on the differentiated SDL model, a differentiated program.

3 . The one or more non-transitory computer-readable media of claim 1 , wherein generating the transformed program comprises:

generating, based on the SDL model, an optimized SDL model;

generating, based on the optimized SDL model, an optimized program.

4 . The one or more non-transitory computer-readable media of claim 1 , wherein generating the transformed program comprises:

generating, based on the SDL model, a program that (a) performs one or more functions defined in the set of Java source code and (b) is written in a language other than Java.

5 . The one or more non-transitory computer-readable media of claim 4 , wherein the language other than Java is a domain-specific language.

6 . The one or more non-transitory computer-readable media of claim 1 , the operations further comprising:

executing the transformed program.

7 . A system comprising: at least one device comprising one or more hardware processors, the system being configured to perform operations comprising:

obtaining a set of Java source code corresponding to a Java program;

generating a symbolic description language (SDL) model of the set of Java source code, wherein the SDL model represents the set of Java source code using a schema comprising:

an operation comprising a name, zero or more operands, an operation result, zero or more attributes, and a body;

the body comprising one or more blocks; and

each block in the one or more blocks comprising, respectively, one or more respective operations;

generating, based on the SDL model, a transformed program comprising at least one transformation relative to the Java program, wherein generating the transformed program comprises one or more of:

a) iterating, by a machine learning model, over transformations of the SDL model until a threshold condition is satisfied; or

b) compiling, by a compiler configured to generate executable code based on SDL models, the transformed program; and

performing, at runtime by a runtime environment configured to execute the transformed program, a reflection operation using at least part of the SDL model.

8 . The system of claim 7 , wherein generating the transformed program comprises:

generating, based on the SDL model, a differentiated SDL model;

generating, based on the differentiated SDL model, a differentiated program.

9 . The system of claim 7 , wherein generating the transformed program comprises:

generating, based on the SDL model, an optimized SDL model;

generating, based on the optimized SDL model, an optimized program.

10 . The system of claim 7 , wherein generating the transformed program comprises: generating, based on the SDL model, a program that (a) performs one or more functions defined in the set of Java source code and (b) is written in a language other than Java.

11 . A method comprising:

obtaining a set of Java source code corresponding to a Java program;

generating a symbolic description language (SDL) model of the set of Java source code, wherein the SDL model represents the set of Java source code using a schema comprising:

an operation comprising a name, zero or more operands, an operation result, zero or more attributes, and a body;

the body comprising one or more blocks; and

each block in the one or more blocks comprising, respectively, one or more respective operations;

generating, based on the SDL model, a transformed program comprising at least one transformation relative to the Java program, wherein generating the transformed program comprises one or more of:

a) iterating, by a machine learning model, over transformations of the SDL model until a threshold condition is satisfied; or

b) compiling, by a compiler configured to generate executable code based on SDL models, the transformed program;

performing, at runtime by a runtime environment configured to execute the transformed program, a reflection operation using at least part of the SDL model; and

wherein the method is performed by at least one device comprising one or more hardware processors.

12 . The method of claim 11 , wherein the transformed program is a transformed Java program.

13 . The method of claim 11 , wherein generating the transformed program comprises:

generating, based on the SDL model, a differentiated SDL model;

generating, based on the differentiated SDL model, a differentiated program.

14 . The method of claim 11 , wherein generating the transformed program comprises:

generating, based on the SDL model, an optimized SDL model;

generating, based on the optimized SDL model, an optimized program.

15 . The method of claim 11 , wherein generating the transformed program comprises:

generating, based on the SDL model, a program that (a) performs one or more functions defined in the set of Java source code and (b) is written in a language other than Java.

16 . The method of claim 15 , wherein the language other than Java is a domain-specific language.

17 . The method of claim 11 , wherein iterating, by the machine learning model, over transformations of the SDL model until the threshold condition is satisfied comprises:

executing, by the machine learning model, a gradient descent algorithm that starts with the SDL model and iterates over the transformations of the SDL model until the threshold condition is satisfied.

18 . The method of claim 11 , further comprising:

extracting an SDL representation of the machine learning model from the SDL model;

generating the machine learning model based on the SDL representation of the machine learning model.

19 . The method of claim 11 , wherein compiling the transformed program comprises:

generating a lowered SDL model, at least by transforming an SDL representation of a high-level operation into a plurality of SDL representations of lower-level operations;

compiling the lowered SDL model.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 16, 2023
From: SANDOZ, PAUL D.
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 062723/0456 →
Continuity (1)
Related Publication 20240272884A1 · Aug 15, 2024
References Cited (35)
US 5784553A · Kolawa et al. · 1998 [cited by applicant]
US 9015680B1 · Shropshire · 2015 [cited by applicant]
US 10853041B2 · Tsingauz et al. · 2020 [cited by applicant]
US 20050193359A1 · Gupta et al. · 2005 [cited by applicant]
US 20070006191A1 · Franz et al. · 2007 [cited by applicant]
US 20070162246A1 · Barcia · 2007 [cited by applicant]
US 20080222616A1 · Cheng · 2008 [cited by examiner]
US 20120079465A1 · Harvey · 2012 [cited by applicant]
US 20130198727A1 · Darcy et al. · 2013 [cited by applicant]
US 20130247017A1 · Bernecker · 2013 [cited by applicant]
US 20140325489A1 · Yoshida · 2014 [cited by applicant]
US 20160110176A1 · Fink · 2016 [cited by examiner]
US 20160357533A1 · De · 2016 [cited by examiner]
US 20170139690A1 · Pesarese · 2017 [cited by examiner]
US 20180143814A1 · Bucuvalas · 2018 [cited by examiner]
US 20190196939A1 · Lengauer et al. · 2019 [cited by applicant]
US 20210240456A1 · Dwars et al. · 2021 [cited by applicant]
US 20220067538A1 · Choudhary · 2022 [cited by examiner]
US 20220197617A1 · Schrammel · 2022 [cited by applicant]
US 20230401069A1 · Chu · 2023 [cited by applicant]
Innes, M. (2018). Don't unroll adjoint: Differentiating SSA-form programs. arXiv preprint arXiv:1810.07951. (Year: 2018). [cited by examiner]
Sampson, A. (2022). “Lesson 6: Static Single Assignment”. (Year: 2022). [cited by examiner]
Amme, W., Ronne, J. V., & Franz, M. (2007). SSA-based mobile code: Implementation and empirical evaluation. ACM Transactions on Architecture and Code Optimization (TACO), 4(2), 13-es. (Year: 2007). [cited by examiner]
Li, Y., Tan, T., & Xue, J. (2019). Understanding and analyzing java reflection. ACM Transactions on Software Engineering and Methodology (TOSEM), 28(2), 1-50. (Year: 2019). [cited by examiner]
Farooq, U. (2018), “Neural Machine Translation with Code”, Medium.com. (Year: 2018). [cited by examiner]
Bondhugula U., “High Performance Code Generation in MLIR: An Early Case Study with GEMM”, Mar. 1, 2020, 23 Pages. [cited by applicant]
Braione et al., “JBSE: a symbolic executor for Java programs with complex heap inputs”, FSE 2016: Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, Nov. 2016, pp. 1… [cited by applicant]
Jolly et al., “Symbolic Script Programming for Java”, Oct. 26, 2018, 16 Pages. [cited by applicant]
Lattner et al., “MLIR: A Compiler Infrastructure for the End of Moore's Law”, Mar. 1, 2020, 21 Pages. [cited by applicant]
Otto C., “Java Program Analysis by Symbolic Execution”, Department of Computer Science, Mar. 2015, pp. 224. [cited by applicant]
P?as?areanu et al., “Symbolic PathFinder: symbolic execution of Java bytecode”, ASE '10: Proceedings of the 25th IEEE/ACM International Conference on Automated Software Engineering, Sep. 2010, pp. 179-180. [cited by applicant]
Dockins et al., “Constructing Semantic Models of Programs with the Software Analysis Workbench”, Jul. 2016, p. 18. [cited by applicant]
Rodriguez-Prieto et al., “An Efficient and Scalable Platform for Java Source Code Analysis Using Overlaid Graph Representations”, IEEE Access, Apr. 29, 2020, vol. 8, pp. 72239-72260. [cited by applicant]
Lattner et al., “MLIR: Scaling Compiler Infrastructure for Domain Specific Computation”, 2021 IEEE/ACM International Symposium on Code Generation and Optimization, 2021, pp. 2-14. [cited by applicant]
Zhao et al., “Design and implementation of DeepDSL: A DSL for deep learning”, Computer Languages, Systems & Structures, vol. 54, Apr. 25, 2018, pp. 39-70. [cited by applicant]