diff options
author | Chad Austin <caustin@gmail.com> | 2014-03-24 00:54:18 -0700 |
---|---|---|
committer | Chad Austin <chad@chadaustin.me> | 2014-03-28 23:56:41 -0700 |
commit | fa3e4f460a86ee2e0212fe2471690f67b9b4280c (patch) | |
tree | 8f29ee37885f8249bd9bea84bf5dadc5acf99048 /src/embind/embind.js | |
parent | bcb2da768ab5b559b1603b28e3f7b1a3e1b0b6fc (diff) |
Make val::call<> compatible with asm.js
Diffstat (limited to 'src/embind/embind.js')
-rw-r--r-- | src/embind/embind.js | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/embind/embind.js b/src/embind/embind.js index 4ef8646f..1fb9403f 100644 --- a/src/embind/embind.js +++ b/src/embind/embind.js @@ -164,6 +164,10 @@ var typeDependencies = {}; var registeredPointers = {}; function registerType(rawType, registeredInstance) { + if (!('varArgAdvance' in registeredInstance)) { + throw new TypeError('registerType registeredInstance requires varArgAdvance'); + } + var name = registeredInstance.name; if (!rawType) { throwBindingError('type "' + name + '" must have a positive integer typeid pointer'); @@ -268,6 +272,7 @@ function __embind_register_void(rawType, name) { name = readLatin1String(name); registerType(rawType, { name: name, + 'varArgAdvance': 0, 'fromWireType': function() { return undefined; }, @@ -432,8 +437,10 @@ function __embind_register_float(rawType, name, size) { }, 'varArgAdvance': 8, 'readValueFromPointer': function(pointer) { - var heap = (shift === 2) ? HEAPF32 : HEAPF64; - return this['fromWireType'](heap[pointer >> shift]); + // TODO: rename readValueFromPointer to + // readValueFromVarArg in clang/emscripten, it appears + // floats are passed in varargs via HEAPF64 + return this['fromWireType'](HEAPF64[pointer >> 3]); }, writeValueToPointer: function(value, pointer, _destructors) { var heap = (shift === 2) ? HEAPF32 : HEAPF64; |