Skip to content

Commit 3ca8c21

Browse files
authored
Replace I31New with RefI31 everywhere (#5930)
Globally replace the source string "I31New" with "RefI31" in preparation for renaming the instruction from "i31.new" to "ref.i31", as implemented in the spec in WebAssembly/gc#422. This would be NFC, except that it also changes the string in the external-facing C APIs. A follow-up PR will make the corresponding behavioral change.
1 parent bd497d3 commit 3ca8c21

36 files changed

+98
-96
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ full changeset diff at the end of each section.
1515
Current Trunk
1616
-------------
1717

18+
- "I31New" changed to "RefI31" everywhere it appears in the C API.
19+
1820
v115
1921
----
2022

scripts/gen-s-parser.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -564,7 +564,7 @@
564564
("call_ref", "makeCallRef(s, /*isReturn=*/false)"),
565565
("return_call_ref", "makeCallRef(s, /*isReturn=*/true)"),
566566
# GC
567-
("i31.new", "makeI31New(s)"),
567+
("i31.new", "makeRefI31(s)"),
568568
("i31.get_s", "makeI31Get(s, true)"),
569569
("i31.get_u", "makeI31Get(s, false)"),
570570
("ref.test", "makeRefTest(s)"),

src/binaryen-c.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1732,10 +1732,10 @@ BinaryenExpressionRef BinaryenRethrow(BinaryenModuleRef module,
17321732
Builder(*(Module*)module).makeRethrow(target));
17331733
}
17341734

1735-
BinaryenExpressionRef BinaryenI31New(BinaryenModuleRef module,
1735+
BinaryenExpressionRef BinaryenRefI31(BinaryenModuleRef module,
17361736
BinaryenExpressionRef value) {
17371737
return static_cast<Expression*>(
1738-
Builder(*(Module*)module).makeI31New((Expression*)value));
1738+
Builder(*(Module*)module).makeRefI31((Expression*)value));
17391739
}
17401740

