disable resolve_modrm patch

This commit is contained in:
Awal Garg 2017-12-19 23:31:32 +05:30 committed by Fabian
parent 705f59773a
commit fd7aed1821
5 changed files with 2 additions and 140 deletions

View file

@ -58,50 +58,6 @@ var ASYNC_SAFE = false;
});
};
v86util.add_download_button = function(data, filename)
{
let b = document.createElement("button");
b.textContent = "download";
document.body.appendChild(b);
b.onclick = function()
{
dump_file(data, filename);
};
};
function dump_file(ab, name)
{
if(!(ab instanceof Array))
{
ab = [ab];
}
var blob = new Blob(ab);
download(blob, name);
}
function download(file_or_blob, name)
{
var a = document.createElement("a");
a["download"] = name;
a.href = window.URL.createObjectURL(file_or_blob);
a.dataset["downloadurl"] = ["application/octet-stream", a["download"], a.href].join(":");
if(document.createEvent)
{
var ev = document.createEvent("MouseEvent");
ev.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
a.dispatchEvent(ev);
}
else
{
a.click();
}
window.URL.revokeObjectURL(a.href);
}
/**
* @param {string} filename
* @param {Object} options

View file

@ -134,10 +134,6 @@ function V86Starter(options)
"_iret32": function() { return cpu.iret32(); },
"_handle_irqs": function() { return cpu.handle_irqs(); },
//XXX: These are temporary for as long as we are testing the JIT
"_resolve_modrm16": function(modrm_byte) { return cpu.resolve_modrm16(modrm_byte); },
"_resolve_modrm32": function(modrm_byte) { return cpu.resolve_modrm32(modrm_byte); },
"_io_port_read8": function(addr) { return cpu.io.port_read8(addr); },
"_io_port_read16": function(addr) { return cpu.io.port_read16(addr); },
"_io_port_read32": function(addr) { return cpu.io.port_read32(addr); },

View file

@ -62,12 +62,12 @@ Codegen.prototype.modrm_fn0 = function(fn, modrm_byte)
this.wm.funcs["_gen_modrm_fn1"](Codegen.STR_INPUT_OFFSET, fn.length, modrm_byte);
};
Codegen.prototype.jit_resolve_modrm16 = function(modrm_byte)
Codegen.prototype.resolve_modrm16 = function(modrm_byte)
{
this.wm.funcs["_gen_resolve_modrm16"](modrm_byte);
};
Codegen.prototype.jit_resolve_modrm32 = function(modrm_byte)
Codegen.prototype.resolve_modrm32 = function(modrm_byte)
{
this.wm.funcs["_gen_resolve_modrm32"](modrm_byte);
};

View file

@ -377,88 +377,6 @@ CPU.prototype.wasm_patch = function(wm)
this.fxrstor = this.wm.funcs['_fxrstor'];
};
//*
CPU.prototype.resolve_modrm16 = function(modrm_byte)
{
dbg_log("resolve_modrm16, modrm_byte=" + h(modrm_byte));
let buf;
const RESULT_LOC = 1600;
try {
const gen = this.codegen;
gen.reset();
gen.jit_resolve_modrm16(modrm_byte);
gen.finish();
buf = gen.get_module_code();
//XXX: move the following logic to a separate function
const module = new WebAssembly.Module(buf);
const imports = { "e": {
"get_seg": v => this.get_seg(v),
"get_reg": v => v, //XXX: no get_reg on CPU :|
"get_seg_prefix_ds": v => this.get_seg_prefix_ds(v),
"get_seg_prefix_ss": v => this.get_seg_prefix_ss(v),
"get_seg_prefix": v => this.get_seg_prefix(v),
"m": this.wm.mem,
} };
const o = new WebAssembly.Instance(module, imports);
o.exports["f"]();
const view = new Int32Array(this.wm.mem.buffer, RESULT_LOC, 4);
return view[0];
}
catch(err)
{
if (typeof buf !== "undefined")
{
v86util.add_download_button(buf, "myjit.wasm");
}
throw err;
}
};
//*/
//*
CPU.prototype.resolve_modrm32 = function(modrm_byte)
{
dbg_log("resolve_modrm32, modrm_byte=" + h(modrm_byte));
let buf;
const RESULT_LOC = 1600;
try {
const gen = this.codegen;
gen.reset();
gen.jit_resolve_modrm32(modrm_byte);
gen.finish();
buf = gen.get_module_code();
//XXX: move the following logic to a separate function
const module = new WebAssembly.Module(buf);
const imports = { "e": {
"get_seg": v => this.get_seg(v),
"get_reg": v => v, //XXX: no get_reg on CPU :|
"get_seg_prefix_ds": v => this.get_seg_prefix_ds(v),
"get_seg_prefix_ss": v => this.get_seg_prefix_ss(v),
"get_seg_prefix": v => this.get_seg_prefix(v),
"m": this.wm.mem,
} };
const o = new WebAssembly.Instance(module, imports);
o.exports["f"]();
const view = new Int32Array(this.wm.mem.buffer, RESULT_LOC, 4);
return view[0];
}
catch(err)
{
if (typeof buf !== "undefined")
{
v86util.add_download_button(buf, "myjit.wasm");
}
throw err;
}
};
//*/
CPU.prototype.get_state = function()
{
var state = [];

View file

@ -31,9 +31,6 @@ static int32_t resolve_sib(bool);
MODRM_ENTRY(0x40 | row, seg(((value) + read_imm8s() & 0xFFFF)))\
MODRM_ENTRY(0x80 | row, seg(((value) + read_imm16() & 0xFFFF)))\
extern int32_t resolve_modrm16(int32_t modrm_byte);
/*
static int32_t resolve_modrm16(int32_t modrm_byte)
{
switch(modrm_byte)
@ -58,7 +55,6 @@ static int32_t resolve_modrm16(int32_t modrm_byte)
return 0;
}
//*/
#undef MODRM_ENTRY16
@ -67,9 +63,6 @@ static int32_t resolve_modrm16(int32_t modrm_byte)
MODRM_ENTRY(0x40 | row, seg((value) + read_imm8s()))\
MODRM_ENTRY(0x80 | row, seg((value) + read_imm32s()))\
extern int32_t resolve_modrm32(int32_t modrm_byte);
/*
static int32_t resolve_modrm32(int32_t modrm_byte)
{
switch(modrm_byte)
@ -96,7 +89,6 @@ static int32_t resolve_modrm32(int32_t modrm_byte)
return 0;
}
//*/
#undef MODRM_ENTRY32
#undef MODRM_ENTRY