diff options
author | Alon Zakai <azakai@mozilla.com> | 2011-02-12 19:36:23 -0800 |
---|---|---|
committer | Alon Zakai <azakai@mozilla.com> | 2011-02-12 19:36:23 -0800 |
commit | 96c8d27ce66e07dac8ce9835d2ff00a7d7e8b9ee (patch) | |
tree | 67302d1eec660748dc26c7250e7d485435a12e00 /src | |
parent | bace573eb4e44e43227d4134e34158969d914efa (diff) |
fix for compiling with spidermonkey
Diffstat (limited to 'src')
-rw-r--r-- | src/analyzer.js | 12 | ||||
-rw-r--r-- | src/library.js | 11 | ||||
-rw-r--r-- | src/preamble.js | 2 | ||||
-rw-r--r-- | src/runtime.js | 10 |
4 files changed, 22 insertions, 13 deletions
diff --git a/src/analyzer.js b/src/analyzer.js index f79217bd..54001af2 100644 --- a/src/analyzer.js +++ b/src/analyzer.js @@ -14,6 +14,7 @@ function cleanFunc(func) { } function analyzer(data, givenTypes) { + // Substrate substrate = new Substrate('Analyzer'); // Sorter @@ -917,10 +918,19 @@ function analyzer(data, givenTypes) { } }); + // Data substrate.addItem({ items: data }, 'Sorter'); - return substrate.solve(); + // Solve it + var ret = substrate.solve(); + + // Add additional necessary items + ret.functionStubs.push({ + intertype: 'functionStub', + ident: '@memset' // we need memset as a fundamental runtime tool, so always include that from the library + }); + return ret; } diff --git a/src/library.js b/src/library.js index f79de6c8..e41ca866 100644 --- a/src/library.js +++ b/src/library.js @@ -567,9 +567,14 @@ var Library = { llvm_memmove_p0i8_p0i8_i32: 'memmove', llvm_memmove_p0i8_p0i8_i64: 'memmove', - llvm_memset_i32: 'Runtime.memset', - llvm_memset_p0i8_i32: 'Runtime.memset', - llvm_memset_p0i8_i64: 'Runtime.memset', + memset: function(ptr, value, num) { + for (var i = 0; i < num; i++) { + {{{ makeSetValue('ptr', 'i', 'value', 'null') }}} + } + }, + llvm_memset_i32: 'memset', + llvm_memset_p0i8_i32: 'memset', + llvm_memset_p0i8_i64: 'memset', strlen: function(ptr) { return String_len(ptr); diff --git a/src/preamble.js b/src/preamble.js index fa64d916..c2941902 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -231,7 +231,7 @@ function __initializeRuntime__() { Module['_malloc'] = _malloc = __Znwj = __Znaj = __Znam = __Znwm = Module['_malloc'] ? Module['_malloc'] : Runtime.staticAlloc; Module['_calloc'] = _calloc = Module['_calloc'] ? Module['_calloc'] : function(n, s) { var ret = _malloc(n*s); - Runtime.memset(ret, 0, n*s); + _memset(ret, 0, n*s); return ret; }; Module['_free'] = _free = __ZdlPv = __ZdaPv = Module['_free'] ? Module['_free'] : function() { }; diff --git a/src/runtime.js b/src/runtime.js index 4de337f7..1a617ae5 100644 --- a/src/runtime.js +++ b/src/runtime.js @@ -11,7 +11,7 @@ RuntimeGenerator = { ret += '; assert(' + size + ' > 0, "Trying to allocate 0")'; } if (init) { - ret += '; Runtime.memset(' + type + 'TOP, 0, ' + size + ')'; + ret += '; _memset(' + type + 'TOP, 0, ' + size + ')'; } ret += '; ' + type + 'TOP += ' + size; if (QUANTUM_SIZE > 1) { @@ -39,7 +39,7 @@ RuntimeGenerator = { ret += '; assert(STACKTOP < STACK_MAX)'; } if (INIT_STACK) { - ret += '; Runtime.memset(__stackBase__, 0, ' + initial + ')'; + ret += '; _memset(__stackBase__, 0, ' + initial + ')'; } return ret; }, @@ -77,12 +77,6 @@ Runtime = { staticAlloc: unInline('staticAlloc', ['size']), alignMemory: unInline('alignMemory', ['size', 'quantum']), - memset: function(ptr, value, num) { - for (var i = 0; i < num; i++) { - {{{ makeSetValue('ptr', 'i', 'value', 'null') }}} - } - }, - getFunctionIndex: function getFunctionIndex(func, ident) { var key = FUNCTION_TABLE.length; FUNCTION_TABLE[key] = func; |