diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-01-30 14:38:35 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-01-30 14:38:35 -0800 |
commit | 3370e11ac457261f0d0986cafe7f6a07a4defb25 (patch) | |
tree | 15ee5a0a4fbdfb058b9149fe0ee3edde2d804b6f | |
parent | 183b0c5cff13c976c67233ce9a830785bd23565f (diff) |
properly do unneeded args removal from last commit so it doesn't break inlining
-rw-r--r-- | src/jsifier.js | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/jsifier.js b/src/jsifier.js index 34329e70..761a5fec 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -1349,15 +1349,6 @@ function JSify(data, functionsOnly, givenFunctions) { } else { args = args.map(function(arg, i) { return asmEnsureFloat(arg, argsTypes[i]) }); } - - // remove unneeded arguments, which the asm sig can show us - var libsig = LibraryManager.library[shortident + '__sig']; - if (libsig) { - while (libsig.length - 1 < args.length) { - args.pop(); - argsTypes.pop(); - } - } } varargs = varargs.map(function(vararg, i) { @@ -1403,6 +1394,19 @@ function JSify(data, functionsOnly, givenFunctions) { return inline.apply(null, args); // Warning: inlining does not prevent recalculation of the arguments. They should be simple identifiers } + if (ASM_JS) { + // remove unneeded arguments, which the asm sig can show us. this lets us alias memset with llvm.memset, we just + // drop the final 2 args so things validate properly in asm + var libsig = LibraryManager.library[shortident + '__sig']; + if (libsig) { + assert(!hasVarArgs); + while (libsig.length - 1 < args.length) { + args.pop(); + argsTypes.pop(); + } + } + } + var returnType; if (byPointer || ASM_JS) { returnType = getReturnType(type); |