Changes between Version 1 and Version 2 of Para


Ignore:
Timestamp:
02/06/12 22:51:14 (12 years ago)
Author:
binoy
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Para

    v1 v2  
    33First, HydraVM accepts program bytecode and converts it to architecture-specific machine code. We consider the program as a set of \emph{basic blocks}, where each basic block is a sequence of non-branching instructions that ends either with a branch instruction (conditional or non-conditional) or a return. Thus, any program can be represented by a graph in which nodes represent basic blocks and edges represent the program control flow -- i.e., an execution graph. Basic blocks can be determined at compile-time. However, our main goal is to determine the context and frequency of reachability of the basic blocks -- i.e., when the code is revisited through execution.
    44To collect this information, we modify Jikes RVM's baseline compiler to insert additional instructions (in the program bytecode) at the edges of the basic blocks (e.g., branching, conditional, return statements) that detect whenever a basic block is reached.
    5 Additionally, we insert instructions into the bytecode to 1) statically detect the set of variables accessed by the basic blocks, and 2) mark basic blocks with input/output operations, as they need special handling in program reconstruction. This code modification doesn't affect the behavior of the original program. We call this version of the modified program, \emph{profiled bytecode}.
     5Additionally, we insert instructions into the bytecode to 1) statically detect the set of variables accessed by the basic blocks, and 2) mark basic blocks with input/output operations, as they need special handling in program reconstruction. This code modification doesn't affect the behavior of the original program. We call this version of the modified program, profiled bytecode.
    66
    77{{{