this.sendResponse(response);
}
nextRequest(response, args, request) {
- this.debugger.step("line", args.threadId);
+ this.debugger.step("over", args.threadId);
+ this.sendResponse(response);
}
stepOutRequest(response, args, request) {
- console.log("STEP OUT");
+ this.debugger.step("out", args.threadId);
+ this.sendResponse(response);
}
stepInRequest(response, args, request) {
- console.log("STEP IN");
+ this.debugger.step("line", args.threadId);
+ this.sendResponse(response);
}
fileNameToShortName(filename) {
return filename.substring(filename.lastIndexOf("/") + 1);
OVMCommand[OVMCommand["RES"] = 1] = "RES";
OVMCommand[OVMCommand["BRK"] = 2] = "BRK";
OVMCommand[OVMCommand["CLR_BRK"] = 3] = "CLR_BRK";
- OVMCommand[OVMCommand["LOC"] = 4] = "LOC";
OVMCommand[OVMCommand["STEP"] = 5] = "STEP";
OVMCommand[OVMCommand["TRACE"] = 6] = "TRACE";
})(OVMCommand || (OVMCommand = {}));
return this.preparePromise(cmd_id);
});
}
- request_location(thread_id) {
- let data = new ArrayBuffer(12);
- let view = new DataView(data);
- let cmd_id = this.next_command_id;
- view.setUint32(0, cmd_id, true);
- view.setUint32(4, OVMCommand.LOC, true);
- view.setUint32(8, thread_id, true);
- this.client.write(new Uint8Array(data));
- this.pending_responses[cmd_id] = OVMCommand.LOC;
- return this.preparePromise(cmd_id);
- }
step(granularity, thread_id) {
let data = new ArrayBuffer(16);
let view = new DataView(data);
view.setUint32(8, 1, true);
break;
case "instruction":
- view.setUint32(8, 1, true);
+ view.setUint32(8, 2, true);
+ break;
+ case "over":
+ view.setUint32(8, 3, true);
+ break;
+ case "out":
+ view.setUint32(8, 4, true);
break;
}
this.client.write(new Uint8Array(data));
this.resolvePromise(msg_id, success);
break;
}
- case OVMCommand.LOC: {
- let success = parser.parseBool();
- let filename = parser.parseString();
- let line = parser.parseInt32();
- if (!success)
- break;
- this.resolvePromise(msg_id, { funcname: "unknown", filename, line });
- break;
- }
case OVMCommand.STEP: break;
case OVMCommand.TRACE: {
let result = new Array();
}
protected nextRequest(response: DebugProtocol.NextResponse, args: DebugProtocol.NextArguments, request?: DebugProtocol.Request): void {
- this.debugger.step("line", args.threadId);
+ this.debugger.step("over", args.threadId);
+ this.sendResponse(response);
}
protected stepOutRequest(response: DebugProtocol.StepOutResponse, args: DebugProtocol.StepOutArguments, request?: DebugProtocol.Request): void {
- console.log("STEP OUT");
+ this.debugger.step("out", args.threadId);
+ this.sendResponse(response);
}
protected stepInRequest(response: DebugProtocol.StepInResponse, args: DebugProtocol.StepInArguments, request?: DebugProtocol.Request): void {
- console.log("STEP IN");
+ this.debugger.step("line", args.threadId);
+ this.sendResponse(response);
}
private fileNameToShortName(filename: string): string {
RES = 1,
BRK = 2,
CLR_BRK = 3,
- LOC = 4,
STEP = 5,
TRACE = 6
}
return this.preparePromise(cmd_id);
}
- request_location(thread_id: number): Promise<IFileLocation> {
- let data = new ArrayBuffer(12);
- let view = new DataView(data);
-
- let cmd_id = this.next_command_id;
-
- view.setUint32(0, cmd_id, true);
- view.setUint32(4, OVMCommand.LOC, true);
- view.setUint32(8, thread_id, true);
-
- this.client.write(new Uint8Array(data));
-
- this.pending_responses[cmd_id] = OVMCommand.LOC;
-
- return this.preparePromise(cmd_id);
- }
-
- step(granularity: "line" | "instruction", thread_id: number): void {
+ step(granularity: "line" | "instruction" | "over" | "out", thread_id: number): void {
let data = new ArrayBuffer(16);
let view = new DataView(data);
switch (granularity) {
case "line": view.setUint32(8, 1, true); break;
- case "instruction": view.setUint32(8, 1, true); break;
+ case "instruction": view.setUint32(8, 2, true); break;
+ case "over": view.setUint32(8, 3, true); break;
+ case "out": view.setUint32(8, 4, true); break;
}
this.client.write(new Uint8Array(data));
break;
}
- case OVMCommand.LOC: {
- let success = parser.parseBool();
- let filename = parser.parseString();
- let line = parser.parseInt32();
-
- if (!success) break;
-
- this.resolvePromise(msg_id, {funcname: "unknown", filename, line});
- break;
- }
-
case OVMCommand.STEP: break;
case OVMCommand.TRACE: {
if (instr->type == WI_UNREACHABLE) assert(("EMITTING UNREACHABLE!!", 0));
+ if (instr->type == WI_NOP && !context.options->debug_enabled) return;
+
if (instr->type & SIMD_INSTR_MASK) {
bh_buffer_write_byte(buff, 0xFD);
leb = uint_to_uleb128((u64) (instr->type &~ SIMD_INSTR_MASK), &leb_len);
if (wasm_module) wasm_module_delete(wasm_module);
if (wasm_store) wasm_store_delete(wasm_store);
if (wasm_engine) wasm_engine_delete(wasm_engine);
- if (wasm_config) wasm_config_delete(wasm_config);
}
//