Package org.jibx.binding.classes
Class BranchWrapper
java.lang.Object
org.jibx.binding.classes.BranchWrapper
Wrapper for branch handle. This preserves a snapshot of the stack state for
the branch instruction, matching it against the stack state for the target
instruction when set.
- Version:
- 1.0
- Author:
- Dennis M. Sosnoski
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final BranchHandle
Actual wrapped instruction handle.private final Object
Object that generated branch.private final Throwable
Code generation backtrace for source of branch.private final String[]
Stack state for branch origin.private static boolean
Continue on after code generation error flag.private static boolean
Track source code location for generated branches. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate String
buildReport
(String text, String[] types, MethodBuilder mb) Report branch target error.private String
describeStack
(String[] types) Generate description of stack state.(package private) String[]
Get branch origin stack state information.static void
setErrorOverride
(boolean over) Set target setting error override state.(package private) void
setTarget
(InstructionHandle hand, String[] types, MethodBuilder mb) Set target instruction for branch.void
setTarget
(BranchTarget target, MethodBuilder mb) Set target instruction for branch.static void
setTracking
(boolean track) Set branch code generation tracking state.
-
Field Details
-
s_trackSource
private static boolean s_trackSourceTrack source code location for generated branches. -
s_errorOverride
private static boolean s_errorOverrideContinue on after code generation error flag. -
m_branchHandle
private final BranchHandle m_branchHandleActual wrapped instruction handle. -
m_stackTypes
Stack state for branch origin. -
m_sourceObject
Object that generated branch. -
m_sourceTrace
Code generation backtrace for source of branch.
-
-
Constructor Details
-
BranchWrapper
Constructor.- Parameters:
hand
- branch handletypes
- array of types of values on stacksrc
- object responsible for generating branch
-
-
Method Details
-
getStackState
String[] getStackState()Get branch origin stack state information.- Returns:
- array of types of values on stack
-
describeStack
Generate description of stack state.- Parameters:
types
- array of types on stack- Returns:
- stack state description
-
buildReport
Report branch target error. Dumps the stack trace for the source of the branch, if source tracking is enabled, and generates an exception that includes the stack state information.- Parameters:
text
- basic error message texttypes
- stack state descriptionmb
- method builder using this code- Returns:
- complete error description text
-
setTarget
Set target instruction for branch. Validates the branch source stack state against the branch target stack state.- Parameters:
hand
- target branch instruction handletypes
- stack state descriptionmb
- method builder using this code
-
setTarget
Set target instruction for branch. Validates the branch source stack state against the branch target stack state.- Parameters:
target
- branch target wrappermb
- method builder using this code
-
setTracking
public static void setTracking(boolean track) Set branch code generation tracking state. When set, this saves a stack trace for each generated branch instruction, allowing the source of a branch to be traced when an error occurs in setting the branch target.- Parameters:
track
-true
to enable branch code generation tracking,false
to disable it
-
setErrorOverride
public static void setErrorOverride(boolean over) Set target setting error override state. When set, this blocks throwing an exception when an error occurs on setting the branch target, instead just printing the information to the console.- Parameters:
over
-true
to override exception on target error,false
to allow it
-