Skip to content

Commit 7cd582d

Browse files
committed
chore: remove helper since it's somewhat out of scope
1 parent 4adf9ec commit 7cd582d

1 file changed

Lines changed: 47 additions & 21 deletions

File tree

src/module.ts

Lines changed: 47 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3839,23 +3839,6 @@ function determinePackedType(type: Type): PackedType {
38393839
return PackedType.NotPacked;
38403840
}
38413841

3842-
/** Prepares a type, preserving nullable reference types. */
3843-
function prepareTypeWithNullability(
3844-
builder: binaryen.TypeBuilderRef,
3845-
seen: Map<Type,HeapTypeRef>,
3846-
type: Type
3847-
): TypeRef {
3848-
return type.is(TypeFlags.Nullable)
3849-
? binaryen._TypeBuilderGetTempRefType(
3850-
builder,
3851-
binaryen._BinaryenTypeGetHeapType(
3852-
prepareType(builder, seen, type.nonNullableType)
3853-
),
3854-
true
3855-
)
3856-
: prepareType(builder, seen, type);
3857-
}
3858-
38593842
/** Recursively prepares the given GC type, potentially returning a temporary type. */
38603843
function prepareType(builder: binaryen.TypeBuilderRef, seen: Map<Type,HeapTypeRef>, type: Type): TypeRef {
38613844
// Obtain basic type if applicable
@@ -3916,7 +3899,17 @@ function prepareType(builder: binaryen.TypeBuilderRef, seen: Map<Type,HeapTypeRe
39163899
if (DEBUG_TYPEBUILDER) {
39173900
console.log(` field ${fieldType.toString()}`);
39183901
}
3919-
fieldTypes.push(prepareTypeWithNullability(builder, seen, fieldType));
3902+
fieldTypes.push(
3903+
fieldType.is(TypeFlags.Nullable)
3904+
? binaryen._TypeBuilderGetTempRefType(
3905+
builder,
3906+
binaryen._BinaryenTypeGetHeapType(
3907+
prepareType(builder, seen, fieldType.nonNullableType)
3908+
),
3909+
true
3910+
)
3911+
: prepareType(builder, seen, fieldType)
3912+
);
39203913
packedTypes.push(determinePackedType(fieldType));
39213914
fieldMutables.push(1);
39223915
}
@@ -3958,17 +3951,50 @@ function prepareType(builder: binaryen.TypeBuilderRef, seen: Map<Type,HeapTypeRe
39583951
let resultTypes = new Array<TypeRef>();
39593952
let parameterTypes = signatureReference.parameterTypes;
39603953
for (let i = 0, k = parameterTypes.length; i < k; ++i) {
3961-
paramTypes.push(prepareTypeWithNullability(builder, seen, parameterTypes[i]));
3954+
let paramType = parameterTypes[i];
3955+
paramTypes.push(
3956+
paramType.is(TypeFlags.Nullable)
3957+
? binaryen._TypeBuilderGetTempRefType(
3958+
builder,
3959+
binaryen._BinaryenTypeGetHeapType(
3960+
prepareType(builder, seen, paramType.nonNullableType)
3961+
),
3962+
true
3963+
)
3964+
: prepareType(builder, seen, paramType)
3965+
);
39623966
}
39633967
let returnTypes = signatureReference.returnTypes;
39643968
if (returnTypes) {
39653969
for (let i = 0, k = returnTypes.length; i < k; ++i) {
3966-
resultTypes.push(prepareTypeWithNullability(builder, seen, returnTypes[i]));
3970+
let returnType = returnTypes[i];
3971+
resultTypes.push(
3972+
returnType.is(TypeFlags.Nullable)
3973+
? binaryen._TypeBuilderGetTempRefType(
3974+
builder,
3975+
binaryen._BinaryenTypeGetHeapType(
3976+
prepareType(builder, seen, returnType.nonNullableType)
3977+
),
3978+
true
3979+
)
3980+
: prepareType(builder, seen, returnType)
3981+
);
39673982
}
39683983
} else if (signatureReference.returnType == Type.void) {
39693984
resultTypes.push(TypeRef.None);
39703985
} else {
3971-
resultTypes.push(prepareTypeWithNullability(builder, seen, signatureReference.returnType));
3986+
let returnType = signatureReference.returnType;
3987+
resultTypes.push(
3988+
returnType.is(TypeFlags.Nullable)
3989+
? binaryen._TypeBuilderGetTempRefType(
3990+
builder,
3991+
binaryen._BinaryenTypeGetHeapType(
3992+
prepareType(builder, seen, returnType.nonNullableType)
3993+
),
3994+
true
3995+
)
3996+
: prepareType(builder, seen, returnType)
3997+
);
39723998
}
39733999
let tempParamType: TypeRef;
39744000
if (paramTypes.length > 1) {

0 commit comments

Comments
 (0)