Created
January 12, 2017 00:33
-
-
Save eholk/098eb194392bb04d80db561fe228c849 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// beginning a Binaryen API trace | |
#include <math.h> | |
#include <map> | |
#include "src/binaryen-c.h" | |
int main() { | |
std::map<size_t, BinaryenFunctionTypeRef> functionTypes; | |
std::map<size_t, BinaryenExpressionRef> expressions; | |
std::map<size_t, BinaryenFunctionRef> functions; | |
std::map<size_t, RelooperBlockRef> relooperBlocks; | |
BinaryenModuleRef the_module = NULL; | |
RelooperRef the_relooper = NULL; | |
the_module = BinaryenModuleCreate(); | |
expressions[size_t(NULL)] = BinaryenExpressionRef(NULL); | |
BinaryenModuleAutoDrop(the_module); | |
{ | |
const char* segments[] = { 0 }; | |
BinaryenExpressionRef segmentOffsets[] = { 0 }; | |
BinaryenIndex segmentSizes[] = { 0 }; | |
BinaryenSetMemory(the_module, 256, 256, "memory", segments, segmentOffsets, segmentSizes, 0); | |
} | |
the_relooper = RelooperCreate(); | |
expressions[1] = BinaryenGetLocal(the_module, 0, 1); | |
expressions[2] = BinaryenSetLocal(the_module, 1, expressions[1]); | |
expressions[3] = BinaryenGetLocal(the_module, 1, 1); | |
expressions[4] = BinaryenSetLocal(the_module, 4, expressions[3]); | |
expressions[5] = BinaryenGetLocal(the_module, 4, 1); | |
expressions[6] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[7] = BinaryenBinary(the_module, 15, expressions[5], expressions[6]); | |
expressions[8] = BinaryenSetLocal(the_module, 3, expressions[7]); | |
{ | |
BinaryenExpressionRef children[] = { expressions[2], expressions[4], expressions[8] }; | |
expressions[9] = BinaryenBlock(the_module, "bb0", children, 3); | |
} | |
relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[9]); | |
expressions[10] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); | |
expressions[11] = BinaryenSetLocal(the_module, 2, expressions[10]); | |
{ | |
BinaryenExpressionRef children[] = { expressions[11] }; | |
expressions[12] = BinaryenBlock(the_module, "bb1", children, 1); | |
} | |
relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[12]); | |
expressions[13] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[14] = BinaryenSetLocal(the_module, 2, expressions[13]); | |
{ | |
BinaryenExpressionRef children[] = { expressions[14] }; | |
expressions[15] = BinaryenBlock(the_module, "bb2", children, 1); | |
} | |
relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[15]); | |
expressions[16] = BinaryenGetLocal(the_module, 1, 1); | |
expressions[17] = BinaryenSetLocal(the_module, 6, expressions[16]); | |
expressions[18] = BinaryenGetLocal(the_module, 6, 1); | |
expressions[19] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); | |
expressions[20] = BinaryenBinary(the_module, 15, expressions[18], expressions[19]); | |
expressions[21] = BinaryenSetLocal(the_module, 5, expressions[20]); | |
{ | |
BinaryenExpressionRef children[] = { expressions[17], expressions[21] }; | |
expressions[22] = BinaryenBlock(the_module, "bb3", children, 2); | |
} | |
relooperBlocks[3] = RelooperAddBlock(the_relooper, expressions[22]); | |
{ | |
BinaryenExpressionRef children[] = { 0 }; | |
expressions[23] = BinaryenBlock(the_module, "bb4", children, 0); | |
} | |
relooperBlocks[4] = RelooperAddBlock(the_relooper, expressions[23]); | |
expressions[24] = BinaryenGetLocal(the_module, 1, 1); | |
expressions[25] = BinaryenSetLocal(the_module, 7, expressions[24]); | |
expressions[26] = BinaryenGetLocal(the_module, 7, 1); | |
expressions[27] = BinaryenSetLocal(the_module, 17, expressions[26]); | |
{ | |
BinaryenExpressionRef children[] = { expressions[25], expressions[27] }; | |
expressions[28] = BinaryenBlock(the_module, "bb5", children, 2); | |
} | |
relooperBlocks[5] = RelooperAddBlock(the_relooper, expressions[28]); | |
expressions[29] = BinaryenGetLocal(the_module, 1, 1); | |
expressions[30] = BinaryenSetLocal(the_module, 10, expressions[29]); | |
expressions[31] = BinaryenGetLocal(the_module, 10, 1); | |
expressions[32] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); | |
expressions[33] = BinaryenUnary(the_module, 22, expressions[31]); | |
expressions[34] = BinaryenUnary(the_module, 22, expressions[32]); | |
expressions[35] = BinaryenBinary(the_module, 26, expressions[33], expressions[34]); | |
expressions[36] = BinaryenSetLocal(the_module, 20, expressions[35]); | |
expressions[37] = BinaryenGetLocal(the_module, 20, 2); | |
expressions[38] = BinaryenUnary(the_module, 24, expressions[37]); | |
expressions[39] = BinaryenConst(the_module, BinaryenLiteralInt64(32)); | |
expressions[40] = BinaryenGetLocal(the_module, 20, 2); | |
expressions[41] = BinaryenBinary(the_module, 36, expressions[40], expressions[39]); | |
expressions[42] = BinaryenUnary(the_module, 24, expressions[41]); | |
expressions[43] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[44] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[43]); | |
expressions[45] = BinaryenConst(the_module, BinaryenLiteralInt32(64)); | |
expressions[46] = BinaryenBinary(the_module, 1, expressions[44], expressions[45]); | |
expressions[47] = BinaryenTeeLocal(the_module, 11, expressions[46]); | |
expressions[48] = BinaryenStore(the_module, 4, 0, 0, expressions[43], expressions[47], 1); | |
expressions[49] = BinaryenGetLocal(the_module, 11, 1); | |
expressions[50] = BinaryenStore(the_module, 4, 0, 0, expressions[49], expressions[38], 1); | |
expressions[51] = BinaryenStore(the_module, 4, 4, 0, expressions[49], expressions[42], 1); | |
{ | |
BinaryenExpressionRef children[] = { expressions[30], expressions[36], expressions[48], expressions[50], expressions[51] }; | |
expressions[52] = BinaryenBlock(the_module, "bb6", children, 5); | |
} | |
relooperBlocks[6] = RelooperAddBlock(the_relooper, expressions[52]); | |
expressions[53] = BinaryenGetLocal(the_module, 11, 1); | |
expressions[54] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[53]); | |
expressions[55] = BinaryenSetLocal(the_module, 9, expressions[54]); | |
expressions[56] = BinaryenGetLocal(the_module, 9, 1); | |
{ | |
BinaryenExpressionRef operands[] = { expressions[56] }; | |
expressions[57] = BinaryenCall(the_module, "fibonacci_recursive", operands, 1, 1); | |
} | |
expressions[58] = BinaryenSetLocal(the_module, 8, expressions[57]); | |
{ | |
BinaryenExpressionRef children[] = { expressions[55], expressions[58] }; | |
expressions[59] = BinaryenBlock(the_module, "bb7", children, 2); | |
} | |
relooperBlocks[7] = RelooperAddBlock(the_relooper, expressions[59]); | |
expressions[60] = BinaryenGetLocal(the_module, 1, 1); | |
expressions[61] = BinaryenSetLocal(the_module, 14, expressions[60]); | |
expressions[62] = BinaryenGetLocal(the_module, 14, 1); | |
expressions[63] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); | |
expressions[64] = BinaryenUnary(the_module, 22, expressions[62]); | |
expressions[65] = BinaryenUnary(the_module, 22, expressions[63]); | |
expressions[66] = BinaryenBinary(the_module, 26, expressions[64], expressions[65]); | |
expressions[67] = BinaryenSetLocal(the_module, 20, expressions[66]); | |
expressions[68] = BinaryenGetLocal(the_module, 20, 2); | |
expressions[69] = BinaryenUnary(the_module, 24, expressions[68]); | |
expressions[70] = BinaryenConst(the_module, BinaryenLiteralInt64(32)); | |
expressions[71] = BinaryenGetLocal(the_module, 20, 2); | |
expressions[72] = BinaryenBinary(the_module, 36, expressions[71], expressions[70]); | |
expressions[73] = BinaryenUnary(the_module, 24, expressions[72]); | |
expressions[74] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[75] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[74]); | |
expressions[76] = BinaryenConst(the_module, BinaryenLiteralInt32(64)); | |
expressions[77] = BinaryenBinary(the_module, 1, expressions[75], expressions[76]); | |
expressions[78] = BinaryenTeeLocal(the_module, 15, expressions[77]); | |
expressions[79] = BinaryenStore(the_module, 4, 0, 0, expressions[74], expressions[78], 1); | |
expressions[80] = BinaryenGetLocal(the_module, 15, 1); | |
expressions[81] = BinaryenStore(the_module, 4, 0, 0, expressions[80], expressions[69], 1); | |
expressions[82] = BinaryenStore(the_module, 4, 4, 0, expressions[80], expressions[73], 1); | |
{ | |
BinaryenExpressionRef children[] = { expressions[61], expressions[67], expressions[79], expressions[81], expressions[82] }; | |
expressions[83] = BinaryenBlock(the_module, "bb8", children, 5); | |
} | |
relooperBlocks[8] = RelooperAddBlock(the_relooper, expressions[83]); | |
expressions[84] = BinaryenGetLocal(the_module, 15, 1); | |
expressions[85] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[84]); | |
expressions[86] = BinaryenSetLocal(the_module, 13, expressions[85]); | |
expressions[87] = BinaryenGetLocal(the_module, 13, 1); | |
{ | |
BinaryenExpressionRef operands[] = { expressions[87] }; | |
expressions[88] = BinaryenCall(the_module, "fibonacci_recursive", operands, 1, 1); | |
} | |
expressions[89] = BinaryenSetLocal(the_module, 12, expressions[88]); | |
{ | |
BinaryenExpressionRef children[] = { expressions[86], expressions[89] }; | |
expressions[90] = BinaryenBlock(the_module, "bb9", children, 2); | |
} | |
relooperBlocks[9] = RelooperAddBlock(the_relooper, expressions[90]); | |
expressions[91] = BinaryenGetLocal(the_module, 8, 1); | |
expressions[92] = BinaryenGetLocal(the_module, 12, 1); | |
expressions[93] = BinaryenUnary(the_module, 22, expressions[91]); | |
expressions[94] = BinaryenUnary(the_module, 22, expressions[92]); | |
expressions[95] = BinaryenBinary(the_module, 25, expressions[93], expressions[94]); | |
expressions[96] = BinaryenSetLocal(the_module, 20, expressions[95]); | |
expressions[97] = BinaryenGetLocal(the_module, 20, 2); | |
expressions[98] = BinaryenUnary(the_module, 24, expressions[97]); | |
expressions[99] = BinaryenConst(the_module, BinaryenLiteralInt64(32)); | |
expressions[100] = BinaryenGetLocal(the_module, 20, 2); | |
expressions[101] = BinaryenBinary(the_module, 36, expressions[100], expressions[99]); | |
expressions[102] = BinaryenUnary(the_module, 24, expressions[101]); | |
expressions[103] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[104] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[103]); | |
expressions[105] = BinaryenConst(the_module, BinaryenLiteralInt32(64)); | |
expressions[106] = BinaryenBinary(the_module, 1, expressions[104], expressions[105]); | |
expressions[107] = BinaryenTeeLocal(the_module, 16, expressions[106]); | |
expressions[108] = BinaryenStore(the_module, 4, 0, 0, expressions[103], expressions[107], 1); | |
expressions[109] = BinaryenGetLocal(the_module, 16, 1); | |
expressions[110] = BinaryenStore(the_module, 4, 0, 0, expressions[109], expressions[98], 1); | |
expressions[111] = BinaryenStore(the_module, 4, 4, 0, expressions[109], expressions[102], 1); | |
{ | |
BinaryenExpressionRef children[] = { expressions[96], expressions[108], expressions[110], expressions[111] }; | |
expressions[112] = BinaryenBlock(the_module, "bb10", children, 4); | |
} | |
relooperBlocks[10] = RelooperAddBlock(the_relooper, expressions[112]); | |
expressions[113] = BinaryenGetLocal(the_module, 16, 1); | |
expressions[114] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[113]); | |
expressions[115] = BinaryenSetLocal(the_module, 17, expressions[114]); | |
{ | |
BinaryenExpressionRef children[] = { expressions[115] }; | |
expressions[116] = BinaryenBlock(the_module, "bb11", children, 1); | |
} | |
relooperBlocks[11] = RelooperAddBlock(the_relooper, expressions[116]); | |
expressions[117] = BinaryenGetLocal(the_module, 18, 1); | |
expressions[118] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[119] = BinaryenStore(the_module, 4, 0, 0, expressions[118], expressions[117], 1); | |
expressions[120] = BinaryenGetLocal(the_module, 17, 1); | |
expressions[121] = BinaryenReturn(the_module, expressions[120]); | |
{ | |
BinaryenExpressionRef children[] = { expressions[119], expressions[121] }; | |
expressions[122] = BinaryenBlock(the_module, "bb12", children, 2); | |
} | |
relooperBlocks[12] = RelooperAddBlock(the_relooper, expressions[122]); | |
expressions[123] = BinaryenGetLocal(the_module, 3, 1); | |
RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[123], expressions[0]); | |
RelooperAddBranch(relooperBlocks[0], relooperBlocks[3], expressions[0], expressions[0]); | |
RelooperAddBranch(relooperBlocks[1], relooperBlocks[4], expressions[0], expressions[0]); | |
RelooperAddBranch(relooperBlocks[2], relooperBlocks[4], expressions[0], expressions[0]); | |
expressions[124] = BinaryenGetLocal(the_module, 5, 1); | |
RelooperAddBranch(relooperBlocks[3], relooperBlocks[1], expressions[124], expressions[0]); | |
RelooperAddBranch(relooperBlocks[3], relooperBlocks[2], expressions[0], expressions[0]); | |
expressions[125] = BinaryenGetLocal(the_module, 2, 1); | |
RelooperAddBranch(relooperBlocks[4], relooperBlocks[5], expressions[125], expressions[0]); | |
RelooperAddBranch(relooperBlocks[4], relooperBlocks[6], expressions[0], expressions[0]); | |
RelooperAddBranch(relooperBlocks[5], relooperBlocks[12], expressions[0], expressions[0]); | |
RelooperAddBranch(relooperBlocks[6], relooperBlocks[7], expressions[0], expressions[0]); | |
RelooperAddBranch(relooperBlocks[7], relooperBlocks[8], expressions[0], expressions[0]); | |
RelooperAddBranch(relooperBlocks[8], relooperBlocks[9], expressions[0], expressions[0]); | |
RelooperAddBranch(relooperBlocks[9], relooperBlocks[10], expressions[0], expressions[0]); | |
RelooperAddBranch(relooperBlocks[10], relooperBlocks[11], expressions[0], expressions[0]); | |
RelooperAddBranch(relooperBlocks[11], relooperBlocks[12], expressions[0], expressions[0]); | |
{ | |
BinaryenIndex paramTypes[] = { 1 }; | |
functionTypes[0] = BinaryenAddFunctionType(the_module, "rustfn-0-2", 1, paramTypes, 1); | |
} | |
expressions[126] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[127] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[126]); | |
expressions[128] = BinaryenSetLocal(the_module, 18, expressions[127]); | |
relooperBlocks[13] = RelooperAddBlock(the_relooper, expressions[128]); | |
RelooperAddBranch(relooperBlocks[13], relooperBlocks[0], expressions[0], expressions[0]); | |
expressions[129] = RelooperRenderAndDispose(the_relooper, relooperBlocks[13], 19, the_module); | |
{ | |
BinaryenType varTypes[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 }; | |
functions[0] = BinaryenAddFunction(the_module, "fibonacci_recursive", functionTypes[0], varTypes, 20, expressions[129]); | |
} | |
BinaryenAddExport(the_module, "fibonacci_recursive", "fibonacci_recursive"); | |
the_relooper = RelooperCreate(); | |
{ | |
BinaryenExpressionRef children[] = { 0 }; | |
expressions[130] = BinaryenBlock(the_module, "bb0", children, 0); | |
} | |
relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[130]); | |
{ | |
BinaryenExpressionRef children[] = { 0 }; | |
expressions[131] = BinaryenBlock(the_module, "bb1", children, 0); | |
} | |
relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[131]); | |
RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]); | |
RelooperAddBranch(relooperBlocks[1], relooperBlocks[1], expressions[0], expressions[0]); | |
{ | |
BinaryenIndex paramTypes[] = { 0 }; | |
functionTypes[1] = BinaryenAddFunctionType(the_module, "rustfn-0-4", 0, paramTypes, 0); | |
} | |
expressions[132] = BinaryenUnreachable(the_module); | |
{ | |
BinaryenType varTypes[] = { 1, 1, 2 }; | |
functions[1] = BinaryenAddFunction(the_module, "panic", functionTypes[1], varTypes, 3, expressions[132]); | |
} | |
the_relooper = RelooperCreate(); | |
expressions[133] = BinaryenConst(the_module, BinaryenLiteralInt32(10)); | |
{ | |
BinaryenExpressionRef operands[] = { expressions[133] }; | |
expressions[134] = BinaryenCall(the_module, "fibonacci_recursive", operands, 1, 1); | |
} | |
expressions[135] = BinaryenSetLocal(the_module, 0, expressions[134]); | |
{ | |
BinaryenExpressionRef children[] = { expressions[135] }; | |
expressions[136] = BinaryenBlock(the_module, "bb0", children, 1); | |
} | |
relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[136]); | |
expressions[137] = BinaryenGetLocal(the_module, 0, 1); | |
expressions[138] = BinaryenSetLocal(the_module, 3, expressions[137]); | |
expressions[139] = BinaryenGetLocal(the_module, 3, 1); | |
expressions[140] = BinaryenConst(the_module, BinaryenLiteralInt32(55)); | |
expressions[141] = BinaryenBinary(the_module, 15, expressions[139], expressions[140]); | |
expressions[142] = BinaryenSetLocal(the_module, 2, expressions[141]); | |
expressions[143] = BinaryenGetLocal(the_module, 2, 1); | |
expressions[144] = BinaryenUnary(the_module, 20, expressions[143]); | |
expressions[145] = BinaryenSetLocal(the_module, 1, expressions[144]); | |
{ | |
BinaryenExpressionRef children[] = { expressions[138], expressions[142], expressions[145] }; | |
expressions[146] = BinaryenBlock(the_module, "bb1", children, 3); | |
} | |
relooperBlocks[3] = RelooperAddBlock(the_relooper, expressions[146]); | |
{ | |
BinaryenExpressionRef operands[] = { 0 }; | |
expressions[147] = BinaryenCall(the_module, "panic", operands, 0, 1); | |
} | |
expressions[148] = BinaryenUnreachable(the_module); | |
{ | |
BinaryenExpressionRef children[] = { expressions[147], expressions[148] }; | |
expressions[149] = BinaryenBlock(the_module, "bb2", children, 2); | |
} | |
relooperBlocks[4] = RelooperAddBlock(the_relooper, expressions[149]); | |
expressions[150] = BinaryenGetLocal(the_module, 4, 1); | |
expressions[151] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[152] = BinaryenStore(the_module, 4, 0, 0, expressions[151], expressions[150], 1); | |
expressions[153] = BinaryenReturn(the_module, expressions[0]); | |
{ | |
BinaryenExpressionRef children[] = { expressions[152], expressions[153] }; | |
expressions[154] = BinaryenBlock(the_module, "bb3", children, 2); | |
} | |
relooperBlocks[5] = RelooperAddBlock(the_relooper, expressions[154]); | |
RelooperAddBranch(relooperBlocks[2], relooperBlocks[3], expressions[0], expressions[0]); | |
expressions[155] = BinaryenGetLocal(the_module, 1, 1); | |
RelooperAddBranch(relooperBlocks[3], relooperBlocks[4], expressions[155], expressions[0]); | |
RelooperAddBranch(relooperBlocks[3], relooperBlocks[5], expressions[0], expressions[0]); | |
{ | |
BinaryenIndex paramTypes[] = { 0 }; | |
functionTypes[2] = BinaryenAddFunctionType(the_module, "rustfn-0-5", 0, paramTypes, 0); | |
} | |
expressions[156] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[157] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[156]); | |
expressions[158] = BinaryenSetLocal(the_module, 4, expressions[157]); | |
relooperBlocks[6] = RelooperAddBlock(the_relooper, expressions[158]); | |
RelooperAddBranch(relooperBlocks[6], relooperBlocks[2], expressions[0], expressions[0]); | |
expressions[159] = RelooperRenderAndDispose(the_relooper, relooperBlocks[6], 5, the_module); | |
{ | |
BinaryenType varTypes[] = { 1, 1, 1, 1, 1, 1, 2 }; | |
functions[2] = BinaryenAddFunction(the_module, "main", functionTypes[2], varTypes, 7, expressions[159]); | |
} | |
BinaryenAddExport(the_module, "main", "main"); | |
{ | |
BinaryenIndex paramTypes[] = { 0 }; | |
functionTypes[3] = BinaryenAddFunctionType(the_module, "__wasm_start", 0, paramTypes, 0); | |
} | |
{ | |
const char* segments[] = { 0 }; | |
BinaryenExpressionRef segmentOffsets[] = { 0 }; | |
BinaryenIndex segmentSizes[] = { 0 }; | |
BinaryenSetMemory(the_module, 1024, 1024, NULL, segments, segmentOffsets, segmentSizes, 0); | |
} | |
expressions[160] = BinaryenConst(the_module, BinaryenLiteralInt32(65535)); | |
expressions[161] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[162] = BinaryenStore(the_module, 4, 0, 0, expressions[161], expressions[160], 1); | |
{ | |
BinaryenExpressionRef operands[] = { 0 }; | |
expressions[163] = BinaryenCall(the_module, "main", operands, 0, 0); | |
} | |
{ | |
BinaryenExpressionRef children[] = { expressions[162], expressions[163] }; | |
expressions[164] = BinaryenBlock(the_module, NULL, children, 2); | |
} | |
BinaryenAddExport(the_module, "__wasm_start", "rust_entry"); | |
{ | |
BinaryenType varTypes[] = { 0 }; | |
functions[3] = BinaryenAddFunction(the_module, "__wasm_start", functionTypes[3], varTypes, 0, expressions[164]); | |
} | |
BinaryenSetStart(the_module, functions[3]); | |
the_relooper = RelooperCreate(); | |
expressions[165] = BinaryenGetLocal(the_module, 0, 1); | |
expressions[166] = BinaryenSetLocal(the_module, 2, expressions[165]); | |
expressions[167] = BinaryenGetLocal(the_module, 1, 1); | |
expressions[168] = BinaryenSetLocal(the_module, 3, expressions[167]); | |
expressions[169] = BinaryenGetLocal(the_module, 2, 1); | |
expressions[170] = BinaryenSetLocal(the_module, 4, expressions[169]); | |
expressions[171] = BinaryenGetLocal(the_module, 3, 1); | |
expressions[172] = BinaryenSetLocal(the_module, 5, expressions[171]); | |
expressions[173] = BinaryenGetLocal(the_module, 4, 1); | |
expressions[174] = BinaryenGetLocal(the_module, 5, 1); | |
expressions[175] = BinaryenBinary(the_module, 15, expressions[173], expressions[174]); | |
expressions[176] = BinaryenSetLocal(the_module, 6, expressions[175]); | |
{ | |
BinaryenExpressionRef children[] = { expressions[166], expressions[168], expressions[170], expressions[172], expressions[176] }; | |
expressions[177] = BinaryenBlock(the_module, "bb0", children, 5); | |
} | |
relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[177]); | |
expressions[178] = BinaryenGetLocal(the_module, 7, 1); | |
expressions[179] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[180] = BinaryenStore(the_module, 4, 0, 0, expressions[179], expressions[178], 1); | |
expressions[181] = BinaryenGetLocal(the_module, 6, 1); | |
expressions[182] = BinaryenReturn(the_module, expressions[181]); | |
{ | |
BinaryenExpressionRef children[] = { expressions[180], expressions[182] }; | |
expressions[183] = BinaryenBlock(the_module, "bb1", children, 2); | |
} | |
relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[183]); | |
RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]); | |
{ | |
BinaryenIndex paramTypes[] = { 1, 1 }; | |
functionTypes[4] = BinaryenAddFunctionType(the_module, "rustfn-0-19", 1, paramTypes, 2); | |
} | |
expressions[184] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[185] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[184]); | |
expressions[186] = BinaryenSetLocal(the_module, 7, expressions[185]); | |
relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[186]); | |
RelooperAddBranch(relooperBlocks[2], relooperBlocks[0], expressions[0], expressions[0]); | |
expressions[187] = RelooperRenderAndDispose(the_relooper, relooperBlocks[2], 8, the_module); | |
{ | |
BinaryenType varTypes[] = { 1, 1, 1, 1, 1, 1, 1, 2 }; | |
functions[4] = BinaryenAddFunction(the_module, "_i32_as_PartialEq_::eq", functionTypes[4], varTypes, 8, expressions[187]); | |
} | |
BinaryenAddExport(the_module, "_i32_as_PartialEq_::eq", "_i32_as_PartialEq_::eq"); | |
the_relooper = RelooperCreate(); | |
expressions[188] = BinaryenGetLocal(the_module, 0, 1); | |
expressions[189] = BinaryenSetLocal(the_module, 2, expressions[188]); | |
expressions[190] = BinaryenGetLocal(the_module, 1, 1); | |
expressions[191] = BinaryenSetLocal(the_module, 3, expressions[190]); | |
expressions[192] = BinaryenGetLocal(the_module, 2, 1); | |
expressions[193] = BinaryenSetLocal(the_module, 4, expressions[192]); | |
expressions[194] = BinaryenGetLocal(the_module, 3, 1); | |
expressions[195] = BinaryenSetLocal(the_module, 5, expressions[194]); | |
expressions[196] = BinaryenGetLocal(the_module, 4, 1); | |
expressions[197] = BinaryenGetLocal(the_module, 5, 1); | |
expressions[198] = BinaryenBinary(the_module, 16, expressions[196], expressions[197]); | |
expressions[199] = BinaryenSetLocal(the_module, 6, expressions[198]); | |
{ | |
BinaryenExpressionRef children[] = { expressions[189], expressions[191], expressions[193], expressions[195], expressions[199] }; | |
expressions[200] = BinaryenBlock(the_module, "bb0", children, 5); | |
} | |
relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[200]); | |
expressions[201] = BinaryenGetLocal(the_module, 7, 1); | |
expressions[202] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[203] = BinaryenStore(the_module, 4, 0, 0, expressions[202], expressions[201], 1); | |
expressions[204] = BinaryenGetLocal(the_module, 6, 1); | |
expressions[205] = BinaryenReturn(the_module, expressions[204]); | |
{ | |
BinaryenExpressionRef children[] = { expressions[203], expressions[205] }; | |
expressions[206] = BinaryenBlock(the_module, "bb1", children, 2); | |
} | |
relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[206]); | |
RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]); | |
expressions[207] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[208] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[207]); | |
expressions[209] = BinaryenSetLocal(the_module, 7, expressions[208]); | |
relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[209]); | |
RelooperAddBranch(relooperBlocks[2], relooperBlocks[0], expressions[0], expressions[0]); | |
expressions[210] = RelooperRenderAndDispose(the_relooper, relooperBlocks[2], 8, the_module); | |
{ | |
BinaryenType varTypes[] = { 1, 1, 1, 1, 1, 1, 1, 2 }; | |
functions[5] = BinaryenAddFunction(the_module, "_i32_as_PartialEq_::ne", functionTypes[4], varTypes, 8, expressions[210]); | |
} | |
BinaryenAddExport(the_module, "_i32_as_PartialEq_::ne", "_i32_as_PartialEq_::ne"); | |
the_relooper = RelooperCreate(); | |
expressions[211] = BinaryenGetLocal(the_module, 0, 1); | |
expressions[212] = BinaryenSetLocal(the_module, 2, expressions[211]); | |
expressions[213] = BinaryenGetLocal(the_module, 1, 1); | |
expressions[214] = BinaryenSetLocal(the_module, 3, expressions[213]); | |
expressions[215] = BinaryenGetLocal(the_module, 2, 1); | |
expressions[216] = BinaryenSetLocal(the_module, 4, expressions[215]); | |
expressions[217] = BinaryenGetLocal(the_module, 3, 1); | |
expressions[218] = BinaryenSetLocal(the_module, 5, expressions[217]); | |
expressions[219] = BinaryenGetLocal(the_module, 4, 1); | |
expressions[220] = BinaryenGetLocal(the_module, 5, 1); | |
expressions[221] = BinaryenUnary(the_module, 22, expressions[219]); | |
expressions[222] = BinaryenUnary(the_module, 22, expressions[220]); | |
expressions[223] = BinaryenBinary(the_module, 25, expressions[221], expressions[222]); | |
expressions[224] = BinaryenSetLocal(the_module, 10, expressions[223]); | |
expressions[225] = BinaryenGetLocal(the_module, 10, 2); | |
expressions[226] = BinaryenUnary(the_module, 24, expressions[225]); | |
expressions[227] = BinaryenConst(the_module, BinaryenLiteralInt64(32)); | |
expressions[228] = BinaryenGetLocal(the_module, 10, 2); | |
expressions[229] = BinaryenBinary(the_module, 36, expressions[228], expressions[227]); | |
expressions[230] = BinaryenUnary(the_module, 24, expressions[229]); | |
expressions[231] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[232] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[231]); | |
expressions[233] = BinaryenConst(the_module, BinaryenLiteralInt32(64)); | |
expressions[234] = BinaryenBinary(the_module, 1, expressions[232], expressions[233]); | |
expressions[235] = BinaryenTeeLocal(the_module, 6, expressions[234]); | |
expressions[236] = BinaryenStore(the_module, 4, 0, 0, expressions[231], expressions[235], 1); | |
expressions[237] = BinaryenGetLocal(the_module, 6, 1); | |
expressions[238] = BinaryenStore(the_module, 4, 0, 0, expressions[237], expressions[226], 1); | |
expressions[239] = BinaryenStore(the_module, 4, 4, 0, expressions[237], expressions[230], 1); | |
{ | |
BinaryenExpressionRef children[] = { expressions[212], expressions[214], expressions[216], expressions[218], expressions[224], expressions[236], expressions[238], expressions[239] }; | |
expressions[240] = BinaryenBlock(the_module, "bb0", children, 8); | |
} | |
relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[240]); | |
expressions[241] = BinaryenGetLocal(the_module, 6, 1); | |
expressions[242] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[241]); | |
expressions[243] = BinaryenSetLocal(the_module, 7, expressions[242]); | |
expressions[244] = BinaryenGetLocal(the_module, 8, 1); | |
expressions[245] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[246] = BinaryenStore(the_module, 4, 0, 0, expressions[245], expressions[244], 1); | |
expressions[247] = BinaryenGetLocal(the_module, 7, 1); | |
expressions[248] = BinaryenReturn(the_module, expressions[247]); | |
{ | |
BinaryenExpressionRef children[] = { expressions[243], expressions[246], expressions[248] }; | |
expressions[249] = BinaryenBlock(the_module, "bb1", children, 3); | |
} | |
relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[249]); | |
RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]); | |
{ | |
BinaryenIndex paramTypes[] = { 1, 1 }; | |
functionTypes[5] = BinaryenAddFunctionType(the_module, "rustfn-0-33", 1, paramTypes, 2); | |
} | |
expressions[250] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[251] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[250]); | |
expressions[252] = BinaryenSetLocal(the_module, 8, expressions[251]); | |
relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[252]); | |
RelooperAddBranch(relooperBlocks[2], relooperBlocks[0], expressions[0], expressions[0]); | |
expressions[253] = RelooperRenderAndDispose(the_relooper, relooperBlocks[2], 9, the_module); | |
{ | |
BinaryenType varTypes[] = { 1, 1, 1, 1, 1, 1, 1, 1, 2 }; | |
functions[6] = BinaryenAddFunction(the_module, "_i32_as_Add_::add", functionTypes[5], varTypes, 9, expressions[253]); | |
} | |
BinaryenAddExport(the_module, "_i32_as_Add_::add", "_i32_as_Add_::add"); | |
the_relooper = RelooperCreate(); | |
expressions[254] = BinaryenGetLocal(the_module, 0, 1); | |
expressions[255] = BinaryenSetLocal(the_module, 2, expressions[254]); | |
expressions[256] = BinaryenGetLocal(the_module, 1, 1); | |
expressions[257] = BinaryenSetLocal(the_module, 3, expressions[256]); | |
expressions[258] = BinaryenGetLocal(the_module, 2, 1); | |
expressions[259] = BinaryenSetLocal(the_module, 4, expressions[258]); | |
expressions[260] = BinaryenGetLocal(the_module, 3, 1); | |
expressions[261] = BinaryenSetLocal(the_module, 5, expressions[260]); | |
expressions[262] = BinaryenGetLocal(the_module, 4, 1); | |
expressions[263] = BinaryenGetLocal(the_module, 5, 1); | |
expressions[264] = BinaryenUnary(the_module, 22, expressions[262]); | |
expressions[265] = BinaryenUnary(the_module, 22, expressions[263]); | |
expressions[266] = BinaryenBinary(the_module, 26, expressions[264], expressions[265]); | |
expressions[267] = BinaryenSetLocal(the_module, 10, expressions[266]); | |
expressions[268] = BinaryenGetLocal(the_module, 10, 2); | |
expressions[269] = BinaryenUnary(the_module, 24, expressions[268]); | |
expressions[270] = BinaryenConst(the_module, BinaryenLiteralInt64(32)); | |
expressions[271] = BinaryenGetLocal(the_module, 10, 2); | |
expressions[272] = BinaryenBinary(the_module, 36, expressions[271], expressions[270]); | |
expressions[273] = BinaryenUnary(the_module, 24, expressions[272]); | |
expressions[274] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[275] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[274]); | |
expressions[276] = BinaryenConst(the_module, BinaryenLiteralInt32(64)); | |
expressions[277] = BinaryenBinary(the_module, 1, expressions[275], expressions[276]); | |
expressions[278] = BinaryenTeeLocal(the_module, 6, expressions[277]); | |
expressions[279] = BinaryenStore(the_module, 4, 0, 0, expressions[274], expressions[278], 1); | |
expressions[280] = BinaryenGetLocal(the_module, 6, 1); | |
expressions[281] = BinaryenStore(the_module, 4, 0, 0, expressions[280], expressions[269], 1); | |
expressions[282] = BinaryenStore(the_module, 4, 4, 0, expressions[280], expressions[273], 1); | |
{ | |
BinaryenExpressionRef children[] = { expressions[255], expressions[257], expressions[259], expressions[261], expressions[267], expressions[279], expressions[281], expressions[282] }; | |
expressions[283] = BinaryenBlock(the_module, "bb0", children, 8); | |
} | |
relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[283]); | |
expressions[284] = BinaryenGetLocal(the_module, 6, 1); | |
expressions[285] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[284]); | |
expressions[286] = BinaryenSetLocal(the_module, 7, expressions[285]); | |
expressions[287] = BinaryenGetLocal(the_module, 8, 1); | |
expressions[288] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[289] = BinaryenStore(the_module, 4, 0, 0, expressions[288], expressions[287], 1); | |
expressions[290] = BinaryenGetLocal(the_module, 7, 1); | |
expressions[291] = BinaryenReturn(the_module, expressions[290]); | |
{ | |
BinaryenExpressionRef children[] = { expressions[286], expressions[289], expressions[291] }; | |
expressions[292] = BinaryenBlock(the_module, "bb1", children, 3); | |
} | |
relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[292]); | |
RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]); | |
{ | |
BinaryenIndex paramTypes[] = { 1, 1 }; | |
functionTypes[6] = BinaryenAddFunctionType(the_module, "rustfn-0-44", 1, paramTypes, 2); | |
} | |
expressions[293] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[294] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[293]); | |
expressions[295] = BinaryenSetLocal(the_module, 8, expressions[294]); | |
relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[295]); | |
RelooperAddBranch(relooperBlocks[2], relooperBlocks[0], expressions[0], expressions[0]); | |
expressions[296] = RelooperRenderAndDispose(the_relooper, relooperBlocks[2], 9, the_module); | |
{ | |
BinaryenType varTypes[] = { 1, 1, 1, 1, 1, 1, 1, 1, 2 }; | |
functions[7] = BinaryenAddFunction(the_module, "_i32_as_Sub_::sub", functionTypes[6], varTypes, 9, expressions[296]); | |
} | |
BinaryenAddExport(the_module, "_i32_as_Sub_::sub", "_i32_as_Sub_::sub"); | |
the_relooper = RelooperCreate(); | |
expressions[297] = BinaryenGetLocal(the_module, 0, 1); | |
expressions[298] = BinaryenSetLocal(the_module, 2, expressions[297]); | |
expressions[299] = BinaryenGetLocal(the_module, 1, 1); | |
expressions[300] = BinaryenSetLocal(the_module, 3, expressions[299]); | |
expressions[301] = BinaryenGetLocal(the_module, 3, 1); | |
expressions[302] = BinaryenSetLocal(the_module, 4, expressions[301]); | |
expressions[303] = BinaryenGetLocal(the_module, 2, 1); | |
expressions[304] = BinaryenGetLocal(the_module, 4, 1); | |
expressions[305] = BinaryenUnary(the_module, 22, expressions[303]); | |
expressions[306] = BinaryenUnary(the_module, 22, expressions[304]); | |
expressions[307] = BinaryenBinary(the_module, 25, expressions[305], expressions[306]); | |
expressions[308] = BinaryenSetLocal(the_module, 8, expressions[307]); | |
expressions[309] = BinaryenGetLocal(the_module, 8, 2); | |
expressions[310] = BinaryenUnary(the_module, 24, expressions[309]); | |
expressions[311] = BinaryenConst(the_module, BinaryenLiteralInt64(32)); | |
expressions[312] = BinaryenGetLocal(the_module, 8, 2); | |
expressions[313] = BinaryenBinary(the_module, 36, expressions[312], expressions[311]); | |
expressions[314] = BinaryenUnary(the_module, 24, expressions[313]); | |
expressions[315] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[316] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[315]); | |
expressions[317] = BinaryenConst(the_module, BinaryenLiteralInt32(64)); | |
expressions[318] = BinaryenBinary(the_module, 1, expressions[316], expressions[317]); | |
expressions[319] = BinaryenTeeLocal(the_module, 5, expressions[318]); | |
expressions[320] = BinaryenStore(the_module, 4, 0, 0, expressions[315], expressions[319], 1); | |
expressions[321] = BinaryenGetLocal(the_module, 5, 1); | |
expressions[322] = BinaryenStore(the_module, 4, 0, 0, expressions[321], expressions[310], 1); | |
expressions[323] = BinaryenStore(the_module, 4, 4, 0, expressions[321], expressions[314], 1); | |
{ | |
BinaryenExpressionRef children[] = { expressions[298], expressions[300], expressions[302], expressions[308], expressions[320], expressions[322], expressions[323] }; | |
expressions[324] = BinaryenBlock(the_module, "bb0", children, 7); | |
} | |
relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[324]); | |
expressions[325] = BinaryenGetLocal(the_module, 5, 1); | |
expressions[326] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[325]); | |
expressions[327] = BinaryenSetLocal(the_module, 2, expressions[326]); | |
expressions[328] = BinaryenGetLocal(the_module, 6, 1); | |
expressions[329] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[330] = BinaryenStore(the_module, 4, 0, 0, expressions[329], expressions[328], 1); | |
expressions[331] = BinaryenReturn(the_module, expressions[0]); | |
{ | |
BinaryenExpressionRef children[] = { expressions[327], expressions[330], expressions[331] }; | |
expressions[332] = BinaryenBlock(the_module, "bb1", children, 3); | |
} | |
relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[332]); | |
RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]); | |
{ | |
BinaryenIndex paramTypes[] = { 1, 1 }; | |
functionTypes[7] = BinaryenAddFunctionType(the_module, "rustfn-0-53", 0, paramTypes, 2); | |
} | |
expressions[333] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
expressions[334] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[333]); | |
expressions[335] = BinaryenSetLocal(the_module, 6, expressions[334]); | |
relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[335]); | |
RelooperAddBranch(relooperBlocks[2], relooperBlocks[0], expressions[0], expressions[0]); | |
expressions[336] = RelooperRenderAndDispose(the_relooper, relooperBlocks[2], 7, the_module); | |
{ | |
BinaryenType varTypes[] = { 1, 1, 1, 1, 1, 1, 2 }; | |
functions[8] = BinaryenAddFunction(the_module, "_i32_as_AddAssign_::add_assign", functionTypes[7], varTypes, 7, expressions[336]); | |
} | |
BinaryenAddExport(the_module, "_i32_as_AddAssign_::add_assign", "_i32_as_AddAssign_::add_assign"); | |
BinaryenModuleValidate(the_module); | |
BinaryenModuleDispose(the_module); | |
functionTypes.clear(); | |
expressions.clear(); | |
functions.clear(); | |
relooperBlocks.clear(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment