summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/binaryen-c.cpp11
-rw-r--r--src/binaryen-c.h8
-rw-r--r--test/example/c-api-kitchen-sink.c5
-rw-r--r--test/example/c-api-kitchen-sink.txt6
4 files changed, 28 insertions, 2 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index 21e650650..76a97e9da 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -1819,6 +1819,17 @@ BinaryenExpressionRef BinaryenArrayNew(BinaryenModuleRef module,
Builder(*(Module*)module)
.makeArrayNew(HeapType(type), (Expression*)size, (Expression*)init));
}
+BinaryenExpressionRef BinaryenArrayNewData(BinaryenModuleRef module,
+ BinaryenHeapType type,
+ const char* name,
+ BinaryenExpressionRef offset,
+ BinaryenExpressionRef size) {
+ return static_cast<Expression*>(
+ Builder(*(Module*)module)
+ .makeArrayNewData(
+ HeapType(type), name, (Expression*)offset, (Expression*)size));
+}
+
BinaryenExpressionRef BinaryenArrayNewFixed(BinaryenModuleRef module,
BinaryenHeapType type,
BinaryenExpressionRef* values,
diff --git a/src/binaryen-c.h b/src/binaryen-c.h
index b12cdc213..b2c59cfbd 100644
--- a/src/binaryen-c.h
+++ b/src/binaryen-c.h
@@ -1073,8 +1073,12 @@ BINARYEN_API BinaryenExpressionRef BinaryenArrayNew(BinaryenModuleRef module,
BinaryenExpressionRef size,
BinaryenExpressionRef init);
-// TODO: BinaryenArrayNewSeg
-
+BINARYEN_API BinaryenExpressionRef
+BinaryenArrayNewData(BinaryenModuleRef module,
+ BinaryenHeapType type,
+ const char* name,
+ BinaryenExpressionRef offset,
+ BinaryenExpressionRef size);
BINARYEN_API BinaryenExpressionRef
BinaryenArrayNewFixed(BinaryenModuleRef module,
BinaryenHeapType type,
diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c
index 6db92276e..edf8d61f7 100644
--- a/test/example/c-api-kitchen-sink.c
+++ b/test/example/c-api-kitchen-sink.c
@@ -1128,6 +1128,11 @@ void test_core() {
BinaryenTypeGetHeapType(i8Array),
makeInt32(module, 3),
makeInt32(module, 42)),
+ BinaryenArrayNewData(module,
+ BinaryenTypeGetHeapType(i8Array),
+ "0",
+ makeInt32(module, 0),
+ makeInt32(module, 2)),
BinaryenArrayNewFixed(module,
BinaryenTypeGetHeapType(i8Array),
(BinaryenExpressionRef[]){makeInt32(module, 1),
diff --git a/test/example/c-api-kitchen-sink.txt b/test/example/c-api-kitchen-sink.txt
index 5342236e1..4f4b4ec80 100644
--- a/test/example/c-api-kitchen-sink.txt
+++ b/test/example/c-api-kitchen-sink.txt
@@ -2305,6 +2305,12 @@ BinaryenFeatureAll: 131071
)
)
(drop
+ (array.new_data $0 $0
+ (i32.const 0)
+ (i32.const 2)
+ )
+ )
+ (drop
(array.new_fixed $0 3
(i32.const 1)
(i32.const 2)