Skip to content

Commit 81f8f77

Browse files
authored
Rename external conversion instructions (#6716)
Rename instructions `extern.internalize` into `any.convert_extern` and `extern.externalize` into `extern.convert_any` to follow more closely the spec. This was changed in WebAssembly/gc#432. The legacy name is still accepted in text inputs and in the C and JS APIs.
1 parent 9792f2c commit 81f8f77

37 files changed

+161
-122
lines changed

scripts/clang-tidy-diff.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ function realpath() {
2424

2525
CLANG_DIR=$(dirname $(dirname $(realpath $CLANG_TIDY)))
2626
CLANG_TIDY_DIFF=$CLANG_DIR/share/clang/clang-tidy-diff.py
27-
ARG="-quiet -p1 -iregex=src/.*\.(cpp|cc|c\+\+|cxx|c|cl|h|hpp|m|mm|inc)"
27+
ARG="-quiet -p1 -iregex=src/.*\.(cpp|cc|c\+\+|cxx|c|cl|h|hpp|m|mm)"
2828
if [ ! -e "$CLANG_TIDY_DIFF" ]; then
2929
echo "Failed to find clang-tidy-diff.py ($CLANG_TIDY_DIFF)"
3030
exit 1

scripts/gen-s-parser.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -603,8 +603,10 @@
603603
("array.init_data", "makeArrayInitData()"),
604604
("array.init_elem", "makeArrayInitElem()"),
605605
("ref.as_non_null", "makeRefAs(RefAsNonNull)"),
606-
("extern.internalize", "makeRefAs(ExternInternalize)"),
607-
("extern.externalize", "makeRefAs(ExternExternalize)"),
606+
("extern.internalize", "makeRefAs(AnyConvertExtern)"), # Deprecated
607+
("extern.externalize", "makeRefAs(ExternConvertAny)"), # Deprecated
608+
("any.convert_extern", "makeRefAs(AnyConvertExtern)"),
609+
("extern.convert_any", "makeRefAs(ExternConvertAny)"),
608610
("string.new_lossy_utf8_array", "makeStringNew(StringNewLossyUTF8Array)"),
609611
("string.new_wtf16_array", "makeStringNew(StringNewWTF16Array)"),
610612
("string.from_code_point", "makeStringNew(StringNewFromCodePoint)"),

src/binaryen-c.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,8 +1012,10 @@ BinaryenOp BinaryenDotI8x16I7x16SToVecI16x8(void) {
10121012
return DotI8x16I7x16SToVecI16x8;
10131013
}
10141014
BinaryenOp BinaryenRefAsNonNull(void) { return RefAsNonNull; }
1015-
BinaryenOp BinaryenRefAsExternInternalize(void) { return ExternInternalize; }
1016-
BinaryenOp BinaryenRefAsExternExternalize(void) { return ExternExternalize; }
1015+
BinaryenOp BinaryenRefAsExternInternalize(void) { return AnyConvertExtern; }
1016+
BinaryenOp BinaryenRefAsExternExternalize(void) { return ExternConvertAny; }
1017+
BinaryenOp BinaryenRefAsAnyConvertExtern(void) { return AnyConvertExtern; }
1018+
BinaryenOp BinaryenRefAsExternConvertAny(void) { return ExternConvertAny; }
10171019
BinaryenOp BinaryenBrOnNull(void) { return BrOnNull; }
10181020
BinaryenOp BinaryenBrOnNonNull(void) { return BrOnNonNull; }
10191021
BinaryenOp BinaryenBrOnCast(void) { return BrOnCast; }

src/binaryen-c.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -678,6 +678,8 @@ BINARYEN_API BinaryenOp BinaryenDotI8x16I7x16SToVecI16x8(void);
678678
BINARYEN_API BinaryenOp BinaryenRefAsNonNull(void);
679679
BINARYEN_API BinaryenOp BinaryenRefAsExternInternalize(void);
680680
BINARYEN_API BinaryenOp BinaryenRefAsExternExternalize(void);
681+
BINARYEN_API BinaryenOp BinaryenRefAsAnyConvertExtern(void);
682+
BINARYEN_API BinaryenOp BinaryenRefAsExternConvertAny(void);
681683
BINARYEN_API BinaryenOp BinaryenBrOnNull(void);
682684
BINARYEN_API BinaryenOp BinaryenBrOnNonNull(void);
683685
BINARYEN_API BinaryenOp BinaryenBrOnCast(void);

src/gen-s-parser.inc

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ memcpy(buf, op.data(), op.size());
1414
switch (buf[0]) {
1515
case 'a': {
1616
switch (buf[1]) {
17+
case 'n':
18+
if (op == "any.convert_extern"sv) {
19+
CHECK_ERR(makeRefAs(ctx, pos, annotations, AnyConvertExtern));
20+
return Ok{};
21+
}
22+
goto parse_error;
1723
case 'r': {
1824
switch (buf[6]) {
1925
case 'c':
@@ -278,15 +284,21 @@ switch (buf[0]) {
278284
}
279285
case 'e': {
280286
switch (buf[7]) {
287+
case 'c':
288+
if (op == "extern.convert_any"sv) {
289+
CHECK_ERR(makeRefAs(ctx, pos, annotations, ExternConvertAny));
290+
return Ok{};
291+
}
292+
goto parse_error;
281293
case 'e':
282294
if (op == "extern.externalize"sv) {
283-
CHECK_ERR(makeRefAs(ctx, pos, annotations, ExternExternalize));
295+
CHECK_ERR(makeRefAs(ctx, pos, annotations, ExternConvertAny));
284296
return Ok{};
285297
}
286298
goto parse_error;
287299
case 'i':
288300
if (op == "extern.internalize"sv) {
289-
CHECK_ERR(makeRefAs(ctx, pos, annotations, ExternInternalize));
301+
CHECK_ERR(makeRefAs(ctx, pos, annotations, AnyConvertExtern));
290302
return Ok{};
291303
}
292304
goto parse_error;

src/ir/child-typer.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -949,10 +949,10 @@ template<typename Subtype> struct ChildTyper : OverriddenVisitor<Subtype> {
949949
case RefAsNonNull:
950950
noteAnyReference(&curr->value);
951951
return;
952-
case ExternInternalize:
952+
case AnyConvertExtern:
953953
note(&curr->value, Type(HeapType::ext, Nullable));
954954
return;
955-
case ExternExternalize:
955+
case ExternConvertAny:
956956
note(&curr->value, Type(HeapType::any, Nullable));
957957
return;
958958
}

src/ir/effects.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -926,7 +926,7 @@ class EffectAnalyzer {
926926
void visitArrayInitData(ArrayInitData* curr) { visitArrayInit(curr); }
927927
void visitArrayInitElem(ArrayInitElem* curr) { visitArrayInit(curr); }
928928
void visitRefAs(RefAs* curr) {
929-
if (curr->op == ExternInternalize || curr->op == ExternExternalize) {
929+
if (curr->op == AnyConvertExtern || curr->op == ExternConvertAny) {
930930
// These conversions are infallible.
931931
return;
932932
}

src/ir/possible-contents.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -697,7 +697,7 @@ struct InfoCollector
697697
receiveChildValue(curr->ref, curr);
698698
}
699699
void visitRefAs(RefAs* curr) {
700-
if (curr->op == ExternExternalize || curr->op == ExternInternalize) {
700+
if (curr->op == ExternConvertAny || curr->op == AnyConvertExtern) {
701701
// The external conversion ops emit something of a completely different
702702
// type, which we must mark as a root.
703703
addRoot(curr);

src/ir/properties.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ static bool isValidInConstantExpression(Module& wasm, Expression* expr) {
6565
}
6666

6767
if (auto* refAs = expr->dynCast<RefAs>()) {
68-
if (refAs->op == ExternExternalize || refAs->op == ExternInternalize) {
68+
if (refAs->op == ExternConvertAny || refAs->op == AnyConvertExtern) {
6969
return true;
7070
}
7171
}

src/ir/properties.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ inline bool isNamedControlFlow(Expression* curr) {
8383
// isValidInConstantExpression or find better names(#4845)
8484
inline bool isSingleConstantExpression(const Expression* curr) {
8585
if (auto* refAs = curr->dynCast<RefAs>()) {
86-
if (refAs->op == ExternExternalize || refAs->op == ExternInternalize) {
86+
if (refAs->op == ExternConvertAny || refAs->op == AnyConvertExtern) {
8787
return isSingleConstantExpression(refAs->value);
8888
}
8989
}
@@ -124,9 +124,9 @@ inline Literal getLiteral(const Expression* curr) {
124124
} else if (auto* s = curr->dynCast<StringConst>()) {
125125
return Literal(s->string.toString());
126126
} else if (auto* r = curr->dynCast<RefAs>()) {
127-
if (r->op == ExternExternalize) {
127+
if (r->op == ExternConvertAny) {
128128
return getLiteral(r->value).externalize();
129-
} else if (r->op == ExternInternalize) {
129+
} else if (r->op == AnyConvertExtern) {
130130
return getLiteral(r->value).internalize();
131131
}
132132
}
@@ -329,7 +329,7 @@ inline Expression** getImmediateFallthroughPtr(
329329
// Extern conversions are not casts and actually produce new values.
330330
// Treating them as fallthroughs would lead to misoptimizations of
331331
// subsequent casts.
332-
if (as->op != ExternInternalize && as->op != ExternExternalize) {
332+
if (as->op != AnyConvertExtern && as->op != ExternConvertAny) {
333333
return &as->value;
334334
}
335335
} else if (auto* br = curr->dynCast<BrOn>()) {

0 commit comments

Comments
 (0)