summaryrefslogtreecommitdiffstats
path: root/vm/compiler/Compiler.h
diff options
context:
space:
mode:
authorBen Cheng <bccheng@google.com>2009-10-15 14:52:45 -0700
committerBen Cheng <bccheng@google.com>2009-10-15 14:52:45 -0700
commitccd6c0102d1f898aaea1c94761167fdd083b5275 (patch)
tree1a41260525f80fc699c1d4083f6d6bf0153dc82f /vm/compiler/Compiler.h
parent808049474c23a2e8c3849ff7700d118bc406784d (diff)
downloadandroid_dalvik-ccd6c0102d1f898aaea1c94761167fdd083b5275.tar.gz
android_dalvik-ccd6c0102d1f898aaea1c94761167fdd083b5275.tar.bz2
android_dalvik-ccd6c0102d1f898aaea1c94761167fdd083b5275.zip
Make the traige process for self-verification found divergence easier.
1. Automatically replay the code compilation with verbose mode turned on for the offending compilation. 3. Mark the registers with divergence explicitly. 2. Print accurate operand names using the dataflow attributes. Constant values are still printed for reference only. 3. Fixed a few correctness/style issues in self-verification code.
Diffstat (limited to 'vm/compiler/Compiler.h')
-rw-r--r--vm/compiler/Compiler.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/vm/compiler/Compiler.h b/vm/compiler/Compiler.h
index 47de33d8b..06367a6ec 100644
--- a/vm/compiler/Compiler.h
+++ b/vm/compiler/Compiler.h
@@ -36,14 +36,16 @@ typedef enum JitInstructionSetType {
/* Description of a compiled trace. */
typedef struct JitTranslationInfo {
- void *codeAddress;
+ void *codeAddress;
JitInstructionSetType instructionSet;
+ bool discardResult; // Used for debugging divergence
} JitTranslationInfo;
typedef enum WorkOrderKind {
kWorkOrderInvalid = 0, // Should never see by the backend
kWorkOrderMethod = 1, // Work is to compile a whole method
kWorkOrderTrace = 2, // Work is to compile code fragment(s)
+ kWorkOrderTraceDebug = 3, // Work is to compile/debug code fragment(s)
} WorkOrderKind;
typedef struct CompilerWorkOrder {
@@ -154,9 +156,11 @@ void dvmCompilerDoConstantPropagation(struct CompilationUnit *cUnit,
struct BasicBlock *bb);
void dvmCompilerFindInductionVariables(struct CompilationUnit *cUnit,
struct BasicBlock *bb);
+char *dvmCompilerGetDalvikDisassembly(DecodedInstruction *insn);
char *dvmCompilerGetSSAString(struct CompilationUnit *cUnit,
struct SSARepresentation *ssaRep);
void dvmCompilerDataFlowAnalysisDispatcher(struct CompilationUnit *cUnit,
void (*func)(struct CompilationUnit *, struct BasicBlock *));
+JitTraceDescription *dvmCopyTraceDescriptor(const u2 *pc);
#endif /* _DALVIK_VM_COMPILER */