Skip to content

Commit b2a69dd

Browse files
committed
[C API]: Add BinaryenFunctionAddVar
1 parent 7ea4129 commit b2a69dd

File tree

4 files changed

+17
-10
lines changed

4 files changed

+17
-10
lines changed

src/binaryen-c.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5878,13 +5878,9 @@ BinaryenType BinaryenFunctionGetVar(BinaryenFunctionRef func,
58785878
assert(index < vars.size());
58795879
return vars[index].getID();
58805880
}
5881-
BinaryenIndex BinaryenFunctionAppendVar(BinaryenFunctionRef func,
5882-
BinaryenType type) {
5883-
auto* function = (Function*)func;
5884-
auto& list = function->vars;
5885-
auto index = list.size();
5886-
list.push_back((Type)type);
5887-
return index;
5881+
BinaryenIndex BinaryenFunctionAddVar(BinaryenFunctionRef func,
5882+
BinaryenType type) {
5883+
return Builder::addVar((Function*)func, (Type)type);
58885884
}
58895885
BinaryenIndex BinaryenFunctionGetNumLocals(BinaryenFunctionRef func) {
58905886
return ((Function*)func)->getNumLocals();

src/binaryen-c.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3198,9 +3198,9 @@ BINARYEN_API BinaryenIndex BinaryenFunctionGetNumVars(BinaryenFunctionRef func);
31983198
BINARYEN_API BinaryenType BinaryenFunctionGetVar(BinaryenFunctionRef func,
31993199
BinaryenIndex index);
32003200
// Appends a local variable to the specified `Function`, returning its
3201-
// insertion index.
3202-
BINARYEN_API BinaryenIndex BinaryenFunctionAppendVar(BinaryenFunctionRef func,
3203-
BinaryenType type);
3201+
// index.
3202+
BINARYEN_API BinaryenIndex BinaryenFunctionAddVar(BinaryenFunctionRef func,
3203+
BinaryenType type);
32043204
// Gets the number of locals within the specified function. Includes parameters.
32053205
BINARYEN_API BinaryenIndex
32063206
BinaryenFunctionGetNumLocals(BinaryenFunctionRef func);

test/example/c-api-kitchen-sink.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1417,6 +1417,16 @@ void test_core() {
14171417
BinaryenFunctionRef sinker = BinaryenAddFunction(
14181418
module, "kitchen()sinker", iIfF, BinaryenTypeInt32(), localTypes, 2, body);
14191419

1420+
BinaryenIndex numLocals = BinaryenFunctionGetNumLocals(sinker);
1421+
BinaryenIndex numParams =
1422+
BinaryenTypeArity(BinaryenFunctionGetParams(sinker));
1423+
BinaryenIndex newLocalIdx =
1424+
BinaryenFunctionAddVar(sinker, BinaryenTypeFloat32());
1425+
assert(newLocalIdx == numLocals);
1426+
assert(BinaryenFunctionGetNumLocals(sinker) == numLocals + 1);
1427+
assert(BinaryenFunctionGetVar(sinker, newLocalIdx - numParams) ==
1428+
BinaryenTypeFloat32());
1429+
14201430
// Globals
14211431

14221432
BinaryenAddGlobal(

test/example/c-api-kitchen-sink.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ BinaryenFeatureAll: 131071
102102
(func $"kitchen()sinker" (type $2) (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result i32)
103103
(local $4 i32)
104104
(local $5 externref)
105+
(local $6 f32)
105106
(block $the-body (result i32)
106107
(block $the-nothing
107108
(drop

0 commit comments

Comments
 (0)