Class BloatContext
java.lang.Object
EDU.purdue.cs.bloat.context.BloatContext
- All Implemented Interfaces:
EditorContext, EDU.purdue.cs.bloat.inline.InlineContext
- Direct Known Subclasses:
PersistentBloatContext
public abstract class BloatContext
extends Object
implements EDU.purdue.cs.bloat.inline.InlineContext
This abstract class is a central repository for all things that are necessary
for a BLOATing sessions. Its subclasses implement certain schemes for
managing BLOAT data structures such as editors and control flow graphs.
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddIgnoreClass(Type type) Notes that a class should be ignored by inlining.voidaddIgnoreField(MemberRef field) Notes that a field should be ignored by inlining.voidaddIgnoreMethod(MemberRef method) Notes that a method should be ignored by inlining.voidaddIgnorePackage(String name) Notes that all classes, methods, and fields in a package should be "ignored" by inlining.abstract voidCommits all classes, methods, and fields, that have been modified.protected static voidEDU.purdue.cs.bloat.inline.CallGraphReturns the call graph for the program.EDU.purdue.cs.bloat.inline.InlineStatsReturns an InlineStats object for getting statistics about inlining.booleanignoreClass(Type type) Returns true if a class should be ignored by inlining.booleanignoreField(MemberRef field) Returns true if a field should be ignored by inlining.booleanignoreMethod(MemberRef method) Returns true if a method should be ignored by inlining.static booleanReturns true if the give type is a system class (that is, has the same class loader as java.lang.String).static voidTest the ignore stuff.voidsetIgnoreSystem(boolean ignore) Sets whether or not we ignore all system classes.voidsetRootMethods(Set roots) Sets the root methods for this InlineContext.Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface EditorContext
commit, commit, commit, commit, editClass, editClass, editClass, editField, editField, editMethod, editMethod, getHierarchy, loadClass, newClass, newClassInfo, release, release, release
-
Field Details
-
DEBUG
public static boolean DEBUG -
inlineStats
protected EDU.purdue.cs.bloat.inline.InlineStats inlineStats -
ignorePackages
-
ignoreClasses
-
ignoreMethods
-
ignoreFields
-
ignoreSystem
protected boolean ignoreSystem -
callGraph
protected EDU.purdue.cs.bloat.inline.CallGraph callGraph -
roots
-
loader
-
-
Constructor Details
-
BloatContext
Constructor. Each BloatContext needs to know about a ClassInfoLoader.
-
-
Method Details
-
db
-
isSystem
Returns true if the give type is a system class (that is, has the same class loader as java.lang.String). -
setRootMethods
Description copied from interface:EDU.purdue.cs.bloat.inline.InlineContextSets the root methods for this InlineContext.- Specified by:
setRootMethodsin interfaceEDU.purdue.cs.bloat.inline.InlineContext- Parameters:
roots- The root methods (MemberRefs) of the program
-
getCallGraph
public EDU.purdue.cs.bloat.inline.CallGraph getCallGraph()Description copied from interface:EDU.purdue.cs.bloat.inline.InlineContextReturns the call graph for the program.- Specified by:
getCallGraphin interfaceEDU.purdue.cs.bloat.inline.InlineContext
-
getInlineStats
public EDU.purdue.cs.bloat.inline.InlineStats getInlineStats()Description copied from interface:EDU.purdue.cs.bloat.inline.InlineContextReturns an InlineStats object for getting statistics about inlining.- Specified by:
getInlineStatsin interfaceEDU.purdue.cs.bloat.inline.InlineContext
-
addIgnorePackage
Description copied from interface:EDU.purdue.cs.bloat.inline.InlineContextNotes that all classes, methods, and fields in a package should be "ignored" by inlining. That is, methods won't be inlined, classes won't be involved in specialization, etc. Note that it is exceptable to just add a prefix of a package name. For instance, adding "java" will ignore java.lang.Object, java.io.File, etc.- Specified by:
addIgnorePackagein interfaceEDU.purdue.cs.bloat.inline.InlineContext
-
addIgnoreClass
Description copied from interface:EDU.purdue.cs.bloat.inline.InlineContextNotes that a class should be ignored by inlining. That is, none of its methods will be inlined and it won't be involved in specialization.- Specified by:
addIgnoreClassin interfaceEDU.purdue.cs.bloat.inline.InlineContext
-
addIgnoreMethod
Description copied from interface:EDU.purdue.cs.bloat.inline.InlineContextNotes that a method should be ignored by inlining. That is, it will not be inlined.- Specified by:
addIgnoreMethodin interfaceEDU.purdue.cs.bloat.inline.InlineContext
-
addIgnoreField
Description copied from interface:EDU.purdue.cs.bloat.inline.InlineContextNotes that a field should be ignored by inlining.- Specified by:
addIgnoreFieldin interfaceEDU.purdue.cs.bloat.inline.InlineContext
-
setIgnoreSystem
public void setIgnoreSystem(boolean ignore) Description copied from interface:EDU.purdue.cs.bloat.inline.InlineContextSets whether or not we ignore all system classes.- Specified by:
setIgnoreSystemin interfaceEDU.purdue.cs.bloat.inline.InlineContext
-
ignoreClass
Description copied from interface:EDU.purdue.cs.bloat.inline.InlineContextReturns true if a class should be ignored by inlining.- Specified by:
ignoreClassin interfaceEDU.purdue.cs.bloat.inline.InlineContext
-
ignoreMethod
Description copied from interface:EDU.purdue.cs.bloat.inline.InlineContextReturns true if a method should be ignored by inlining.- Specified by:
ignoreMethodin interfaceEDU.purdue.cs.bloat.inline.InlineContext
-
ignoreField
Description copied from interface:EDU.purdue.cs.bloat.inline.InlineContextReturns true if a field should be ignored by inlining.- Specified by:
ignoreFieldin interfaceEDU.purdue.cs.bloat.inline.InlineContext
-
commitDirty
public abstract void commitDirty()Commits all classes, methods, and fields, that have been modified. -
main
Test the ignore stuff.
-