From 7a6dc0f7e54a8c8f1bc1244384cd6e37d1858d4c Mon Sep 17 00:00:00 2001 From: copy Date: Wed, 16 Sep 2015 03:14:23 +0200 Subject: [PATCH] Avoid ram allocation if state is restored --- src/browser/main.js | 15 ++++++++------- src/browser/starter.js | 5 +++++ src/cpu.js | 2 +- src/memory.js | 21 ++++++++++++++++----- 4 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/browser/main.js b/src/browser/main.js index 23488af2..c284333e 100644 --- a/src/browser/main.js +++ b/src/browser/main.js @@ -176,9 +176,6 @@ start_emulation({ settings: settings, - done: function(emulator) { - emulator.run(); - }, }); }; @@ -408,11 +405,13 @@ function done(emulator) { - emulator.run(); - if(query_args["c"]) { - emulator.serial0_send(query_args["c"] + "\n"); + setTimeout(function() + { + //emulator.serial0_send(query_args["c"] + "\n"); + emulator.keyboard_send_text(query_args["c"] + "\n"); + }, 25); } } } @@ -568,6 +567,8 @@ "initial_state": settings.initial_state, "filesystem": settings.filesystem || {}, + + "autostart": true, }); emulator.add_listener("emulator-ready", function() @@ -579,7 +580,7 @@ init_ui(settings, emulator); - result.done(emulator); + result.done && result.done(emulator); }); emulator.add_listener("download-progress", function(e) diff --git a/src/browser/starter.js b/src/browser/starter.js index b2dadeae..e02aef59 100644 --- a/src/browser/starter.js +++ b/src/browser/starter.js @@ -356,6 +356,11 @@ function V86Starter(options) function done() { + if(settings.initial_state) + { + settings.no_initial_alloc = true; + } + this.bus.send("cpu-init", settings); setTimeout(function() diff --git a/src/cpu.js b/src/cpu.js index 77d4c3e7..166ad66e 100644 --- a/src/cpu.js +++ b/src/cpu.js @@ -562,7 +562,7 @@ CPU.prototype.reset = function() CPU.prototype.init = function(settings, device_bus) { this.memory_size = settings.memory_size || 1024 * 1024 * 64; - this.memory = new Memory(this.memory_size); + this.memory = new Memory(this.memory_size, settings.no_initial_alloc); this.reset(); diff --git a/src/memory.js b/src/memory.js index 611cf9ce..9260f407 100644 --- a/src/memory.js +++ b/src/memory.js @@ -4,7 +4,7 @@ * @constructor * @param {number} memory_size */ -function Memory(memory_size) +function Memory(memory_size, no_alloc) { this.size = memory_size; @@ -24,11 +24,22 @@ function Memory(memory_size) dbg_assert((memory_size & MMAP_BLOCK_SIZE - 1) === 0); - var buffer = new ArrayBuffer(memory_size); + if(no_alloc) + { + var buffer = new ArrayBuffer(0); - this.mem8 = new Uint8Array(buffer); - this.mem16 = new Uint16Array(buffer); - this.mem32s = new Int32Array(buffer); + this.mem8 = new Uint8Array(buffer); + this.mem16 = new Uint16Array(buffer); + this.mem32s = new Int32Array(buffer); + } + else + { + var buffer = new ArrayBuffer(memory_size); + + this.mem8 = new Uint8Array(buffer); + this.mem16 = new Uint16Array(buffer); + this.mem32s = new Int32Array(buffer); + } }; Memory.prototype.get_state = function()