1313/*jslint sub:true*/ /* The symbols 'fromWireType' and 'toWireType' must be accessed via array notation to be closure-safe since craftInvokerFunction crafts functions as strings that can't be closured. */
1414
1515// -- jshint doesn't understand library syntax, so we need to specifically tell it about the symbols we define
16- /*global typeDependencies, flushPendingDeletes, getTypeName, getBasestPointer, throwBindingError, UnboundTypeError, embindRepr, registeredInstances, registeredTypes, getShiftFromSize */
16+ /*global typeDependencies, flushPendingDeletes, getTypeName, getBasestPointer, throwBindingError, UnboundTypeError, embindRepr, registeredInstances, registeredTypes*/
1717/*global ensureOverloadTable, embind__requireFunction, awaitingDependencies, makeLegalFunctionName, embind_charCodes:true, registerType, createNamedFunction, RegisteredPointer, throwInternalError*/
1818/*global simpleReadValueFromPointer, floatReadValueFromPointer, integerReadValueFromPointer, enumReadValueFromPointer, replacePublicSymbol, craftInvokerFunction, tupleRegistrations*/
1919/*global finalizationRegistry, attachFinalizer, detachFinalizer, releaseClassHandle, runDestructor*/
@@ -274,110 +274,88 @@ var LibraryEmbind = {
274274 } ) ;
275275 } ,
276276
277- _embind_register_bool__deps : [
278- '$getShiftFromSize' , '$readLatin1String' , '$registerType' ] ,
279- _embind_register_bool : ( rawType , name , size , trueValue , falseValue ) => {
280- var shift = getShiftFromSize ( size ) ;
281-
277+ _embind_register_bool__deps : [ '$readLatin1String' , '$registerType' ] ,
278+ _embind_register_bool : ( rawType , name , trueValue , falseValue ) => {
282279 name = readLatin1String ( name ) ;
283280 registerType ( rawType , {
284- name,
285- // ambiguous emscripten ABI: sometimes return values are
286- // true or false, and sometimes integers (0 or 1)
287- 'fromWireType' : ( wt ) => ! ! wt ,
288- 'toWireType' : ( destructors , o ) => o ? trueValue : falseValue ,
289- 'argPackAdvance' : 8 ,
290- 'readValueFromPointer' : function ( pointer ) {
291- // TODO: if heap is fixed (like in asm.js) this could be executed outside
292- var heap ;
293- if ( size === 1 ) {
294- heap = HEAP8 ;
295- } else if ( size === 2 ) {
296- heap = HEAP16 ;
297- } else if ( size === 4 ) {
298- heap = HEAP32 ;
299- } else {
300- throw new TypeError ( "Unknown boolean type size: " + name ) ;
301- }
302- return this [ 'fromWireType' ] ( heap [ pointer >> shift ] ) ;
303- } ,
304- destructorFunction : null , // This type does not need a destructor
305- } ) ;
306- } ,
307-
308- $getShiftFromSize__deps : [ ] ,
309- $getShiftFromSize : ( size ) => {
310- switch ( size ) {
311- case 1 : return 0 ;
312- case 2 : return 1 ;
313- case 4 : return 2 ;
314- case 8 : return 3 ;
315- default :
316- throw new TypeError ( `Unknown type size: ${ size } ` ) ;
317- }
281+ name,
282+ 'fromWireType' : function ( wt ) {
283+ // ambiguous emscripten ABI: sometimes return values are
284+ // true or false, and sometimes integers (0 or 1)
285+ return ! ! wt ;
286+ } ,
287+ 'toWireType' : function ( destructors , o ) {
288+ return o ? trueValue : falseValue ;
289+ } ,
290+ 'argPackAdvance' : 8 ,
291+ 'readValueFromPointer' : function ( pointer ) {
292+ return this [ 'fromWireType' ] ( HEAPU8 [ pointer ] ) ;
293+ } ,
294+ destructorFunction : null , // This type does not need a destructor
295+ } ) ;
318296 } ,
319297
320298 $integerReadValueFromPointer__deps : [ ] ,
321- $integerReadValueFromPointer : ( name , shift , signed ) => {
299+ $integerReadValueFromPointer : ( name , width , signed ) => {
322300 // integers are quite common, so generate very specialized functions
323- switch ( shift ) {
324- case 0 : return signed ?
301+ switch ( width ) {
302+ case 1 : return signed ?
325303 function readS8FromPointer ( pointer ) { return HEAP8 [ pointer ] ; } :
326304 function readU8FromPointer ( pointer ) { return HEAPU8 [ pointer ] ; } ;
327- case 1 : return signed ?
305+ case 2 : return signed ?
328306 function readS16FromPointer ( pointer ) { return HEAP16 [ pointer >> 1 ] ; } :
329307 function readU16FromPointer ( pointer ) { return HEAPU16 [ pointer >> 1 ] ; } ;
330- case 2 : return signed ?
308+ case 4 : return signed ?
331309 function readS32FromPointer ( pointer ) { return HEAP32 [ pointer >> 2 ] ; } :
332310 function readU32FromPointer ( pointer ) { return HEAPU32 [ pointer >> 2 ] ; } ;
333311#if WASM_BIGINT
334- case 3 : return signed ?
312+ case 8 : return signed ?
335313 function readS64FromPointer ( pointer ) { return HEAP64 [ pointer >> 3 ] ; } :
336314 function readU64FromPointer ( pointer ) { return HEAPU64 [ pointer >> 3 ] ; } ;
337315#endif
338316 default :
339- throw new TypeError ( "Unknown integer type: " + name ) ;
317+ throw new TypeError ( `invalid integer width ( ${ width } ): ${ name } ` ) ;
340318 }
341319 } ,
342320
343321 $enumReadValueFromPointer__deps : [ ] ,
344- $enumReadValueFromPointer : ( name , shift , signed ) => {
345- switch ( shift ) {
346- case 0 : return function ( pointer ) {
322+ $enumReadValueFromPointer : ( name , width , signed ) => {
323+ switch ( width ) {
324+ case 1 : return function ( pointer ) {
347325 var heap = signed ? HEAP8 : HEAPU8 ;
348326 return this [ 'fromWireType' ] ( heap [ pointer ] ) ;
349327 } ;
350- case 1 : return function ( pointer ) {
328+ case 2 : return function ( pointer ) {
351329 var heap = signed ? HEAP16 : HEAPU16 ;
352330 return this [ 'fromWireType' ] ( heap [ pointer >> 1 ] ) ;
353331 } ;
354- case 2 : return function ( pointer ) {
332+ case 4 : return function ( pointer ) {
355333 var heap = signed ? HEAP32 : HEAPU32 ;
356334 return this [ 'fromWireType' ] ( heap [ pointer >> 2 ] ) ;
357335 } ;
358336 default :
359- throw new TypeError ( "Unknown integer type: " + name ) ;
337+ throw new TypeError ( `invalid integer width ( ${ width } ): ${ name } ` ) ;
360338 }
361339 } ,
362340
363341 $floatReadValueFromPointer__deps : [ ] ,
364- $floatReadValueFromPointer : ( name , shift ) => {
365- switch ( shift ) {
366- case 2 : return function ( pointer ) {
342+ $floatReadValueFromPointer : ( name , width ) => {
343+ switch ( width ) {
344+ case 4 : return function ( pointer ) {
367345 return this [ 'fromWireType' ] ( HEAPF32 [ pointer >> 2 ] ) ;
368346 } ;
369- case 3 : return function ( pointer ) {
347+ case 8 : return function ( pointer ) {
370348 return this [ 'fromWireType' ] ( HEAPF64 [ pointer >> 3 ] ) ;
371349 } ;
372350 default :
373- throw new TypeError ( "Unknown float type: " + name ) ;
351+ throw new TypeError ( `invalid float width ( ${ width } ): ${ name } ` ) ;
374352 }
375353 } ,
376354
377355 // When converting a number from JS to C++ side, the valid range of the number is
378356 // [minRange, maxRange], inclusive.
379357 _embind_register_integer__deps : [
380- '$embindRepr' , '$getShiftFromSize' , '$ integerReadValueFromPointer',
358+ '$embindRepr' , '$integerReadValueFromPointer' ,
381359 '$readLatin1String' , '$registerType' ] ,
382360 _embind_register_integer : ( primitiveType , name , size , minRange , maxRange ) => {
383361 name = readLatin1String ( name ) ;
@@ -387,8 +365,6 @@ var LibraryEmbind = {
387365 maxRange = 4294967295 ;
388366 }
389367
390- var shift = getShiftFromSize ( size ) ;
391-
392368 var fromWireType = ( value ) => value ;
393369
394370 if ( minRange === 0 ) {
@@ -426,7 +402,7 @@ var LibraryEmbind = {
426402 'fromWireType' : fromWireType ,
427403 'toWireType' : toWireType ,
428404 'argPackAdvance' : 8 ,
429- 'readValueFromPointer' : integerReadValueFromPointer ( name , shift , minRange !== 0 ) ,
405+ 'readValueFromPointer' : integerReadValueFromPointer ( name , size , minRange !== 0 ) ,
430406 destructorFunction : null , // This type does not need a destructor
431407 } ) ;
432408 } ,
@@ -437,8 +413,6 @@ var LibraryEmbind = {
437413 _embind_register_bigint : ( primitiveType , name , size , minRange , maxRange ) => {
438414 name = readLatin1String ( name ) ;
439415
440- var shift = getShiftFromSize ( size ) ;
441-
442416 var isUnsignedType = ( name . indexOf ( 'u' ) != - 1 ) ;
443417
444418 // maxRange comes through as -1 for uint64_t (see issue 13902). Work around that temporarily
@@ -459,7 +433,7 @@ var LibraryEmbind = {
459433 return value ;
460434 } ,
461435 'argPackAdvance' : 8 ,
462- 'readValueFromPointer' : integerReadValueFromPointer ( name , shift , ! isUnsignedType ) ,
436+ 'readValueFromPointer' : integerReadValueFromPointer ( name , size , ! isUnsignedType ) ,
463437 destructorFunction : null , // This type does not need a destructor
464438 } ) ;
465439 } ,
@@ -469,10 +443,9 @@ var LibraryEmbind = {
469443#endif
470444
471445 _embind_register_float__deps : [
472- '$embindRepr' , '$floatReadValueFromPointer' , '$getShiftFromSize' ,
446+ '$embindRepr' , '$floatReadValueFromPointer' ,
473447 '$readLatin1String' , '$registerType' ] ,
474448 _embind_register_float : ( rawType , name , size ) => {
475- var shift = getShiftFromSize ( size ) ;
476449 name = readLatin1String ( name ) ;
477450 registerType ( rawType , {
478451 name,
@@ -488,7 +461,7 @@ var LibraryEmbind = {
488461 return value ;
489462 } ,
490463 'argPackAdvance' : 8 ,
491- 'readValueFromPointer' : floatReadValueFromPointer ( name , shift ) ,
464+ 'readValueFromPointer' : floatReadValueFromPointer ( name , size ) ,
492465 destructorFunction : null , // This type does not need a destructor
493466 } ) ;
494467 } ,
@@ -2391,10 +2364,9 @@ var LibraryEmbind = {
23912364 } ) ;
23922365 } ,
23932366
2394- _embind_register_enum__deps : [ '$exposePublicSymbol' , '$getShiftFromSize' , '$ enumReadValueFromPointer',
2367+ _embind_register_enum__deps : [ '$exposePublicSymbol ', '$enumReadValueFromPointer ',
23952368 '$readLatin1String ', '$registerType '] ,
23962369 _embind_register_enum : ( rawType , name , size , isSigned ) => {
2397- var shift = getShiftFromSize ( size ) ;
23982370 name = readLatin1String ( name ) ;
23992371
24002372 function ctor ( ) { }
@@ -2408,7 +2380,7 @@ var LibraryEmbind = {
24082380 } ,
24092381 'toWireType' : ( destructors , c ) => c . value ,
24102382 'argPackAdvance' : 8 ,
2411- 'readValueFromPointer' : enumReadValueFromPointer ( name , shift , isSigned ) ,
2383+ 'readValueFromPointer' : enumReadValueFromPointer ( name , size , isSigned ) ,
24122384 destructorFunction : null ,
24132385 } ) ;
24142386 exposePublicSymbol ( name , ctor ) ;
0 commit comments