Figure 1 - uploaded by Michael Orlov
Content may be subject to copyright.
Java source code is first compiled to bytecode, and subsequently interpreted or executed as native code. Heavy optimizations are reserved for the JIT-compilation phase. 

Java source code is first compiled to bytecode, and subsequently interpreted or executed as native code. Heavy optimizations are reserved for the JIT-compilation phase. 

Source publication
Conference Paper
Full-text available
This paper proposes to explore the following question: can software evolution systems like FINCH, that evolve linear representations originating from a higher-level structural language, take advantage of building blocks inherent to that original language?

Contexts in source publication

Context 1
... has a simple yet complete structure, targeted at static correctness verification and later inter- pretation with optimized just-in-time compilation to native code by the JVM. Figure 1 illustrates this code execution pipeline. ...
Context 2
... bottom line is that bytecode is a sequence of assembly-like instructions that operate on an abstract model of a typed stack machine that also supports typed registers -an array containing arguments and local variables. So, for instance, the bytecode sequence iload_1 / iconst_1 / isub in Figure 1 pushes variable number 1 of type int onto the stack (the variable n, as variable number 0 is the object containing the method), pushes int constant equal to 1 onto the stack, and then subtracts the two values, popping them from the stack and pushing back the result n − 1. ...

Similar publications

Preprint
Full-text available
We study Virasoro minimal-model 4-point conformal blocks on the sphere and 0-point conformal blocks on the torus (the Virasoro characters), as solutions of Zamolodchikov-type recursion relations. In particular, we study the singularities due to null states in minimal-model representations, that appear in the intermediate steps of solving the recurs...
Conference Paper
Full-text available
Increasing energy literacy has been identified as an important topic in order to help people understand their energy use and thereby enabling them to reduce their energy use. We have developed a tangible interface for helping people learn about energy by using wooden blocks as representation of several common cases of energy use. These are then pla...
Article
The success of humans in novel environments is partially supported by our ability to implement new task procedures via instructions. This complex skill has been associated with the activity of control-related brain areas. Current models link fronto-parietal and cingulo-opercular networks with transient and sustained modes of cognitive control, base...
Preprint
Full-text available
Human's success in novel environments is supported by our ability to implement new task procedures via instructions. This complex skill has been associated with the activity of control-related brain areas. Current models link fronto-parietal and a cingulo-opercular networks with transient and sustained modes of cognitive control, based on observati...

Citations

... Automated Program Repair (APR) is a mature research area. Three recent surveys [23,24,48] [57,58] on Java bytecode. Since Java bytecode is interpreted by JVM and not aligned with PRD, we omit their discussion. ...
Preprint
Full-text available
When vulnerabilities are discovered after software is deployed, source code is often unavailable, and binary patching may be required to mitigate the vulnerability. However, manually patching binaries is time-consuming, requires significant expertise, and does not scale to the rate at which new vulnerabilities are discovered. To address these problems, we introduce Partially Recompilable Decompilation (PRD), which extracts and decompiles suspect binary functions to source where they can be patched or analyzed, applies transformations to enable recompilation of these functions (partial recompilation), then employs binary rewriting techniques to create a patched binary. Although decompilation and recompilation do not universally apply, PRD's fault localization identifies a function subset that is small enough to admit decompilation and large enough to address many vulnerabilities. Our approach succeeds because decompilation is limited to a few functions and lifting facilitates analysis and repair. To demonstrate the scalability of PRD, we evaluate it in the context of a fully automated end-to-end scenario that relies on source-level Automated Program Repair (APR) methods to mitigate the vulnerabilities. We also evaluate PRD in the context of human-generated source-level repairs. In the end-to-end experiment, PRD produced test-equivalent binaries in 84% of cases; and the patched binaries incur no significant run-time overhead. When combined with APR tools and evaluated on the DARPA Cyber Grand Challenge (CGC) benchmarks, PRD achieved similar success rates as the winning CGC entries, while presenting repairs as source-level patches which can be reviewed by humans; In some cases, PRD finds higher-quality mitigations than those produced by top CGC teams. We also demonstrate that PRD successfully extends to real-world binaries and binaries that are produced from languages other than C.
... Genetic Improvement. Genetic improvement has been applied to source code [9,11], abstract syntax trees [5,12,13], intermediate compiled code forms such as Java bytecode [14], and compiled machine code [15]. It is unclear whether any particular level of operation across this spectrum has quantitative benefits (in terms of the resulting program) over any other level, though in qualitative terms the modification of source code may have benefits in human legibility (and verification) of genetic modifications. ...
Conference Paper
Emergent software systems take a step towards tackling the ever-increasing complexity of modern software, by having systems self-assemble from a library of building blocks, and then continually re-assemble themselves from alternative building blocks to learn which compositions of behaviour work best in each deployment environment. One of the key challenges in emergent systems is populating the library of building blocks, and particularly a set of alternative implementations of particular building blocks, which form the runtime search space of optimal behaviour. We present initial work in using a fusion of genetic improvement and genetic synthesis to automatically populate a divergent set of implementations of the same functionality, allowing emergent systems to explore new behavioural alternatives without human input. Our early results indicate this approach is able to successfully yield useful divergent implementations of building blocks which are more suited than any existing alternative for particular operating conditions.