aboutsummaryrefslogtreecommitdiff
path: root/src/runtime.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-12-01 10:34:07 -0800
committerAlon Zakai <alonzakai@gmail.com>2012-12-07 14:23:21 -0800
commit4d0bf4e67ae46007a8870e8de344389b415981b3 (patch)
tree8db83fd01ffca4db54a87f7c2c12e8dd1eeac071 /src/runtime.js
parentb4d6f4030582cef2ec07ab9818385db4f143ccf8 (diff)
dynCall
Diffstat (limited to 'src/runtime.js')
-rw-r--r--src/runtime.js19
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);