|
13 | 13 |
|
14 | 14 | // -- jshint doesn't understand library syntax, so we need to mark the symbols exposed here
|
15 | 15 | /*global getStringOrSymbol, emval_handles, Emval, __emval_unregister, count_emval_handles, emval_symbols, __emval_decref, emval_newers*/
|
16 |
| -/*global craftEmvalAllocator, emval_addMethodCaller, emval_methodCallers, addToLibrary, emval_allocateDestructors, global, emval_lookupTypes, makeLegalFunctionName*/ |
| 16 | +/*global craftEmvalAllocator, emval_addMethodCaller, emval_methodCallers, addToLibrary, global, emval_lookupTypes, makeLegalFunctionName*/ |
17 | 17 | /*global emval_get_global*/
|
18 | 18 |
|
19 | 19 | var LibraryEmVal = {
|
@@ -370,13 +370,6 @@ var LibraryEmVal = {
|
370 | 370 | return a;
|
371 | 371 | },
|
372 | 372 |
|
373 |
| - $emval_allocateDestructors__deps: ['$Emval'], |
374 |
| - $emval_allocateDestructors: (destructorsRef) => { |
375 |
| - var destructors = []; |
376 |
| - {{{ makeSetValue('destructorsRef', '0', 'Emval.toHandle(destructors)', '*') }}}; |
377 |
| - return destructors; |
378 |
| - }, |
379 |
| - |
380 | 373 | // Leave id 0 undefined. It's not a big deal, but might be confusing
|
381 | 374 | // to have null be a valid method caller.
|
382 | 375 | $emval_methodCallers: [undefined],
|
@@ -414,9 +407,7 @@ var LibraryEmVal = {
|
414 | 407 | types[i].deleteObject(argN[i]);
|
415 | 408 | }
|
416 | 409 | }
|
417 |
| - if (!retType.isVoid) { |
418 |
| - return retType['toWireType'](destructors, rv); |
419 |
| - } |
| 410 | + return retType['toWireType'](destructors, rv); |
420 | 411 | };
|
421 | 412 | #else
|
422 | 413 | var params = ["retType"];
|
@@ -461,20 +452,18 @@ var LibraryEmVal = {
|
461 | 452 | return emval_addMethodCaller(invokerFunction);
|
462 | 453 | },
|
463 | 454 |
|
464 |
| - _emval_call_method__deps: ['$emval_allocateDestructors', '$getStringOrSymbol', '$emval_methodCallers', '$Emval'], |
| 455 | + _emval_call_method__deps: ['$getStringOrSymbol', '$emval_methodCallers', '$Emval'], |
465 | 456 | _emval_call_method: (caller, handle, methodName, destructorsRef, args) => {
|
466 | 457 | caller = emval_methodCallers[caller];
|
467 | 458 | handle = Emval.toValue(handle);
|
468 | 459 | methodName = getStringOrSymbol(methodName);
|
469 |
| - return caller(handle, methodName, emval_allocateDestructors(destructorsRef), args); |
470 |
| - }, |
471 |
| - |
472 |
| - _emval_call_void_method__deps: ['$emval_allocateDestructors', '$getStringOrSymbol', '$emval_methodCallers', '$Emval'], |
473 |
| - _emval_call_void_method: (caller, handle, methodName, args) => { |
474 |
| - caller = emval_methodCallers[caller]; |
475 |
| - handle = Emval.toValue(handle); |
476 |
| - methodName = getStringOrSymbol(methodName); |
477 |
| - caller(handle, methodName, null, args); |
| 460 | + var destructors = []; |
| 461 | + var result = caller(handle, methodName, destructors, args); |
| 462 | + // void and any other types w/o destructors don't need to allocate a handle |
| 463 | + if (destructors.length) { |
| 464 | + {{{ makeSetValue('destructorsRef', '0', 'Emval.toHandle(destructors)', '*') }}}; |
| 465 | + } |
| 466 | + return result; |
478 | 467 | },
|
479 | 468 |
|
480 | 469 | _emval_typeof__deps: ['$Emval'],
|
|
0 commit comments