Breakpoints triggering.
This commit is contained in:
@@ -119,6 +119,10 @@ void FunctionBuilder::Dump(StringBuffer* str) {
|
||||
|
||||
Instr* i = block->instr_head;
|
||||
while (i) {
|
||||
if (i->opcode->flags & OPCODE_FLAG_HIDE) {
|
||||
i = i->next;
|
||||
continue;
|
||||
}
|
||||
if (i->opcode->num == OPCODE_COMMENT) {
|
||||
str->Append(" ; %s\n", (char*)i->src1.offset);
|
||||
i = i->next;
|
||||
@@ -370,6 +374,12 @@ void FunctionBuilder::Nop() {
|
||||
i->src1.value = i->src2.value = i->src3.value = NULL;
|
||||
}
|
||||
|
||||
void FunctionBuilder::SourceOffset(uint64_t offset) {
|
||||
Instr* i = AppendInstr(OPCODE_SOURCE_OFFSET_info, 0);
|
||||
i->src1.offset = offset;
|
||||
i->src2.value = i->src3.value = NULL;
|
||||
}
|
||||
|
||||
void FunctionBuilder::DebugBreak() {
|
||||
Instr* i = AppendInstr(OPCODE_DEBUG_BREAK_info, 0);
|
||||
i->src1.value = i->src2.value = i->src3.value = NULL;
|
||||
|
||||
@@ -57,6 +57,8 @@ public:
|
||||
|
||||
void Nop();
|
||||
|
||||
void SourceOffset(uint64_t offset);
|
||||
|
||||
// trace info/etc
|
||||
void DebugBreak();
|
||||
void DebugBreakTrue(Value* cond);
|
||||
|
||||
@@ -69,6 +69,8 @@ enum Opcode {
|
||||
|
||||
OPCODE_NOP,
|
||||
|
||||
OPCODE_SOURCE_OFFSET,
|
||||
|
||||
OPCODE_DEBUG_BREAK,
|
||||
OPCODE_DEBUG_BREAK_TRUE,
|
||||
|
||||
@@ -174,6 +176,7 @@ enum OpcodeFlags {
|
||||
OPCODE_FLAG_COMMUNATIVE = (1 << 3),
|
||||
OPCODE_FLAG_VOLATILE = (1 << 4),
|
||||
OPCODE_FLAG_IGNORE = (1 << 5),
|
||||
OPCODE_FLAG_HIDE = (1 << 6),
|
||||
};
|
||||
|
||||
enum OpcodeSignatureType {
|
||||
@@ -188,6 +191,7 @@ enum OpcodeSignatureType {
|
||||
enum OpcodeSignature {
|
||||
OPCODE_SIG_X = (OPCODE_SIG_TYPE_X),
|
||||
OPCODE_SIG_X_L = (OPCODE_SIG_TYPE_X) | (OPCODE_SIG_TYPE_L << 3),
|
||||
OPCODE_SIG_X_O = (OPCODE_SIG_TYPE_X) | (OPCODE_SIG_TYPE_O << 3),
|
||||
OPCODE_SIG_X_O_V = (OPCODE_SIG_TYPE_X) | (OPCODE_SIG_TYPE_O << 3) | (OPCODE_SIG_TYPE_V << 6),
|
||||
OPCODE_SIG_X_S = (OPCODE_SIG_TYPE_X) | (OPCODE_SIG_TYPE_S << 3),
|
||||
OPCODE_SIG_X_V = (OPCODE_SIG_TYPE_X) | (OPCODE_SIG_TYPE_V << 3),
|
||||
|
||||
@@ -20,6 +20,12 @@ DEFINE_OPCODE(
|
||||
OPCODE_SIG_X,
|
||||
OPCODE_FLAG_IGNORE);
|
||||
|
||||
DEFINE_OPCODE(
|
||||
OPCODE_SOURCE_OFFSET,
|
||||
"source_offset",
|
||||
OPCODE_SIG_X_O,
|
||||
OPCODE_FLAG_IGNORE | OPCODE_FLAG_HIDE);
|
||||
|
||||
DEFINE_OPCODE(
|
||||
OPCODE_DEBUG_BREAK,
|
||||
"debug_break",
|
||||
|
||||
Reference in New Issue
Block a user