diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index c273a3af42e..33472a756bd 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( + 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 82de2dae934..f8561bdf70a 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 d3368a6b147..ca7743632ee 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 8955921b85b..43c45d40fc3 100644 --- a/test/example/c-api-kitchen-sink.txt +++ b/test/example/c-api-kitchen-sink.txt @@ -2297,6 +2297,12 @@ BinaryenFeatureAll: 131071 (i32.const 3) ) ) + (drop + (array.new_data $0 $0 + (i32.const 0) + (i32.const 2) + ) + ) (drop (array.new_fixed $0 3 (i32.const 1)