|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
ObjectPpt
PptTopLevel
public class PptTopLevel
All information about a single program point. A Ppt may also represent just part of the data: see PptConditional.
PptTopLevel doesn't do any direct computation, instead deferring that to its views that are slices and that actually contain the invariants.
The data layout is as follows:
| Nested Class Summary | |
|---|---|
class |
PptTopLevel.CondIterator
Iterator for all of the conditional ppts. |
static class |
PptTopLevel.PptFlags
Ppt attributes (specified in decl records) |
static class |
PptTopLevel.PptType
Possible types of program points. |
static interface |
PptTopLevel.SimplifyInclusionTester
Interface used by mark_implied_via_simplify to determine what invariants should be considered during the logical redundancy tests. |
static class |
PptTopLevel.Stats
Stores various statistics about a ppt. |
static class |
PptTopLevel.ViewsIteratorIterator
An iterator whose elements are themselves iterators that return invariants. |
| Nested classes/interfaces inherited from class Ppt |
|---|
Ppt.NameComparator |
| Field Summary | |
|---|---|
int |
bb_length
Length of basic block (bytes) |
List<PptRelation> |
children
All children relations in the variable/ppt hierarchy. |
PptCombined |
combined_ppt
Combined ppt that should be processed when this ppt is encountered. |
boolean |
combined_ppts_init
True if this basic block has been combined with other basic blocks to form combined program points. |
boolean |
combined_subsumed
True if this ppt is subsumed by combined_ppt. |
PptTopLevel |
combined_subsumed_by
The ppt whose combined ppt includes this one. |
DynamicConstants |
constants
List of constant variables. |
static Logger |
debug
Main debug tracer. |
static SimpleLog |
debug_varinfo
|
static Logger |
debugAddImplications
Debug tracer for addImplications. |
static Logger |
debugConditional
Debug tracer for adding and processing conditional ppts. |
static Logger |
debugEqualTo
Debug tracer for equalTo checks. |
static Logger |
debugFlow
Debug tracer for data flow. |
static Logger |
debugInstantiate
Debug tracer for instantiated slices. |
static Logger |
debugMerge
Debug tracer for up-merging equality sets. |
static Logger |
debugNISStats
Debug tracer for NIS suppression statistics |
static Logger |
debugTimeMerge
Debug tracer for timing merges. |
static boolean |
dkconfig_pairwise_implications
Boolean. |
static boolean |
dkconfig_remove_merged_invs
Remove invariants at lower program points when a matching invariant is created at a higher program point. |
PptSliceEquality |
equality_view
Holds Equality invariants. |
static boolean |
first_pass_with_sample
Boolean. |
EnumSet<PptTopLevel.PptFlags> |
flags
Attributes of this ppt |
String |
function_id
Identifier of the function (for basic blocks) |
static Comparator<Invariant> |
icfp
|
boolean |
in_merge
|
int |
instantiated_inv_cnt
Number of invariants after equality set processing for the last sample. |
int |
instantiated_slice_cnt
Number of slices after equality set processing for the last sample. |
boolean |
invariants_merged
Flag that indicates whether or not invariants have been merged from all of this ppts children to form the invariants here. |
boolean |
invariants_removed
Flag that indicates whether or not invariants that are duplicated at the parent have been removed.. |
PptSlice0 |
joiner_view
|
ValueTuple |
last_values
The last set of values for this program point. |
String |
name
|
int |
num_declvars
|
int |
num_orig_vars
|
int |
num_static_constant_vars
|
int |
num_tracevars
|
List<FileIO.ParentRelation> |
parent_relations
List of parent relations in the variable/ppt hierarchy as specified in the declaration record. |
List<PptRelation> |
parents
All parent relations in the variable/ppt hierarchy. |
PptName |
ppt_name
|
List<String> |
ppt_successors
List of successor program point names. |
List<PptTopLevel> |
predecessors
List of predecesor program points. |
Set<Invariant> |
redundant_invs
Redundant invariants, except for Equality invariants. |
Set<VarInfo> |
redundant_invs_equality
The canonical VarInfo for the equality. |
ArrayList<PptSplitter> |
splitters
List of all of the splitters for this ppt. |
PptTopLevel.PptType |
type
Type of this program point |
| Fields inherited from class Ppt |
|---|
emptyInvList, var_infos |
| Constructor Summary | |
|---|---|
PptTopLevel(String name,
PptTopLevel.PptType type,
List<FileIO.ParentRelation> parents,
EnumSet<PptTopLevel.PptFlags> flags,
List<String> ppt_successors,
String function_id,
int bb_length,
VarInfo[] var_infos)
|
|
PptTopLevel(String name,
VarInfo[] var_infos)
|
|
| Method Summary | |
|---|---|
Set<Invariant> |
add_bottom_up(ValueTuple vt,
int count)
Add the sample to the equality sets, dynamic constants and invariants at this program point. |
void |
addConditions(Splitter[] splits)
|
void |
addImplications()
Given conditional program points (and invariants detected over them), create implications. |
void |
addSlice(PptSlice slice)
Add a single slice to the views variable |
void |
addViews(Vector<PptSlice> slices_vector)
Add the specified slices to this ppt |
boolean |
all_predecessors_goto(PptTopLevel ppt)
Returns true if all prececessor basic blocks eventually end up at the specified program point. |
int |
all_predecessors_goto(PptTopLevel ppt,
Set<PptTopLevel> visited_set)
Returns true if all predecessor basic blocks eventually end up at the specified progrm point. |
boolean |
all_successors_goto(PptTopLevel ppt)
Returns true if all successor basic blocks eventually end up at the specified progrm point. |
int |
all_successors_goto(PptTopLevel ppt,
Set<PptTopLevel> visited_set)
Returns true if all successor basic blocks eventually end up at the specified progrm point. |
int |
bb_offset()
If this is a basic block, returns the offset in the DLL |
static int[] |
build_permute(VarInfo[] vis1,
VarInfo[] vis2)
Builds a permutation from vis1 to vis2. |
boolean |
check_implied_canonical(DiscardInfo di,
VarInfo v1,
VarInfo v2,
Invariant proto)
|
DiscardInfo |
check_implied_canonical(Invariant imp_inv,
VarInfo v,
Invariant proto)
If the proto invariant is true over the leader of the specified variable returns DiscardInfo indicating that the proto invariant implies imp_inv. |
DiscardInfo |
check_implied_canonical(Invariant imp_inv,
VarInfo v1,
VarInfo v2,
Invariant proto)
If the prototype invariant is true over the leader of each specified variables returns DiscardInfo indicating that the prototype invariant implies imp_inv. |
boolean |
check_implied(DiscardInfo di,
VarInfo v1,
VarInfo v2,
Invariant proto)
|
DiscardInfo |
check_implied(Invariant imp_inv,
VarInfo v,
Invariant proto)
If the prototype invariant is true over the specified variable returns DiscardInfo indicating that the prototype invariant implies imp_inv. |
DiscardInfo |
check_implied(Invariant imp_inv,
VarInfo v1,
VarInfo v2,
Invariant proto)
If the prototype invariant is true over the specified variables returns DiscardInfo indicating that the prototype invariant implies imp_inv. |
void |
clean_for_merge()
Cleans up the ppt so that its invariants can be merged from other ppts. |
PptTopLevel.CondIterator |
cond_iterator()
returns an iterator over all of the splitters at this ppt |
boolean |
connected(PptTopLevel ppt)
Returns true if there is a connection (using successors) from this ppt to ppt |
boolean |
connected(PptTopLevel ppt,
Set<PptTopLevel> visited_set)
Returns true if all successor basic blocks eventually end up at the specified progrm point. |
int |
const_inv_cnt()
Returns the number of invariants that contain one or more constants. |
int |
const_slice_cnt()
Returns the number of slices that contain one or more constants. |
void |
create_derived_variables()
Create all the derived variables. |
PptSlice |
create_equality_inv(VarInfo v1,
VarInfo v2,
int samples)
Create an equality invariant over the specified variables. |
void |
debug_invs(Logger log)
Debug print to the specified logger information about each invariant at this ppt |
void |
debug_print_slice_info(Logger log,
String descr,
List<PptSlice> slices)
Debug print slice/inv count information to the specified logger |
void |
debug_print_tree(Logger l,
int indent,
PptRelation parent_rel)
Debug method to print children (in the partial order) recursively. |
void |
debug_unary_info(Logger log)
Debug print to the specified logger information about each variable in this ppt. |
String |
debugSlices()
Debug method to display all slices. |
String |
equality_sets_txt()
Returns a string version of all of the equality sets for this ppt. |
List<Invariant> |
find_assignment_inv(VarInfo v)
Searches for all of the invariants that that provide an exact value for v. |
PptTopLevel |
find_combined_ppt_leader()
Finds the ppt whose combined ppt subsumes this one. |
Invariant |
find_inv_by_class(VarInfo[] vis,
Class<? extends Invariant> cls)
Returns the invariant in the slice specified by vis that matches the specified class. |
PptSlice |
findSlice_unordered(VarInfo[] vis)
Find a pptSlice without an assumed ordering. |
PptSlice2 |
findSlice_unordered(VarInfo v1,
VarInfo v2)
Like findSlice, but it is not required that the variables be supplied in order of varinfo_index. |
PptSlice3 |
findSlice_unordered(VarInfo v1,
VarInfo v2,
VarInfo v3)
Like findSlice, but it is not required that the variables be supplied in order of varinfo_index. |
PptSlice1 |
findSlice(VarInfo v)
Returns the unary slice over v. |
PptSlice |
findSlice(VarInfo[] vis)
Find a pptSlice with an assumed ordering. |
PptSlice2 |
findSlice(VarInfo v1,
VarInfo v2)
Returns the binary slice over v1 and v2. |
PptSlice3 |
findSlice(VarInfo v1,
VarInfo v2,
VarInfo v3)
Returns the ternary slice over v1, v2, and v3. |
void |
get_missingOutOfBounds(PptTopLevel ppt,
ValueTuple vt)
Gets any missing out of bounds variables from the specified ppt and applies them to the matching variable in this ppt if the variable is MISSING_NONSENSICAL. |
PptSlice |
get_or_instantiate_slice(VarInfo vi)
Return a slice that contains the given VarInfos (creating if needed). |
PptSlice |
get_or_instantiate_slice(VarInfo[] vis)
Return a slice that contains the given VarInfos (creating if needed). |
PptSlice |
get_or_instantiate_slice(VarInfo v1,
VarInfo v2)
Return a slice that contains the given VarInfos (creating if needed). |
PptSlice |
get_or_instantiate_slice(VarInfo v1,
VarInfo v2,
VarInfo v3)
Return a slice that contains the given VarInfos (creating if needed). |
PptSlice |
get_temp_slice(VarInfo v)
Looks up the slice for v1. |
PptSlice |
get_temp_slice(VarInfo v1,
VarInfo v2)
Looks up the slice for v1 and v2. |
List<Invariant> |
getInvariants()
Return a List of all the invariants for the program point. |
Set<VarInfo> |
getParamVars()
Returns variables in this Ppt that are parameters. |
boolean |
has_parent(VarInfo v)
Returns whether or not the specified variable in this ppt has any parents. |
boolean |
has_splitters()
Returns whether or not this ppt has any splitters. |
void |
incSampleNumber()
Increments the number of samples processed by the program point by 1 |
void |
instantiate_views_and_invariants()
This function creates all the views (and thus candidate invariants), but does not check those invariants. |
List<Invariant> |
inv_add(List<Invariant> inv_list,
ValueTuple vt,
int count)
Adds a sample to each invariant in the list. |
Map<Class<? extends Invariant>,PptTopLevel.Cnt> |
invariant_cnt_by_class()
Returns how many invariants there are of each invariant class. |
int |
invariant_cnt()
Returns the number of true invariants at this ppt. |
Iterator<Invariant> |
invariants_iterator()
Iterate over all of the invariants at this ppt (but not any implications). |
Vector<Invariant> |
invariants_vector()
Vector version of getInvariants() |
boolean |
is_basic_block()
Is this a basic block ppt |
boolean |
is_class()
Is this a ppt that represents a class? |
boolean |
is_combined_exit()
Is this a combined exit point? |
boolean |
is_constant(VarInfo v)
Returns whether or not the specified variable is dynamically constant. |
boolean |
is_empty(VarInfo varr)
Returns true if varr is empty. |
boolean |
is_enter()
is this an enter ppt |
boolean |
is_equal(VarInfo v1,
VarInfo v2)
Returns whether or not the specified variables are equal (ie, an equality invariant exists between them) |
boolean |
is_exit()
Is this is an exit ppt (combined or specific)? |
boolean |
is_less_equal(VarInfo v1,
int v1_shift,
VarInfo v2,
int v2_shift)
Returns true if (v1+v1_shift) <= (v2+v2_shift) is known to be true. |
boolean |
is_missing(VarInfo v)
Returns whether or not the specified variable has been missing for all samples seen so far. |
boolean |
is_nonzero(VarInfo v)
Returns whether or not v1 is always non-zero |
boolean |
is_object()
Is this a ppt that represents an object? |
boolean |
is_prev_constant(VarInfo v)
Returns whether or not the specified variable is currently dynamically constant, or was a dynamic constant at the beginning of constant processing. |
boolean |
is_prev_missing(VarInfo v)
returns whether the specified variable is currently missing OR was missing at the beginning of constants processing. |
boolean |
is_slice_ok(VarInfo var1)
Returns whether or not the specified unary slice should be created. |
boolean |
is_slice_ok(VarInfo[] vis,
int arity)
Returns whether or not the specified slice should be created. |
boolean |
is_slice_ok(VarInfo var1,
VarInfo var2)
Returns whether or not the specified binary slice should be created. |
boolean |
is_slice_ok(VarInfo v1,
VarInfo v2,
VarInfo v3)
Returns whether or not the specified ternary slice should be created by checking the variables' qualifications. |
boolean |
is_subexit()
Is this a numbered (specific) exit point? |
boolean |
is_subsequence(VarInfo v1,
VarInfo v2)
Returns true if v1 is known to be a subsequence of v2. |
boolean |
is_subset(VarInfo v1,
VarInfo v2)
Returns whether or not v1 is a subset of v2. |
void |
mark_implied_via_simplify(PptMap all_ppts)
Use the Simplify theorem prover to flag invariants that are logically implied by others. |
void |
merge_conditionals()
Merges the conditionals from the children of this ppt to this ppt. |
void |
merge_invs_multiple_children()
Merges the invariants from multiple children. |
void |
merge_invs_one_child()
Merges one child. |
void |
mergeInvs()
Recursively merge invariants from children to create an invariant list at this ppt. |
String |
name()
|
int |
num_array_vars()
|
int |
num_samples()
The number of samples processed by this program point so far. |
int |
num_samples(VarInfo vi1)
Return the number of samples where vi1 is present (not missing) |
int |
num_samples(VarInfo vi1,
VarInfo vi2)
Return the number of samples where vi1 and vi2 are both present (not missing) |
int |
num_samples(VarInfo vi1,
VarInfo vi2,
VarInfo vi3)
Return the number of samples where vi1, vi2, and vi3 are all present (not missing) |
int |
num_values(VarInfo vi1)
The number of distinct values that have been seen. |
int |
num_values(VarInfo vi1,
VarInfo vi2)
An upper bound on the number of distinct pairs of values that have been seen. |
int |
num_values(VarInfo vi1,
VarInfo vi2,
VarInfo vi3)
An upper bound on the number of distinct values over vi1, vi2, and vi3 that have been seen. |
int |
numViews()
|
VarInfo[] |
parent_vis(PptRelation rel,
PptSlice slice)
Creates a list of parent variables (i.e., variables at the parent program point) that matches slice. |
void |
postProcessEquality()
Two things: a) convert Equality invariants into normal IntEqual type for filtering, printing, etc. b) Pivot uninteresting parameter VarInfos so that each equality set contains only the interesting one. |
static void |
print_equality_stats(Logger log,
PptMap all_ppts)
Print statistics concerning equality sets over the entire set of ppts to the specified logger. |
void |
processOmissions(boolean[] omitTypes)
remove invariants that are marked for ommission in omitTypes |
void |
remove_child_invs(PptRelation rel)
Removes any invariant in this ppt which has a matching invariant in the parent (as specified in the relation). |
void |
remove_equality_invariants()
Remove the equality invariants added during equality post processing. |
void |
remove_implications()
Remove all of the implications from this program point. |
void |
remove_invs(List<Invariant> rm_list)
Remove a list of invariants |
void |
removeSlice(PptSlice slice)
Remove a slice from this PptTopLevel. |
void |
repCheck()
Check the rep invariants of this. |
void |
simplify_variable_names()
Simplify the names of variables before printing them. |
int |
slice_cnt()
Returns the number of slices at this ppt. |
String |
toString()
Returns the full name of the ppt |
void |
trimToSize()
Trim the collections used here, in hopes of saving space. |
Iterator<VarInfo> |
var_info_iterator()
Iterate through each variable at this ppt |
String |
var_names()
|
Iterator<PptSlice> |
views_iterator()
For some clients, this method may be more efficient than getInvariants. |
boolean |
vis_order_ok(VarInfo[] vis)
Determines whether the order of the variables in vis is a valid permutation (i.e., their varinfo_index's are ordered). |
static boolean |
worthDerivingFrom(VarInfo vi)
|
| Methods inherited from class Ppt |
|---|
containsVar, find_var_by_name, indexOf, varNames, varNames |
| Methods inherited from class Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
public static boolean dkconfig_pairwise_implications
public static boolean dkconfig_remove_merged_invs
public static boolean first_pass_with_sample
public EnumSet<PptTopLevel.PptFlags> flags
public PptTopLevel.PptType type
public int instantiated_inv_cnt
public int instantiated_slice_cnt
public static final Logger debug
public static final Logger debugInstantiate
public static final Logger debugTimeMerge
public static final Logger debugEqualTo
public static final Logger debugAddImplications
public static final Logger debugConditional
public static final Logger debugFlow
public static final Logger debugMerge
public static final Logger debugNISStats
public static final SimpleLog debug_varinfo
public final String name
public final PptName ppt_name
public DynamicConstants constants
public int num_declvars
public int num_tracevars
public int num_orig_vars
public int num_static_constant_vars
public ArrayList<PptSplitter> splitters
public List<PptRelation> children
public List<PptRelation> parents
public List<FileIO.ParentRelation> parent_relations
public List<String> ppt_successors
public List<PptTopLevel> predecessors
public String function_id
public int bb_length
public boolean combined_ppts_init
public PptCombined combined_ppt
public boolean combined_subsumed
public PptTopLevel combined_subsumed_by
public ValueTuple last_values
public boolean invariants_merged
public boolean in_merge
public boolean invariants_removed
public PptSlice0 joiner_view
public PptSliceEquality equality_view
public Set<Invariant> redundant_invs
public Set<VarInfo> redundant_invs_equality
public static final Comparator<Invariant> icfp
| Constructor Detail |
|---|
public PptTopLevel(String name,
PptTopLevel.PptType type,
List<FileIO.ParentRelation> parents,
EnumSet<PptTopLevel.PptFlags> flags,
List<String> ppt_successors,
String function_id,
int bb_length,
VarInfo[] var_infos)
public PptTopLevel(String name,
VarInfo[] var_infos)
| Method Detail |
|---|
public String name()
name in class Pptpublic PptTopLevel.CondIterator cond_iterator()
public boolean has_splitters()
public int num_array_vars()
public Iterator<VarInfo> var_info_iterator()
public String toString()
toString in class Objectpublic void trimToSize()
trimToSize in class Pptpublic int num_samples()
public int num_samples(VarInfo vi1)
public int num_samples(VarInfo vi1,
VarInfo vi2)
public int num_samples(VarInfo vi1,
VarInfo vi2,
VarInfo vi3)
public int num_values(VarInfo vi1)
public int num_values(VarInfo vi1,
VarInfo vi2)
public int num_values(VarInfo vi1,
VarInfo vi2,
VarInfo vi3)
public int numViews()
public static boolean worthDerivingFrom(VarInfo vi)
public Set<Invariant> add_bottom_up(ValueTuple vt,
int count)
vt - the set of values for this to seecount - the number of samples that vt represents
public List<Invariant> inv_add(List<Invariant> inv_list,
ValueTuple vt,
int count)
public void get_missingOutOfBounds(PptTopLevel ppt,
ValueTuple vt)
public boolean is_constant(VarInfo v)
public boolean is_prev_constant(VarInfo v)
public boolean is_missing(VarInfo v)
public boolean is_prev_missing(VarInfo v)
public int invariant_cnt()
public int const_slice_cnt()
public int const_inv_cnt()
public void debug_invs(Logger log)
public void debug_unary_info(Logger log)
public Map<Class<? extends Invariant>,PptTopLevel.Cnt> invariant_cnt_by_class()
public int slice_cnt()
public void create_derived_variables()
public void addViews(Vector<PptSlice> slices_vector)
public void addSlice(PptSlice slice)
public void removeSlice(PptSlice slice)
public void remove_invs(List<Invariant> rm_list)
public PptSlice1 findSlice(VarInfo v)
public PptSlice2 findSlice(VarInfo v1,
VarInfo v2)
public PptSlice2 findSlice_unordered(VarInfo v1,
VarInfo v2)
public PptSlice3 findSlice(VarInfo v1,
VarInfo v2,
VarInfo v3)
public PptSlice3 findSlice_unordered(VarInfo v1,
VarInfo v2,
VarInfo v3)
public PptSlice findSlice_unordered(VarInfo[] vis)
public PptSlice findSlice(VarInfo[] vis)
public Invariant find_inv_by_class(VarInfo[] vis,
Class<? extends Invariant> cls)
public List<Invariant> find_assignment_inv(VarInfo v)
public PptSlice get_temp_slice(VarInfo v)
public PptSlice get_temp_slice(VarInfo v1,
VarInfo v2)
public DiscardInfo check_implied(Invariant imp_inv,
VarInfo v,
Invariant proto)
public DiscardInfo check_implied_canonical(Invariant imp_inv,
VarInfo v,
Invariant proto)
public DiscardInfo check_implied(Invariant imp_inv,
VarInfo v1,
VarInfo v2,
Invariant proto)
public boolean check_implied(DiscardInfo di,
VarInfo v1,
VarInfo v2,
Invariant proto)
public DiscardInfo check_implied_canonical(Invariant imp_inv,
VarInfo v1,
VarInfo v2,
Invariant proto)
public boolean check_implied_canonical(DiscardInfo di,
VarInfo v1,
VarInfo v2,
Invariant proto)
public boolean is_subset(VarInfo v1,
VarInfo v2)
public boolean is_nonzero(VarInfo v)
public boolean is_equal(VarInfo v1,
VarInfo v2)
public boolean is_less_equal(VarInfo v1,
int v1_shift,
VarInfo v2,
int v2_shift)
public boolean is_subsequence(VarInfo v1,
VarInfo v2)
public boolean is_empty(VarInfo varr)
public void instantiate_views_and_invariants()
public boolean is_slice_ok(VarInfo[] vis,
int arity)
public boolean is_slice_ok(VarInfo var1)
is_var_ok_unary(VarInfo)
public boolean is_slice_ok(VarInfo var1,
VarInfo var2)
is_var_ok_binary(VarInfo)
public boolean is_slice_ok(VarInfo v1,
VarInfo v2,
VarInfo v3)
is_var_ok_ternary(VarInfo)public boolean vis_order_ok(VarInfo[] vis)
public PptSlice get_or_instantiate_slice(VarInfo[] vis)
When the arity of the slice is known, call one of the overloaded definitions of get_or_instantiate_slice that takes (one or more) VarInfo arguments; they are more efficient.
vis - array of VarInfo objects; is not used internally
(so the same value can be passed in repeatedly). Can be unsorted.public PptSlice get_or_instantiate_slice(VarInfo vi)
public PptSlice get_or_instantiate_slice(VarInfo v1,
VarInfo v2)
public PptSlice get_or_instantiate_slice(VarInfo v1,
VarInfo v2,
VarInfo v3)
public void addConditions(Splitter[] splits)
public void addImplications()
public void postProcessEquality()
public void mark_implied_via_simplify(PptMap all_ppts)
public Set<VarInfo> getParamVars()
public List<Invariant> getInvariants()
public Vector<Invariant> invariants_vector()
public Iterator<PptSlice> views_iterator()
public Iterator<Invariant> invariants_iterator()
public void simplify_variable_names()
public void processOmissions(boolean[] omitTypes)
public void repCheck()
public String debugSlices()
public void debug_print_tree(Logger l,
int indent,
PptRelation parent_rel)
public String equality_sets_txt()
public boolean has_parent(VarInfo v)
public void mergeInvs()
public void merge_invs_multiple_children()
public void merge_invs_one_child()
public VarInfo[] parent_vis(PptRelation rel,
PptSlice slice)
public void merge_conditionals()
public void clean_for_merge()
public void remove_equality_invariants()
public void remove_implications()
public void remove_child_invs(PptRelation rel)
public static int[] build_permute(VarInfo[] vis1,
VarInfo[] vis2)
public void debug_print_slice_info(Logger log,
String descr,
List<PptSlice> slices)
public PptSlice create_equality_inv(VarInfo v1,
VarInfo v2,
int samples)
public static void print_equality_stats(Logger log,
PptMap all_ppts)
public void incSampleNumber()
public boolean is_exit()
public boolean is_enter()
public boolean is_basic_block()
public boolean is_combined_exit()
public boolean is_subexit()
public boolean is_object()
public boolean is_class()
public String var_names()
public int bb_offset()
public PptTopLevel find_combined_ppt_leader()
public boolean connected(PptTopLevel ppt)
public boolean connected(PptTopLevel ppt,
Set<PptTopLevel> visited_set)
public boolean all_successors_goto(PptTopLevel ppt)
public int all_successors_goto(PptTopLevel ppt,
Set<PptTopLevel> visited_set)
public boolean all_predecessors_goto(PptTopLevel ppt)
public int all_predecessors_goto(PptTopLevel ppt,
Set<PptTopLevel> visited_set)
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||