17411741
BinaryenExpressionRef BinaryenI31Get(BinaryenModuleRef module,
@@ -3952,18 +3952,18 @@ void BinaryenTupleExtractSetIndex(BinaryenExpressionRef expr,
39523952
assert(expression->is<TupleExtract>());
39533953
static_cast<TupleExtract*>(expression)->index = index;
39543954
}
3955-
// I31New
3956-
BinaryenExpressionRef BinaryenI31NewGetValue(BinaryenExpressionRef expr) {
3955+
// RefI31
3956+
BinaryenExpressionRef BinaryenRefI31GetValue(BinaryenExpressionRef expr) {
39573957
auto* expression = (Expression*)expr;
3958-
assert(expression->is<I31New>());
3959-
return static_cast<I31New*>(expression)->value;
3958+
assert(expression->is<RefI31>());
3959+
return static_cast<RefI31*>(expression)->value;
39603960
}
3961-
void BinaryenI31NewSetValue(BinaryenExpressionRef expr,
3961+
void BinaryenRefI31SetValue(BinaryenExpressionRef expr,
39623962
BinaryenExpressionRef valueExpr) {
39633963
auto* expression = (Expression*)expr;
3964-
assert(expression->is<I31New>());
3964+
assert(expression->is<RefI31>());
39653965
assert(valueExpr);
3966-
static_cast<I31New*>(expression)->value = (Expression*)valueExpr;
3966+
static_cast<RefI31*>(expression)->value = (Expression*)valueExpr;
39673967
}
39683968
// I31Get
39693969
BinaryenExpressionRef BinaryenI31GetGetI31(BinaryenExpressionRef expr) {

src/binaryen-c.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1028,7 +1028,7 @@ BINARYEN_API BinaryenExpressionRef BinaryenTupleExtract(
10281028
BinaryenModuleRef module, BinaryenExpressionRef tuple, BinaryenIndex index);
10291029
BINARYEN_API BinaryenExpressionRef BinaryenPop(BinaryenModuleRef module,
10301030
BinaryenType type);
1031-
BINARYEN_API BinaryenExpressionRef BinaryenI31New(BinaryenModuleRef module,
1031+
BINARYEN_API BinaryenExpressionRef BinaryenRefI31(BinaryenModuleRef module,
10321032
BinaryenExpressionRef value);
10331033
BINARYEN_API BinaryenExpressionRef BinaryenI31Get(BinaryenModuleRef module,
10341034
BinaryenExpressionRef i31,
@@ -2306,13 +2306,13 @@ BinaryenTupleExtractGetIndex(BinaryenExpressionRef expr);
23062306
BINARYEN_API void BinaryenTupleExtractSetIndex(BinaryenExpressionRef expr,
23072307
BinaryenIndex index);
23082308

2309-
// I31New
2309+
// RefI31
23102310

23112311
// Gets the value expression of an `i31.new` expression.
23122312
BINARYEN_API BinaryenExpressionRef
2313-
BinaryenI31NewGetValue(BinaryenExpressionRef expr);
2313+
BinaryenRefI31GetValue(BinaryenExpressionRef expr);
23142314
// Sets the value expression of an `i31.new` expression.
2315-
BINARYEN_API void BinaryenI31NewSetValue(BinaryenExpressionRef expr,
2315+
BINARYEN_API void BinaryenRefI31SetValue(BinaryenExpressionRef expr,
23162316
BinaryenExpressionRef valueExpr);
23172317

23182318
// I31Get

src/gen-s-parser.inc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1203,7 +1203,7 @@ switch (buf[0]) {
12031203
}
12041204
}
12051205
case 'n':
1206-
if (op == "i31.new"sv) { return makeI31New(s); }
1206+
if (op == "i31.new"sv) { return makeRefI31(s); }
12071207
goto parse_error;
12081208
default: goto parse_error;
12091209
}
@@ -5593,7 +5593,7 @@ switch (buf[0]) {
55935593
}
55945594
case 'n':
55955595
if (op == "i31.new"sv) {
5596-
auto ret = makeI31New(ctx, pos);
5596+
auto ret = makeRefI31(ctx, pos);
55975597
CHECK_ERR(ret);
55985598
return *ret;
55995599
}

src/ir/ReFinalize.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ void ReFinalize::visitUnreachable(Unreachable* curr) { curr->finalize(); }
132132
void ReFinalize::visitPop(Pop* curr) { curr->finalize(); }
133133
void ReFinalize::visitTupleMake(TupleMake* curr) { curr->finalize(); }
134134
void ReFinalize::visitTupleExtract(TupleExtract* curr) { curr->finalize(); }
135-
void ReFinalize::visitI31New(I31New* curr) { curr->finalize(); }
135+
void ReFinalize::visitRefI31(RefI31* curr) { curr->finalize(); }
136136
void ReFinalize::visitI31Get(I31Get* curr) { curr->finalize(); }
137137
void ReFinalize::visitCallRef(CallRef* curr) { curr->finalize(); }
138138
void ReFinalize::visitRefTest(RefTest* curr) { curr->finalize(); }

src/ir/cost.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -598,7 +598,7 @@ struct CostAnalyzer : public OverriddenVisitor<CostAnalyzer, CostType> {
598598
CostType visitNop(Nop* curr) { return 0; }
599599
CostType visitUnreachable(Unreachable* curr) { return 0; }
600600
CostType visitDataDrop(DataDrop* curr) { return 5; }
601-
CostType visitI31New(I31New* curr) { return 3 + visit(curr->value); }
601+
CostType visitRefI31(RefI31* curr) { return 3 + visit(curr->value); }
602602
CostType visitI31Get(I31Get* curr) { return 2 + visit(curr->i31); }
603603
CostType visitRefTest(RefTest* curr) {
604604
// Casts have a very high cost because in the VM they end up implemented as

src/ir/effects.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -718,7 +718,7 @@ class EffectAnalyzer {
718718
}
719719
void visitTupleMake(TupleMake* curr) {}
720720
void visitTupleExtract(TupleExtract* curr) {}
721-
void visitI31New(I31New* curr) {}
721+
void visitRefI31(RefI31* curr) {}
722722
void visitI31Get(I31Get* curr) {
723723
// traps when the ref is null
724724
if (curr->i31->type.isNullable()) {

src/ir/possible-contents.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -678,7 +678,7 @@ struct InfoCollector
678678
totalPops++;
679679
#endif
680680
}
681-
void visitI31New(I31New* curr) {
681+
void visitRefI31(RefI31* curr) {
682682
// TODO: optimize like struct references
683683
addRoot(curr);
684684
}

src/ir/properties.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ bool isGenerative(Expression* curr, FeatureSet features) {
4040
// to whether it is valid in a wasm constant expression.
4141
static bool isValidInConstantExpression(Module& wasm, Expression* expr) {
4242
if (isSingleConstantExpression(expr) || expr->is<StructNew>() ||
43-
expr->is<ArrayNew>() || expr->is<ArrayNewFixed>() || expr->is<I31New>() ||
43+
expr->is<ArrayNew>() || expr->is<ArrayNewFixed>() || expr->is<RefI31>() ||
4444
expr->is<StringConst>()) {
4545
return true;
4646
}

0 commit comments

Comments
 (0)