diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-12-01 10:34:07 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-12-07 14:23:21 -0800 |
commit | 4d0bf4e67ae46007a8870e8de344389b415981b3 (patch) | |
tree | 8db83fd01ffca4db54a87f7c2c12e8dd1eeac071 /src/runtime.js | |
parent | b4d6f4030582cef2ec07ab9818385db4f143ccf8 (diff) |
dynCall
Diffstat (limited to 'src/runtime.js')
-rw-r--r-- | src/runtime.js | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/runtime.js b/src/runtime.js index a32785f3..f63690c0 100644 --- a/src/runtime.js +++ b/src/runtime.js @@ -311,13 +311,26 @@ var Runtime = { return ret; }, - getFunctionTable: function(sig) { - return FUNCTION_TABLE; // TODO: Support asm + dynCall: function(sig, ptr, args) { + if (args && args.length) { +#if ASM_JS + args.splice(0, 0, ptr); + return Module['dynCall_' + sig].apply(null, args); +#else + return FUNCTION_TABLE[ptr].apply(null, args); +#endif + } else { +#if ASM_JS + return Module['dynCall_' + sig].call(null, ptr); +#else + return FUNCTION_TABLE[ptr](); +#endif + } }, addFunction: function(func, sig) { assert(sig); - var table = Runtime.getFunctionTable(sig); + var table = FUNCTION_TABLE; // TODO: support asm var ret = table.length; table.push(func); table.push(0); |