Created
January 12, 2017 00:33
-
-
Save eholk/098eb194392bb04d80db561fe228c849 to your computer and use it in GitHub Desktop.
This file contains hidden or 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