Skip to content

Commit 5e4ea07

Browse files
dcodeIOkripken
authored andcommitted
Added expression utility functions to binaryen-c/.js (#1269)
1 parent 5b44a8b commit 5e4ea07

8 files changed

Lines changed: 1634 additions & 399 deletions

File tree

bin/binaryen.js

Lines changed: 738 additions & 233 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bin/wasm.js

Lines changed: 709 additions & 164 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build-js.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ echo "building binaryen.js"
146146
src/binaryen-c.cpp \
147147
shared.bc \
148148
-Isrc/ \
149-
-s 'EXPORTED_FUNCTIONS=["_BinaryenNone", "_BinaryenInt32", "_BinaryenInt64", "_BinaryenFloat32", "_BinaryenFloat64", "_BinaryenUndefined", "_BinaryenModuleCreate", "_BinaryenModuleDispose", "_BinaryenAddFunctionType", "_BinaryenGetFunctionTypeBySignature", "_BinaryenLiteralInt32", "_BinaryenLiteralInt64", "_BinaryenLiteralFloat32", "_BinaryenLiteralFloat64", "_BinaryenLiteralFloat32Bits", "_BinaryenLiteralFloat64Bits", "_BinaryenClzInt32", "_BinaryenCtzInt32", "_BinaryenPopcntInt32", "_BinaryenNegFloat32", "_BinaryenAbsFloat32", "_BinaryenCeilFloat32", "_BinaryenFloorFloat32", "_BinaryenTruncFloat32", "_BinaryenNearestFloat32", "_BinaryenSqrtFloat32", "_BinaryenEqZInt32", "_BinaryenClzInt64", "_BinaryenCtzInt64", "_BinaryenPopcntInt64", "_BinaryenNegFloat64", "_BinaryenAbsFloat64", "_BinaryenCeilFloat64", "_BinaryenFloorFloat64", "_BinaryenTruncFloat64", "_BinaryenNearestFloat64", "_BinaryenSqrtFloat64", "_BinaryenEqZInt64", "_BinaryenExtendSInt32", "_BinaryenExtendUInt32", "_BinaryenWrapInt64", "_BinaryenTruncSFloat32ToInt32", "_BinaryenTruncSFloat32ToInt64", "_BinaryenTruncUFloat32ToInt32", "_BinaryenTruncUFloat32ToInt64", "_BinaryenTruncSFloat64ToInt32", "_BinaryenTruncSFloat64ToInt64", "_BinaryenTruncUFloat64ToInt32", "_BinaryenTruncUFloat64ToInt64", "_BinaryenReinterpretFloat32", "_BinaryenReinterpretFloat64", "_BinaryenConvertSInt32ToFloat32", "_BinaryenConvertSInt32ToFloat64", "_BinaryenConvertUInt32ToFloat32", "_BinaryenConvertUInt32ToFloat64", "_BinaryenConvertSInt64ToFloat32", "_BinaryenConvertSInt64ToFloat64", "_BinaryenConvertUInt64ToFloat32", "_BinaryenConvertUInt64ToFloat64", "_BinaryenPromoteFloat32", "_BinaryenDemoteFloat64", "_BinaryenReinterpretInt32", "_BinaryenReinterpretInt64", "_BinaryenAddInt32", "_BinaryenSubInt32", "_BinaryenMulInt32", "_BinaryenDivSInt32", "_BinaryenDivUInt32", "_BinaryenRemSInt32", "_BinaryenRemUInt32", "_BinaryenAndInt32", "_BinaryenOrInt32", "_BinaryenXorInt32", "_BinaryenShlInt32", "_BinaryenShrUInt32", "_BinaryenShrSInt32", "_BinaryenRotLInt32", "_BinaryenRotRInt32", "_BinaryenEqInt32", "_BinaryenNeInt32", "_BinaryenLtSInt32", "_BinaryenLtUInt32", "_BinaryenLeSInt32", "_BinaryenLeUInt32", "_BinaryenGtSInt32", "_BinaryenGtUInt32", "_BinaryenGeSInt32", "_BinaryenGeUInt32", "_BinaryenAddInt64", "_BinaryenSubInt64", "_BinaryenMulInt64", "_BinaryenDivSInt64", "_BinaryenDivUInt64", "_BinaryenRemSInt64", "_BinaryenRemUInt64", "_BinaryenAndInt64", "_BinaryenOrInt64", "_BinaryenXorInt64", "_BinaryenShlInt64", "_BinaryenShrUInt64", "_BinaryenShrSInt64", "_BinaryenRotLInt64", "_BinaryenRotRInt64", "_BinaryenEqInt64", "_BinaryenNeInt64", "_BinaryenLtSInt64", "_BinaryenLtUInt64", "_BinaryenLeSInt64", "_BinaryenLeUInt64", "_BinaryenGtSInt64", "_BinaryenGtUInt64", "_BinaryenGeSInt64", "_BinaryenGeUInt64", "_BinaryenAddFloat32", "_BinaryenSubFloat32", "_BinaryenMulFloat32", "_BinaryenDivFloat32", "_BinaryenCopySignFloat32", "_BinaryenMinFloat32", "_BinaryenMaxFloat32", "_BinaryenEqFloat32", "_BinaryenNeFloat32", "_BinaryenLtFloat32", "_BinaryenLeFloat32", "_BinaryenGtFloat32", "_BinaryenGeFloat32", "_BinaryenAddFloat64", "_BinaryenSubFloat64", "_BinaryenMulFloat64", "_BinaryenDivFloat64", "_BinaryenCopySignFloat64", "_BinaryenMinFloat64", "_BinaryenMaxFloat64", "_BinaryenEqFloat64", "_BinaryenNeFloat64", "_BinaryenLtFloat64", "_BinaryenLeFloat64", "_BinaryenGtFloat64", "_BinaryenGeFloat64", "_BinaryenPageSize", "_BinaryenCurrentMemory", "_BinaryenGrowMemory", "_BinaryenHasFeature", "_BinaryenBlock", "_BinaryenIf", "_BinaryenLoop", "_BinaryenBreak", "_BinaryenSwitch", "_BinaryenCall", "_BinaryenCallImport", "_BinaryenCallIndirect", "_BinaryenGetLocal", "_BinaryenSetLocal", "_BinaryenTeeLocal", "_BinaryenGetGlobal", "_BinaryenSetGlobal", "_BinaryenLoad", "_BinaryenStore", "_BinaryenConst", "_BinaryenUnary", "_BinaryenBinary", "_BinaryenSelect", "_BinaryenDrop", "_BinaryenReturn", "_BinaryenHost", "_BinaryenNop", "_BinaryenUnreachable", "_BinaryenExpressionPrint", "_BinaryenAddFunction", "_BinaryenAddGlobal", "_BinaryenAddImport", "_BinaryenRemoveImport", "_BinaryenAddExport", "_BinaryenRemoveExport", "_BinaryenSetFunctionTable", "_BinaryenSetMemory", "_BinaryenSetStart", "_BinaryenModuleParse", "_BinaryenModulePrint", "_BinaryenModulePrintAsmjs", "_BinaryenModuleValidate", "_BinaryenModuleOptimize", "_BinaryenModuleRunPasses", "_BinaryenModuleAutoDrop", "_BinaryenModuleWrite", "_BinaryenModuleRead", "_BinaryenModuleInterpret", "_RelooperCreate", "_RelooperAddBlock", "_RelooperAddBranch", "_RelooperAddBlockWithSwitch", "_RelooperAddBranchForSwitch", "_RelooperRenderAndDispose", "_BinaryenSetAPITracing"]' \
149+
-s 'EXPORTED_FUNCTIONS=["_BinaryenNone", "_BinaryenInt32", "_BinaryenInt64", "_BinaryenFloat32", "_BinaryenFloat64", "_BinaryenUndefined", "_BinaryenInvalidId", "_BinaryenBlockId", "_BinaryenIfId", "_BinaryenLoopId", "_BinaryenBreakId", "_BinaryenSwitchId", "_BinaryenCallId", "_BinaryenCallImportId", "_BinaryenCallIndirectId", "_BinaryenGetLocalId", "_BinaryenSetLocalId", "_BinaryenGetGlobalId", "_BinaryenSetGlobalId", "_BinaryenLoadId", "_BinaryenStoreId", "_BinaryenConstId", "_BinaryenUnaryId", "_BinaryenBinaryId", "_BinaryenSelectId", "_BinaryenDropId", "_BinaryenReturnId", "_BinaryenHostId", "_BinaryenNopId", "_BinaryenUnreachableId", "_BinaryenAtomicCmpxchgId", "_BinaryenAtomicRMWId", "_BinaryenAtomicWaitId", "_BinaryenAtomicWakeId", "_BinaryenModuleCreate", "_BinaryenModuleDispose", "_BinaryenAddFunctionType", "_BinaryenGetFunctionTypeBySignature", "_BinaryenLiteralInt32", "_BinaryenLiteralInt64", "_BinaryenLiteralFloat32", "_BinaryenLiteralFloat64", "_BinaryenLiteralFloat32Bits", "_BinaryenLiteralFloat64Bits", "_BinaryenClzInt32", "_BinaryenCtzInt32", "_BinaryenPopcntInt32", "_BinaryenNegFloat32", "_BinaryenAbsFloat32", "_BinaryenCeilFloat32", "_BinaryenFloorFloat32", "_BinaryenTruncFloat32", "_BinaryenNearestFloat32", "_BinaryenSqrtFloat32", "_BinaryenEqZInt32", "_BinaryenClzInt64", "_BinaryenCtzInt64", "_BinaryenPopcntInt64", "_BinaryenNegFloat64", "_BinaryenAbsFloat64", "_BinaryenCeilFloat64", "_BinaryenFloorFloat64", "_BinaryenTruncFloat64", "_BinaryenNearestFloat64", "_BinaryenSqrtFloat64", "_BinaryenEqZInt64", "_BinaryenExtendSInt32", "_BinaryenExtendUInt32", "_BinaryenWrapInt64", "_BinaryenTruncSFloat32ToInt32", "_BinaryenTruncSFloat32ToInt64", "_BinaryenTruncUFloat32ToInt32", "_BinaryenTruncUFloat32ToInt64", "_BinaryenTruncSFloat64ToInt32", "_BinaryenTruncSFloat64ToInt64", "_BinaryenTruncUFloat64ToInt32", "_BinaryenTruncUFloat64ToInt64", "_BinaryenReinterpretFloat32", "_BinaryenReinterpretFloat64", "_BinaryenConvertSInt32ToFloat32", "_BinaryenConvertSInt32ToFloat64", "_BinaryenConvertUInt32ToFloat32", "_BinaryenConvertUInt32ToFloat64", "_BinaryenConvertSInt64ToFloat32", "_BinaryenConvertSInt64ToFloat64", "_BinaryenConvertUInt64ToFloat32", "_BinaryenConvertUInt64ToFloat64", "_BinaryenPromoteFloat32", "_BinaryenDemoteFloat64", "_BinaryenReinterpretInt32", "_BinaryenReinterpretInt64", "_BinaryenAddInt32", "_BinaryenSubInt32", "_BinaryenMulInt32", "_BinaryenDivSInt32", "_BinaryenDivUInt32", "_BinaryenRemSInt32", "_BinaryenRemUInt32", "_BinaryenAndInt32", "_BinaryenOrInt32", "_BinaryenXorInt32", "_BinaryenShlInt32", "_BinaryenShrUInt32", "_BinaryenShrSInt32", "_BinaryenRotLInt32", "_BinaryenRotRInt32", "_BinaryenEqInt32", "_BinaryenNeInt32", "_BinaryenLtSInt32", "_BinaryenLtUInt32", "_BinaryenLeSInt32", "_BinaryenLeUInt32", "_BinaryenGtSInt32", "_BinaryenGtUInt32", "_BinaryenGeSInt32", "_BinaryenGeUInt32", "_BinaryenAddInt64", "_BinaryenSubInt64", "_BinaryenMulInt64", "_BinaryenDivSInt64", "_BinaryenDivUInt64", "_BinaryenRemSInt64", "_BinaryenRemUInt64", "_BinaryenAndInt64", "_BinaryenOrInt64", "_BinaryenXorInt64", "_BinaryenShlInt64", "_BinaryenShrUInt64", "_BinaryenShrSInt64", "_BinaryenRotLInt64", "_BinaryenRotRInt64", "_BinaryenEqInt64", "_BinaryenNeInt64", "_BinaryenLtSInt64", "_BinaryenLtUInt64", "_BinaryenLeSInt64", "_BinaryenLeUInt64", "_BinaryenGtSInt64", "_BinaryenGtUInt64", "_BinaryenGeSInt64", "_BinaryenGeUInt64", "_BinaryenAddFloat32", "_BinaryenSubFloat32", "_BinaryenMulFloat32", "_BinaryenDivFloat32", "_BinaryenCopySignFloat32", "_BinaryenMinFloat32", "_BinaryenMaxFloat32", "_BinaryenEqFloat32", "_BinaryenNeFloat32", "_BinaryenLtFloat32", "_BinaryenLeFloat32", "_BinaryenGtFloat32", "_BinaryenGeFloat32", "_BinaryenAddFloat64", "_BinaryenSubFloat64", "_BinaryenMulFloat64", "_BinaryenDivFloat64", "_BinaryenCopySignFloat64", "_BinaryenMinFloat64", "_BinaryenMaxFloat64", "_BinaryenEqFloat64", "_BinaryenNeFloat64", "_BinaryenLtFloat64", "_BinaryenLeFloat64", "_BinaryenGtFloat64", "_BinaryenGeFloat64", "_BinaryenPageSize", "_BinaryenCurrentMemory", "_BinaryenGrowMemory", "_BinaryenHasFeature", "_BinaryenBlock", "_BinaryenIf", "_BinaryenLoop", "_BinaryenBreak", "_BinaryenSwitch", "_BinaryenCall", "_BinaryenCallImport", "_BinaryenCallIndirect", "_BinaryenGetLocal", "_BinaryenSetLocal", "_BinaryenTeeLocal", "_BinaryenGetGlobal", "_BinaryenSetGlobal", "_BinaryenLoad", "_BinaryenStore", "_BinaryenConst", "_BinaryenUnary", "_BinaryenBinary", "_BinaryenSelect", "_BinaryenDrop", "_BinaryenReturn", "_BinaryenHost", "_BinaryenNop", "_BinaryenUnreachable", "_BinaryenExpressionGetId", "_BinaryenExpressionGetType", "_BinaryenExpressionPrint", "_BinaryenAddFunction", "_BinaryenAddGlobal", "_BinaryenAddImport", "_BinaryenRemoveImport", "_BinaryenAddExport", "_BinaryenRemoveExport", "_BinaryenSetFunctionTable", "_BinaryenSetMemory", "_BinaryenSetStart", "_BinaryenModuleParse", "_BinaryenModulePrint", "_BinaryenModulePrintAsmjs", "_BinaryenModuleValidate", "_BinaryenModuleOptimize", "_BinaryenModuleRunPasses", "_BinaryenModuleAutoDrop", "_BinaryenModuleWrite", "_BinaryenModuleRead", "_BinaryenModuleInterpret", "_RelooperCreate", "_RelooperAddBlock", "_RelooperAddBranch", "_RelooperAddBlockWithSwitch", "_RelooperAddBranchForSwitch", "_RelooperRenderAndDispose", "_BinaryenSetAPITracing"]' \
150150
-o bin/binaryen${OUT_FILE_SUFFIX}.js \
151151
--pre-js src/js/binaryen.js-pre.js \
152152
--post-js src/js/binaryen.js-post.js

src/binaryen-c.cpp

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,37 @@ BinaryenType BinaryenFloat32(void) { return f32; }
106106
BinaryenType BinaryenFloat64(void) { return f64; }
107107
BinaryenType BinaryenUndefined(void) { return uint32_t(-1); }
108108

109+
// Expression ids
110+
111+
BinaryenExpressionId BinaryenInvalidId(void) { return Expression::Id::InvalidId; }
112+
BinaryenExpressionId BinaryenBlockId(void) { return Expression::Id::BlockId; }
113+
BinaryenExpressionId BinaryenIfId(void) { return Expression::Id::IfId; }
114+
BinaryenExpressionId BinaryenLoopId(void) { return Expression::Id::LoopId; }
115+
BinaryenExpressionId BinaryenBreakId(void) { return Expression::Id::BreakId; }
116+
BinaryenExpressionId BinaryenSwitchId(void) { return Expression::Id::SwitchId; }
117+
BinaryenExpressionId BinaryenCallId(void) { return Expression::Id::CallId; }
118+
BinaryenExpressionId BinaryenCallImportId(void) { return Expression::Id::CallImportId; }
119+
BinaryenExpressionId BinaryenCallIndirectId(void) { return Expression::Id::CallIndirectId; }
120+
BinaryenExpressionId BinaryenGetLocalId(void) { return Expression::Id::GetLocalId; }
121+
BinaryenExpressionId BinaryenSetLocalId(void) { return Expression::Id::SetLocalId; }
122+
BinaryenExpressionId BinaryenGetGlobalId(void) { return Expression::Id::GetGlobalId; }
123+
BinaryenExpressionId BinaryenSetGlobalId(void) { return Expression::Id::SetGlobalId; }
124+
BinaryenExpressionId BinaryenLoadId(void) { return Expression::Id::LoadId; }
125+
BinaryenExpressionId BinaryenStoreId(void) { return Expression::Id::StoreId; }
126+
BinaryenExpressionId BinaryenConstId(void) { return Expression::Id::ConstId; }
127+
BinaryenExpressionId BinaryenUnaryId(void) { return Expression::Id::UnaryId; }
128+
BinaryenExpressionId BinaryenBinaryId(void) { return Expression::Id::BinaryId; }
129+
BinaryenExpressionId BinaryenSelectId(void) { return Expression::Id::SelectId; }
130+
BinaryenExpressionId BinaryenDropId(void) { return Expression::Id::DropId; }
131+
BinaryenExpressionId BinaryenReturnId(void) { return Expression::Id::ReturnId; }
132+
BinaryenExpressionId BinaryenHostId(void) { return Expression::Id::HostId; }
133+
BinaryenExpressionId BinaryenNopId(void) { return Expression::Id::NopId; }
134+
BinaryenExpressionId BinaryenUnreachableId(void) { return Expression::Id::UnreachableId; }
135+
BinaryenExpressionId BinaryenAtomicCmpxchgId(void) { return Expression::Id::AtomicCmpxchgId; }
136+
BinaryenExpressionId BinaryenAtomicRMWId(void) { return Expression::Id::AtomicRMWId; }
137+
BinaryenExpressionId BinaryenAtomicWaitId(void) { return Expression::Id::AtomicWaitId; }
138+
BinaryenExpressionId BinaryenAtomicWakeId(void) { return Expression::Id::AtomicWakeId; }
139+
109140
// Modules
110141

111142
BinaryenModuleRef BinaryenModuleCreate(void) {
@@ -742,6 +773,22 @@ BinaryenExpressionRef BinaryenAtomicWake(BinaryenModuleRef module, BinaryenExpre
742773
return static_cast<Expression*>(ret);
743774
}
744775

776+
// Expression utility
777+
778+
BinaryenExpressionId BinaryenExpressionGetId(BinaryenExpressionRef expr) {
779+
if (tracing) {
780+
std::cout << " BinaryenExpressionGetId(expressions[" << expressions[expr] << "]);\n";
781+
}
782+
783+
return ((Expression*)expr)->_id;
784+
}
785+
BinaryenType BinaryenExpressionGetType(BinaryenExpressionRef expr) {
786+
if (tracing) {
787+
std::cout << " BinaryenExpressionGetType(expressions[" << expressions[expr] << "]);\n";
788+
}
789+
790+
return ((Expression*)expr)->type;
791+
}
745792
void BinaryenExpressionPrint(BinaryenExpressionRef expr) {
746793
if (tracing) {
747794
std::cout << " BinaryenExpressionPrint(expressions[" << expressions[expr] << "]);\n";

src/binaryen-c.h

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,39 @@ BinaryenType BinaryenFloat64(void);
7676
// the API figure out the type instead of providing one.
7777
BinaryenType BinaryenUndefined(void);
7878

79+
// Expression ids (call to get the value of each; you can cache them)
80+
81+
typedef uint32_t BinaryenExpressionId;
82+
83+
BinaryenExpressionId BinaryenInvalidId(void);
84+
BinaryenExpressionId BinaryenBlockId(void);
85+
BinaryenExpressionId BinaryenIfId(void);
86+
BinaryenExpressionId BinaryenLoopId(void);
87+
BinaryenExpressionId BinaryenBreakId(void);
88+
BinaryenExpressionId BinaryenSwitchId(void);
89+
BinaryenExpressionId BinaryenCallId(void);
90+
BinaryenExpressionId BinaryenCallImportId(void);
91+
BinaryenExpressionId BinaryenCallIndirectId(void);
92+
BinaryenExpressionId BinaryenGetLocalId(void);
93+
BinaryenExpressionId BinaryenSetLocalId(void);
94+
BinaryenExpressionId BinaryenGetGlobalId(void);
95+
BinaryenExpressionId BinaryenSetGlobalId(void);
96+
BinaryenExpressionId BinaryenLoadId(void);
97+
BinaryenExpressionId BinaryenStoreId(void);
98+
BinaryenExpressionId BinaryenConstId(void);
99+
BinaryenExpressionId BinaryenUnaryId(void);
100+
BinaryenExpressionId BinaryenBinaryId(void);
101+
BinaryenExpressionId BinaryenSelectId(void);
102+
BinaryenExpressionId BinaryenDropId(void);
103+
BinaryenExpressionId BinaryenReturnId(void);
104+
BinaryenExpressionId BinaryenHostId(void);
105+
BinaryenExpressionId BinaryenNopId(void);
106+
BinaryenExpressionId BinaryenUnreachableId(void);
107+
BinaryenExpressionId BinaryenAtomicCmpxchgId(void);
108+
BinaryenExpressionId BinaryenAtomicRMWId(void);
109+
BinaryenExpressionId BinaryenAtomicWaitId(void);
110+
BinaryenExpressionId BinaryenAtomicWakeId(void);
111+
79112
// Modules
80113
//
81114
// Modules contain lists of functions, imports, exports, function types. The
@@ -332,6 +365,10 @@ BinaryenExpressionRef BinaryenAtomicCmpxchg(BinaryenModuleRef module, BinaryenIn
332365
BinaryenExpressionRef BinaryenAtomicWait(BinaryenModuleRef module, BinaryenExpressionRef ptr, BinaryenExpressionRef expected, BinaryenExpressionRef timeout, BinaryenType type);
333366
BinaryenExpressionRef BinaryenAtomicWake(BinaryenModuleRef module, BinaryenExpressionRef ptr, BinaryenExpressionRef wakeCount);
334367

368+
// Gets the id (kind) of the specified expression.
369+
BinaryenExpressionId BinaryenExpressionGetId(BinaryenExpressionRef expr);
370+
// Gets the type of the specified expression.
371+
BinaryenType BinaryenExpressionGetType(BinaryenExpressionRef expr);
335372
// Print an expression to stdout. Useful for debugging.
336373
void BinaryenExpressionPrint(BinaryenExpressionRef expr);
337374

src/js/binaryen.js-post.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,35 @@
2929
Module['f64'] = Module['_BinaryenFloat64']();
3030
Module['undefined'] = Module['_BinaryenUndefined']();
3131

32+
Module['InvalidId'] = Module['_BinaryenInvalidId']();
33+
Module['BlockId'] = Module['_BinaryenBlockId']();
34+
Module['IfId'] = Module['_BinaryenIfId']();
35+
Module['LoopId'] = Module['_BinaryenLoopId']();
36+
Module['BreakId'] = Module['_BinaryenBreakId']();
37+
Module['SwitchId'] = Module['_BinaryenSwitchId']();
38+
Module['CallId'] = Module['_BinaryenCallId']();
39+
Module['CallImportId'] = Module['_BinaryenCallImportId']();
40+
Module['CallIndirectId'] = Module['_BinaryenCallIndirectId']();
41+
Module['GetLocalId'] = Module['_BinaryenGetLocalId']();
42+
Module['SetLocalId'] = Module['_BinaryenSetLocalId']();
43+
Module['GetGlobalId'] = Module['_BinaryenGetGlobalId']();
44+
Module['SetGlobalId'] = Module['_BinaryenSetGlobalId']();
45+
Module['LoadId'] = Module['_BinaryenLoadId']();
46+
Module['StoreId'] = Module['_BinaryenStoreId']();
47+
Module['ConstId'] = Module['_BinaryenConstId']();
48+
Module['UnaryId'] = Module['_BinaryenUnaryId']();
49+
Module['BinaryId'] = Module['_BinaryenBinaryId']();
50+
Module['SelectId'] = Module['_BinaryenSelectId']();
51+
Module['DropId'] = Module['_BinaryenDropId']();
52+
Module['ReturnId'] = Module['_BinaryenReturnId']();
53+
Module['HostId'] = Module['_BinaryenHostId']();
54+
Module['NopId'] = Module['_BinaryenNopId']();
55+
Module['UnreachableId'] = Module['_BinaryenUnreachableId']();
56+
Module['AtomicCmpxchgId'] = Module['_BinaryenAtomicCmpxchgId']();
57+
Module['AtomicRMWId'] = Module['_BinaryenAtomicRMWId']();
58+
Module['AtomicWaitId'] = Module['_BinaryenAtomicWaitId']();
59+
Module['AtomicWakeId'] = Module['_BinaryenAtomicWakeId']();
60+
3261
Module['ClzInt32'] = Module['_BinaryenClzInt32']();
3362
Module['CtzInt32'] = Module['_BinaryenCtzInt32']();
3463
Module['PopcntInt32'] = Module['_BinaryenPopcntInt32']();
@@ -894,6 +923,14 @@
894923
};
895924
};
896925

926+
Module['getExpressionId'] = function(expr) {
927+
return Module['_BinaryenExpressionGetId'](expr);
928+
};
929+
930+
Module['getExpressionType'] = function(expr) {
931+
return Module['_BinaryenExpressionGetType'](expr);
932+
};
933+
897934
// emit text of an expression or a module
898935
Module['emitText'] = function(expr) {
899936
if (typeof expr === 'object') {

0 commit comments

Comments
 (0)