Java local variable table processing. More...
#include "java_bytecode_convert_method_class.h"#include <util/arith_tools.h>#include <util/invariant.h>#include <util/string2int.h>#include <util/symbol_table_base.h>#include "java_types.h"#include <iostream>Go to the source code of this file.
predecessor_map with a graph from local variable table entries to their predecessors (table entries which may flow together and thus may be considered the same live range). Java local variable table processing.
Definition in file java_local_variable_table.cpp.
Definition at line 135 of file java_local_variable_table.cpp.
Definition at line 129 of file java_local_variable_table.cpp.
Definition at line 137 of file java_local_variable_table.cpp.
Definition at line 133 of file java_local_variable_table.cpp.
Definition at line 131 of file java_local_variable_table.cpp.
Definition at line 159 of file java_local_variable_table.cpp.
See above.
Removes zero-size entries from vars_with_holes.
Definition at line 712 of file java_local_variable_table.cpp.
See above.
start found in predecessor_map Definition at line 185 of file java_local_variable_table.cpp.
Used to find out where to put a variable declaration that subsumes several variable live ranges.
Definition at line 448 of file java_local_variable_table.cpp.
See above.
inst is any form of store instruction targeting slot slotidx Definition at line 204 of file java_local_variable_table.cpp.
Definition at line 141 of file java_local_variable_table.cpp.
Definition at line 147 of file java_local_variable_table.cpp.
See above.
var's live range (inclusive) var's live range (exclusive) var, unless it would be of zero size Definition at line 239 of file java_local_variable_table.cpp.
See above.
merge_vars entries do not cover a contiguous address range, beginning the combined live range at the common dominator of all merge_vars. Definition at line 539 of file java_local_variable_table.cpp.
See above.
merge_into, indicating where gaps in the variable's live range fall. For example, if the declaration happens at address 10 and the entries in merge_into have live ranges [(20-30), (40-50)] then holes will be added at (10-20) and (30-40). Definition at line 507 of file java_local_variable_table.cpp.
Populates the predecessor_map with a graph from local variable table entries to their predecessors (table entries which may flow together and thus may be considered the same live range).
Usually a live variable range begins with a store instruction initializing the relevant local variable slot, but instead of or in addition to this, control flow edges may exist from bytecode addresses that fall under a table entry which differs (or which fall under no table entry at all), but which has the same variable name and type descriptor. This indicates a split live range, and will be recorded in the predecessor map.
Definition at line 303 of file java_local_variable_table.cpp.
See above.
live_variable_at_address[addr] yields the unique table entry covering that address. Asserts if entries overlap. Definition at line 258 of file java_local_variable_table.cpp.
Walk a vector, a contiguous block of entries with equal slot index at a time.
it1 and it2 are iterators into the same vector, of which itend is the end() iterator. it1 and it2 are moved to delimit a sequence of variable table entries with slot index equal to it2->var.index on entering this function, or to both equal itend if it2==itend on entry.
Definition at line 667 of file java_local_variable_table.cpp.