Skip to content

Commit 6d0e4a8

Browse files
authored
Use AsciiToString in Embind. NFC (#24355)
Embind had its own read readLatin1String, which is functionally identical to the AsciiToString helper we have in the shared libstrings library. The only difference is that It had extra logic for caching characters by code, which are likely not even an optimisation in modern JIT engines, and if we do want to do that in the future for some reason, it's best to do so in centralised helpers. For now, a simple search-replace gives an easy win in terms of code size.
1 parent 99028a8 commit 6d0e4a8

File tree

6 files changed

+84
-103
lines changed

6 files changed

+84
-103
lines changed

src/lib/libembind.js

Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
/*global Module, asm*/
99
/*global _malloc, _free, _memcpy*/
1010
/*global FUNCTION_TABLE, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64*/
11-
/*global readLatin1String*/
11+
/*global AsciiToString*/
1212
/*global Emval, emval_handle_array, __emval_decref*/
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

@@ -229,9 +229,9 @@ var LibraryEmbind = {
229229
return sharedRegisterType(rawType, registeredInstance, options);
230230
},
231231

232-
_embind_register_void__deps: ['$readLatin1String', '$registerType'],
232+
_embind_register_void__deps: ['$AsciiToString', '$registerType'],
233233
_embind_register_void: (rawType, name) => {
234-
name = readLatin1String(name);
234+
name = AsciiToString(name);
235235
registerType(rawType, {
236236
isVoid: true, // void return values can be optimized out sometimes
237237
name,
@@ -243,9 +243,9 @@ var LibraryEmbind = {
243243
},
244244

245245
_embind_register_bool__docs: '/** @suppress {globalThis} */',
246-
_embind_register_bool__deps: ['$readLatin1String', '$registerType', '$GenericWireTypeSize'],
246+
_embind_register_bool__deps: ['$AsciiToString', '$registerType', '$GenericWireTypeSize'],
247247
_embind_register_bool: (rawType, name, trueValue, falseValue) => {
248-
name = readLatin1String(name);
248+
name = AsciiToString(name);
249249
registerType(rawType, {
250250
name,
251251
'fromWireType': function(wt) {
@@ -331,14 +331,14 @@ var LibraryEmbind = {
331331
// When converting a number from JS to C++ side, the valid range of the number is
332332
// [minRange, maxRange], inclusive.
333333
_embind_register_integer__deps: [
334-
'$integerReadValueFromPointer', '$readLatin1String', '$registerType',
334+
'$integerReadValueFromPointer', '$AsciiToString', '$registerType',
335335
#if ASSERTIONS
336336
'$embindRepr',
337337
'$assertIntegerRange',
338338
#endif
339339
],
340340
_embind_register_integer: (primitiveType, name, size, minRange, maxRange) => {
341-
name = readLatin1String(name);
341+
name = AsciiToString(name);
342342

343343
const isUnsignedType = minRange === 0;
344344

@@ -372,14 +372,14 @@ var LibraryEmbind = {
372372
#if WASM_BIGINT
373373
_embind_register_bigint__docs: '/** @suppress {globalThis} */',
374374
_embind_register_bigint__deps: [
375-
'$readLatin1String', '$registerType', '$integerReadValueFromPointer',
375+
'$AsciiToString', '$registerType', '$integerReadValueFromPointer',
376376
#if ASSERTIONS
377377
'$embindRepr',
378378
'$assertIntegerRange',
379379
#endif
380380
],
381381
_embind_register_bigint: (primitiveType, name, size, minRange, maxRange) => {
382-
name = readLatin1String(name);
382+
name = AsciiToString(name);
383383

384384
const isUnsignedType = minRange === 0n;
385385

@@ -426,13 +426,13 @@ var LibraryEmbind = {
426426
#endif
427427

428428
_embind_register_float__deps: [
429-
'$floatReadValueFromPointer', '$readLatin1String', '$registerType',
429+
'$floatReadValueFromPointer', '$AsciiToString', '$registerType',
430430
#if ASSERTIONS
431431
'$embindRepr',
432432
#endif
433433
],
434434
_embind_register_float: (rawType, name, size) => {
435-
name = readLatin1String(name);
435+
name = AsciiToString(name);
436436
registerType(rawType, {
437437
name,
438438
'fromWireType': (value) => value,
@@ -458,11 +458,11 @@ var LibraryEmbind = {
458458
},
459459

460460
_embind_register_std_string__deps: [
461-
'$readLatin1String', '$registerType',
461+
'$AsciiToString', '$registerType',
462462
'$readPointer', '$throwBindingError',
463463
'$stringToUTF8', '$lengthBytesUTF8', 'malloc', 'free'],
464464
_embind_register_std_string: (rawType, name) => {
465-
name = readLatin1String(name);
465+
name = AsciiToString(name);
466466
var stdStringIsUTF8
467467
#if EMBIND_STD_STRING_IS_UTF8
468468
= true;
@@ -561,12 +561,12 @@ var LibraryEmbind = {
561561
},
562562

563563
_embind_register_std_wstring__deps: [
564-
'$readLatin1String', '$registerType', '$readPointer',
564+
'$AsciiToString', '$registerType', '$readPointer',
565565
'$UTF16ToString', '$stringToUTF16', '$lengthBytesUTF16',
566566
'$UTF32ToString', '$stringToUTF32', '$lengthBytesUTF32',
567567
],
568568
_embind_register_std_wstring: (rawType, charSize, name) => {
569-
name = readLatin1String(name);
569+
name = AsciiToString(name);
570570
var decodeString, encodeString, readCharAt, lengthBytesUTF;
571571
if (charSize === 2) {
572572
decodeString = UTF16ToString;
@@ -646,7 +646,7 @@ var LibraryEmbind = {
646646
registerType(rawOptionalType, EmValOptionalType);
647647
},
648648

649-
_embind_register_memory_view__deps: ['$readLatin1String', '$registerType'],
649+
_embind_register_memory_view__deps: ['$AsciiToString', '$registerType'],
650650
_embind_register_memory_view: (rawType, dataTypeIndex, name) => {
651651
var typeMapping = [
652652
Int8Array,
@@ -671,7 +671,7 @@ var LibraryEmbind = {
671671
return new TA(HEAP8.buffer, data, size);
672672
}
673673

674-
name = readLatin1String(name);
674+
name = AsciiToString(name);
675675
registerType(rawType, {
676676
name,
677677
'fromWireType': decodeMemoryView,
@@ -844,7 +844,7 @@ var LibraryEmbind = {
844844
return createNamedFunction(humanName, invokerFn);
845845
},
846846

847-
$embind__requireFunction__deps: ['$readLatin1String', '$throwBindingError'
847+
$embind__requireFunction__deps: ['$AsciiToString', '$throwBindingError'
848848
#if DYNCALLS || !WASM_BIGINT || MEMORY64 || CAN_ADDRESS_2GB
849849
, '$getDynCaller'
850850
#endif
@@ -854,7 +854,7 @@ var LibraryEmbind = {
854854
assert(!isAsync, 'Async bindings are only supported with JSPI.');
855855
#endif
856856

857-
signature = readLatin1String(signature);
857+
signature = AsciiToString(signature);
858858

859859
function makeDynCaller() {
860860
#if DYNCALLS
@@ -889,11 +889,11 @@ var LibraryEmbind = {
889889

890890
_embind_register_function__deps: [
891891
'$craftInvokerFunction', '$exposePublicSymbol', '$heap32VectorToArray',
892-
'$readLatin1String', '$replacePublicSymbol', '$embind__requireFunction',
892+
'$AsciiToString', '$replacePublicSymbol', '$embind__requireFunction',
893893
'$throwUnboundTypeError', '$whenDependentTypesAreResolved', '$getFunctionName'],
894894
_embind_register_function: (name, argCount, rawArgTypesAddr, signature, rawInvoker, fn, isAsync, isNonnullReturn) => {
895895
var argTypes = heap32VectorToArray(argCount, rawArgTypesAddr);
896-
name = readLatin1String(name);
896+
name = AsciiToString(name);
897897
name = getFunctionName(name);
898898

899899
rawInvoker = embind__requireFunction(signature, rawInvoker, isAsync);
@@ -910,7 +910,7 @@ var LibraryEmbind = {
910910
},
911911

912912
_embind_register_value_array__deps: [
913-
'$tupleRegistrations', '$readLatin1String', '$embind__requireFunction'],
913+
'$tupleRegistrations', '$AsciiToString', '$embind__requireFunction'],
914914
_embind_register_value_array: (
915915
rawType,
916916
name,
@@ -920,7 +920,7 @@ var LibraryEmbind = {
920920
rawDestructor
921921
) => {
922922
tupleRegistrations[rawType] = {
923-
name: readLatin1String(name),
923+
name: AsciiToString(name),
924924
rawConstructor: embind__requireFunction(constructorSignature, rawConstructor),
925925
rawDestructor: embind__requireFunction(destructorSignature, rawDestructor),
926926
elements: [],
@@ -1011,7 +1011,7 @@ var LibraryEmbind = {
10111011
},
10121012

10131013
_embind_register_value_object__deps: [
1014-
'$structRegistrations', '$readLatin1String', '$embind__requireFunction'],
1014+
'$structRegistrations', '$AsciiToString', '$embind__requireFunction'],
10151015
_embind_register_value_object: (
10161016
rawType,
10171017
name,
@@ -1021,15 +1021,15 @@ var LibraryEmbind = {
10211021
rawDestructor
10221022
) => {
10231023
structRegistrations[rawType] = {
1024-
name: readLatin1String(name),
1024+
name: AsciiToString(name),
10251025
rawConstructor: embind__requireFunction(constructorSignature, rawConstructor),
10261026
rawDestructor: embind__requireFunction(destructorSignature, rawDestructor),
10271027
fields: [],
10281028
};
10291029
},
10301030

10311031
_embind_register_value_object_field__deps: [
1032-
'$structRegistrations', '$readLatin1String', '$embind__requireFunction'],
1032+
'$structRegistrations', '$AsciiToString', '$embind__requireFunction'],
10331033
_embind_register_value_object_field: (
10341034
structType,
10351035
fieldName,
@@ -1043,7 +1043,7 @@ var LibraryEmbind = {
10431043
setterContext
10441044
) => {
10451045
structRegistrations[structType].fields.push({
1046-
fieldName: readLatin1String(fieldName),
1046+
fieldName: AsciiToString(fieldName),
10471047
getterReturnType,
10481048
getter: embind__requireFunction(getterSignature, getter),
10491049
getterContext,
@@ -1687,7 +1687,7 @@ var LibraryEmbind = {
16871687
_embind_register_class__deps: [
16881688
'$BindingError', '$ClassHandle', '$createNamedFunction',
16891689
'$registeredPointers', '$exposePublicSymbol',
1690-
'$makeLegalFunctionName', '$readLatin1String',
1690+
'$makeLegalFunctionName', '$AsciiToString',
16911691
'$RegisteredClass', '$RegisteredPointer', '$replacePublicSymbol',
16921692
'$embind__requireFunction', '$throwUnboundTypeError',
16931693
'$whenDependentTypesAreResolved'],
@@ -1704,7 +1704,7 @@ var LibraryEmbind = {
17041704
name,
17051705
destructorSignature,
17061706
rawDestructor) => {
1707-
name = readLatin1String(name);
1707+
name = AsciiToString(name);
17081708
getActualType = embind__requireFunction(getActualTypeSignature, getActualType);
17091709
upcast &&= embind__requireFunction(upcastSignature, upcast);
17101710
downcast &&= embind__requireFunction(downcastSignature, downcast);
@@ -1887,7 +1887,7 @@ var LibraryEmbind = {
18871887
},
18881888

18891889
_embind_register_class_function__deps: [
1890-
'$craftInvokerFunction', '$heap32VectorToArray', '$readLatin1String',
1890+
'$craftInvokerFunction', '$heap32VectorToArray', '$AsciiToString',
18911891
'$embind__requireFunction', '$throwUnboundTypeError',
18921892
'$whenDependentTypesAreResolved', '$getFunctionName'],
18931893
_embind_register_class_function: (rawClassType,
@@ -1901,7 +1901,7 @@ var LibraryEmbind = {
19011901
isAsync,
19021902
isNonnullReturn) => {
19031903
var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);
1904-
methodName = readLatin1String(methodName);
1904+
methodName = AsciiToString(methodName);
19051905
methodName = getFunctionName(methodName);
19061906
rawInvoker = embind__requireFunction(invokerSignature, rawInvoker, isAsync);
19071907

@@ -1958,7 +1958,7 @@ var LibraryEmbind = {
19581958
},
19591959

19601960
_embind_register_class_property__deps: [
1961-
'$readLatin1String', '$embind__requireFunction', '$runDestructors',
1961+
'$AsciiToString', '$embind__requireFunction', '$runDestructors',
19621962
'$throwBindingError', '$throwUnboundTypeError',
19631963
'$whenDependentTypesAreResolved', '$validateThis'],
19641964
_embind_register_class_property: (classType,
@@ -1971,7 +1971,7 @@ var LibraryEmbind = {
19711971
setterSignature,
19721972
setter,
19731973
setterContext) => {
1974-
fieldName = readLatin1String(fieldName);
1974+
fieldName = AsciiToString(fieldName);
19751975
getter = embind__requireFunction(getterSignature, getter);
19761976

19771977
whenDependentTypesAreResolved([], [classType], (classType) => {
@@ -2026,7 +2026,7 @@ var LibraryEmbind = {
20262026

20272027
_embind_register_class_class_function__deps: [
20282028
'$craftInvokerFunction', '$ensureOverloadTable', '$heap32VectorToArray',
2029-
'$readLatin1String', '$embind__requireFunction', '$throwUnboundTypeError',
2029+
'$AsciiToString', '$embind__requireFunction', '$throwUnboundTypeError',
20302030
'$whenDependentTypesAreResolved', '$getFunctionName'],
20312031
_embind_register_class_class_function: (rawClassType,
20322032
methodName,
@@ -2038,7 +2038,7 @@ var LibraryEmbind = {
20382038
isAsync,
20392039
isNonnullReturn) => {
20402040
var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);
2041-
methodName = readLatin1String(methodName);
2041+
methodName = AsciiToString(methodName);
20422042
methodName = getFunctionName(methodName);
20432043
rawInvoker = embind__requireFunction(invokerSignature, rawInvoker, isAsync);
20442044
whenDependentTypesAreResolved([], [rawClassType], (classType) => {
@@ -2094,7 +2094,7 @@ var LibraryEmbind = {
20942094
},
20952095

20962096
_embind_register_class_class_property__deps: [
2097-
'$readLatin1String', '$embind__requireFunction', '$runDestructors',
2097+
'$AsciiToString', '$embind__requireFunction', '$runDestructors',
20982098
'$throwBindingError', '$throwUnboundTypeError',
20992099
'$whenDependentTypesAreResolved'],
21002100
_embind_register_class_class_property: (rawClassType,
@@ -2105,7 +2105,7 @@ var LibraryEmbind = {
21052105
getter,
21062106
setterSignature,
21072107
setter) => {
2108-
fieldName = readLatin1String(fieldName);
2108+
fieldName = AsciiToString(fieldName);
21092109
getter = embind__requireFunction(getterSignature, getter);
21102110

21112111
whenDependentTypesAreResolved([], [rawClassType], (classType) => {
@@ -2158,12 +2158,12 @@ var LibraryEmbind = {
21582158

21592159
_embind_create_inheriting_constructor__deps: [
21602160
'$createNamedFunction', '$Emval',
2161-
'$PureVirtualError', '$readLatin1String',
2161+
'$PureVirtualError', '$AsciiToString',
21622162
'$registerInheritedInstance',
21632163
'$requireRegisteredType', '$throwBindingError',
21642164
'$unregisterInheritedInstance', '$detachFinalizer', '$attachFinalizer'],
21652165
_embind_create_inheriting_constructor: (constructorName, wrapperType, properties) => {
2166-
constructorName = readLatin1String(constructorName);
2166+
constructorName = AsciiToString(constructorName);
21672167
wrapperType = requireRegisteredType(wrapperType, 'wrapper');
21682168
properties = Emval.toValue(properties);
21692169

@@ -2246,7 +2246,7 @@ var LibraryEmbind = {
22462246
rawShare,
22472247
destructorSignature,
22482248
rawDestructor) => {
2249-
name = readLatin1String(name);
2249+
name = AsciiToString(name);
22502250
rawGetPointee = embind__requireFunction(getPointeeSignature, rawGetPointee);
22512251
rawConstructor = embind__requireFunction(constructorSignature, rawConstructor);
22522252
rawShare = embind__requireFunction(shareSignature, rawShare);
@@ -2273,9 +2273,9 @@ var LibraryEmbind = {
22732273

22742274
_embind_register_enum__docs: '/** @suppress {globalThis} */',
22752275
_embind_register_enum__deps: ['$exposePublicSymbol', '$enumReadValueFromPointer',
2276-
'$readLatin1String', '$registerType'],
2276+
'$AsciiToString', '$registerType'],
22772277
_embind_register_enum: (rawType, name, size, isSigned) => {
2278-
name = readLatin1String(name);
2278+
name = AsciiToString(name);
22792279

22802280
function ctor() {}
22812281
ctor.values = {};
@@ -2294,10 +2294,10 @@ var LibraryEmbind = {
22942294
exposePublicSymbol(name, ctor);
22952295
},
22962296

2297-
_embind_register_enum_value__deps: ['$createNamedFunction', '$readLatin1String', '$requireRegisteredType'],
2297+
_embind_register_enum_value__deps: ['$createNamedFunction', '$AsciiToString', '$requireRegisteredType'],
22982298
_embind_register_enum_value: (rawEnumType, name, enumValue) => {
22992299
var enumType = requireRegisteredType(rawEnumType, 'enum');
2300-
name = readLatin1String(name);
2300+
name = AsciiToString(name);
23012301

23022302
var Enum = enumType.constructor;
23032303

@@ -2309,9 +2309,9 @@ var LibraryEmbind = {
23092309
Enum[name] = Value;
23102310
},
23112311

2312-
_embind_register_constant__deps: ['$readLatin1String', '$whenDependentTypesAreResolved'],
2312+
_embind_register_constant__deps: ['$AsciiToString', '$whenDependentTypesAreResolved'],
23132313
_embind_register_constant: (name, type, value) => {
2314-
name = readLatin1String(name);
2314+
name = AsciiToString(name);
23152315
whenDependentTypesAreResolved([], [type], (type) => {
23162316
type = type[0];
23172317
Module[name] = type['fromWireType'](value);

0 commit comments

Comments
 (0)