Last active
October 5, 2016 06:14
-
-
Save lqd/3d0b757faffca078255f5bb8dc797d86 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; | |
| { | |
| const char* segments[] = { 0 }; | |
| BinaryenExpressionRef segmentOffsets[] = { 0 }; | |
| BinaryenIndex segmentSizes[] = { 0 }; | |
| BinaryenSetMemory(the_module, 256, 256, "memory", segments, segmentOffsets, segmentSizes, 0); | |
| } | |
| the_relooper = RelooperCreate(); | |
| expressions[0] = BinaryenGetLocal(the_module, 0, 1); | |
| expressions[1] = BinaryenTeeLocal(the_module, 2, expressions[0]); | |
| expressions[2] = BinaryenDrop(the_module, expressions[1]); | |
| expressions[3] = BinaryenGetLocal(the_module, 1, 1); | |
| expressions[4] = BinaryenTeeLocal(the_module, 3, expressions[3]); | |
| expressions[5] = BinaryenDrop(the_module, expressions[4]); | |
| expressions[6] = BinaryenGetLocal(the_module, 2, 1); | |
| expressions[7] = BinaryenTeeLocal(the_module, 4, expressions[6]); | |
| expressions[8] = BinaryenDrop(the_module, expressions[7]); | |
| expressions[9] = BinaryenGetLocal(the_module, 3, 1); | |
| expressions[10] = BinaryenTeeLocal(the_module, 5, expressions[9]); | |
| expressions[11] = BinaryenDrop(the_module, expressions[10]); | |
| expressions[12] = BinaryenGetLocal(the_module, 4, 1); | |
| expressions[13] = BinaryenGetLocal(the_module, 5, 1); | |
| expressions[14] = BinaryenUnary(the_module, 22, expressions[12]); | |
| expressions[15] = BinaryenUnary(the_module, 22, expressions[13]); | |
| expressions[16] = BinaryenBinary(the_module, 25, expressions[14], expressions[15]); | |
| expressions[17] = BinaryenSetLocal(the_module, 10, expressions[16]); | |
| expressions[18] = BinaryenGetLocal(the_module, 10, 2); | |
| expressions[19] = BinaryenUnary(the_module, 24, expressions[18]); | |
| expressions[20] = BinaryenConst(the_module, BinaryenLiteralInt64(32)); | |
| expressions[21] = BinaryenGetLocal(the_module, 10, 2); | |
| expressions[22] = BinaryenBinary(the_module, 36, expressions[21], expressions[20]); | |
| expressions[23] = BinaryenUnary(the_module, 24, expressions[22]); | |
| expressions[24] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
| expressions[25] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[24]); | |
| expressions[26] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); | |
| expressions[27] = BinaryenBinary(the_module, 1, expressions[25], expressions[26]); | |
| expressions[28] = BinaryenTeeLocal(the_module, 6, expressions[27]); | |
| expressions[29] = BinaryenStore(the_module, 4, 0, 0, expressions[24], expressions[28], 1); | |
| expressions[30] = BinaryenGetLocal(the_module, 6, 1); | |
| expressions[31] = BinaryenStore(the_module, 4, 0, 0, expressions[30], expressions[19], 1); | |
| expressions[32] = BinaryenStore(the_module, 4, 4, 0, expressions[30], expressions[23], 1); | |
| { | |
| BinaryenExpressionRef children[] = { expressions[2], expressions[5], expressions[8], expressions[11], expressions[17], expressions[29], expressions[31], expressions[32] }; | |
| expressions[33] = BinaryenBlock(the_module, "bb0", children, 8); | |
| } | |
| relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[33]); | |
| expressions[34] = BinaryenGetLocal(the_module, 6, 1); | |
| expressions[35] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[34]); | |
| expressions[36] = BinaryenTeeLocal(the_module, 7, expressions[35]); | |
| expressions[37] = BinaryenDrop(the_module, expressions[36]); | |
| expressions[38] = BinaryenGetLocal(the_module, 8, 1); | |
| expressions[39] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
| expressions[40] = BinaryenStore(the_module, 4, 0, 0, expressions[39], expressions[38], 1); | |
| expressions[41] = BinaryenGetLocal(the_module, 7, 1); | |
| expressions[42] = BinaryenReturn(the_module, expressions[41]); | |
| { | |
| BinaryenExpressionRef children[] = { expressions[37], expressions[40], expressions[42] }; | |
| expressions[43] = BinaryenBlock(the_module, "bb1", children, 3); | |
| } | |
| relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[43]); | |
| RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]); | |
| { | |
| BinaryenIndex paramTypes[] = { 1, 1 }; | |
| functionTypes[0] = BinaryenAddFunctionType(the_module, "rustfn-0-13", 1, paramTypes, 2); | |
| } | |
| expressions[45] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
| expressions[46] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[45]); | |
| expressions[47] = BinaryenSetLocal(the_module, 8, expressions[46]); | |
| relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[47]); | |
| RelooperAddBranch(relooperBlocks[2], relooperBlocks[0], expressions[0], expressions[0]); | |
| expressions[48] = RelooperRenderAndDispose(the_relooper, relooperBlocks[2], 9, the_module); | |
| { | |
| BinaryenType varTypes[] = { 1, 1, 1, 1, 1, 1, 1, 1, 2 }; | |
| functions[0] = BinaryenAddFunction(the_module, "_isize_as_Add_::add", functionTypes[0], varTypes, 9, expressions[48]); | |
| } | |
| BinaryenAddExport(the_module, "_isize_as_Add_::add", "_isize_as_Add_::add"); | |
| the_relooper = RelooperCreate(); | |
| { | |
| BinaryenExpressionRef children[] = { 0 }; | |
| expressions[49] = BinaryenBlock(the_module, "bb0", children, 0); | |
| } | |
| relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[49]); | |
| expressions[50] = BinaryenGetLocal(the_module, 0, 1); | |
| expressions[51] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
| expressions[52] = BinaryenStore(the_module, 4, 0, 0, expressions[51], expressions[50], 1); | |
| expressions[53] = BinaryenGetLocal(the_module, 0, 1); | |
| expressions[54] = BinaryenReturn(the_module, expressions[53]); | |
| { | |
| BinaryenExpressionRef children[] = { expressions[52], expressions[54] }; | |
| expressions[55] = BinaryenBlock(the_module, "bb1", children, 2); | |
| } | |
| relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[55]); | |
| RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]); | |
| { | |
| BinaryenIndex paramTypes[] = { 0 }; | |
| functionTypes[1] = BinaryenAddFunctionType(the_module, "rustfn-0-25", 0, paramTypes, 0); | |
| } | |
| expressions[56] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
| expressions[57] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[56]); | |
| expressions[58] = BinaryenSetLocal(the_module, 0, expressions[57]); | |
| relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[58]); | |
| RelooperAddBranch(relooperBlocks[2], relooperBlocks[0], expressions[0], expressions[0]); | |
| expressions[59] = RelooperRenderAndDispose(the_relooper, relooperBlocks[2], 1, the_module); | |
| { | |
| BinaryenType varTypes[] = { 1, 1, 2 }; | |
| functions[1] = BinaryenAddFunction(the_module, "eh_personality", functionTypes[1], varTypes, 3, expressions[59]); | |
| } | |
| BinaryenAddExport(the_module, "eh_personality", "eh_personality"); | |
| the_relooper = RelooperCreate(); | |
| { | |
| BinaryenExpressionRef children[] = { 0 }; | |
| expressions[60] = BinaryenBlock(the_module, "bb0", children, 0); | |
| } | |
| relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[60]); | |
| expressions[61] = BinaryenGetLocal(the_module, 0, 1); | |
| expressions[62] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
| expressions[63] = BinaryenStore(the_module, 4, 0, 0, expressions[62], expressions[61], 1); | |
| expressions[64] = BinaryenGetLocal(the_module, 0, 1); | |
| expressions[65] = BinaryenReturn(the_module, expressions[64]); | |
| { | |
| BinaryenExpressionRef children[] = { expressions[63], expressions[65] }; | |
| expressions[66] = BinaryenBlock(the_module, "bb1", children, 2); | |
| } | |
| relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[66]); | |
| RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]); | |
| expressions[67] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
| expressions[68] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[67]); | |
| expressions[69] = BinaryenSetLocal(the_module, 0, expressions[68]); | |
| relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[69]); | |
| RelooperAddBranch(relooperBlocks[2], relooperBlocks[0], expressions[0], expressions[0]); | |
| expressions[70] = RelooperRenderAndDispose(the_relooper, relooperBlocks[2], 1, the_module); | |
| { | |
| BinaryenType varTypes[] = { 1, 1, 2 }; | |
| functions[2] = BinaryenAddFunction(the_module, "eh_unwind_resume", functionTypes[1], varTypes, 3, expressions[70]); | |
| } | |
| BinaryenAddExport(the_module, "eh_unwind_resume", "eh_unwind_resume"); | |
| the_relooper = RelooperCreate(); | |
| { | |
| BinaryenExpressionRef children[] = { 0 }; | |
| expressions[71] = BinaryenBlock(the_module, "bb0", children, 0); | |
| } | |
| relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[71]); | |
| { | |
| BinaryenExpressionRef children[] = { 0 }; | |
| expressions[72] = BinaryenBlock(the_module, "bb1", children, 0); | |
| } | |
| relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[72]); | |
| RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]); | |
| RelooperAddBranch(relooperBlocks[1], relooperBlocks[1], expressions[0], expressions[0]); | |
| { | |
| BinaryenIndex paramTypes[] = { 0 }; | |
| functionTypes[2] = BinaryenAddFunctionType(the_module, "rustfn-0-27", 1, paramTypes, 0); | |
| } | |
| expressions[73] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
| expressions[74] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[73]); | |
| expressions[75] = BinaryenSetLocal(the_module, 3, expressions[74]); | |
| relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[75]); | |
| RelooperAddBranch(relooperBlocks[2], relooperBlocks[0], expressions[0], expressions[0]); | |
| expressions[76] = RelooperRenderAndDispose(the_relooper, relooperBlocks[2], 4, the_module); | |
| { | |
| BinaryenType varTypes[] = { 1, 1, 1, 1, 1, 2 }; | |
| functions[3] = BinaryenAddFunction(the_module, "panic_fmt", functionTypes[2], varTypes, 6, expressions[76]); | |
| } | |
| BinaryenAddExport(the_module, "panic_fmt", "panic_fmt"); | |
| the_relooper = RelooperCreate(); | |
| { | |
| BinaryenExpressionRef children[] = { 0 }; | |
| expressions[77] = BinaryenBlock(the_module, "bb0", children, 0); | |
| } | |
| relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[77]); | |
| expressions[78] = BinaryenGetLocal(the_module, 0, 1); | |
| expressions[79] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
| expressions[80] = BinaryenStore(the_module, 4, 0, 0, expressions[79], expressions[78], 1); | |
| expressions[81] = BinaryenGetLocal(the_module, 0, 1); | |
| expressions[82] = BinaryenReturn(the_module, expressions[81]); | |
| { | |
| BinaryenExpressionRef children[] = { expressions[80], expressions[82] }; | |
| expressions[83] = BinaryenBlock(the_module, "bb1", children, 2); | |
| } | |
| relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[83]); | |
| RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]); | |
| expressions[84] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
| expressions[85] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[84]); | |
| expressions[86] = BinaryenSetLocal(the_module, 0, expressions[85]); | |
| relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[86]); | |
| RelooperAddBranch(relooperBlocks[2], relooperBlocks[0], expressions[0], expressions[0]); | |
| expressions[87] = RelooperRenderAndDispose(the_relooper, relooperBlocks[2], 1, the_module); | |
| { | |
| BinaryenType varTypes[] = { 1, 1, 2 }; | |
| functions[4] = BinaryenAddFunction(the_module, "rust_eh_register_frames", functionTypes[1], varTypes, 3, expressions[87]); | |
| } | |
| BinaryenAddExport(the_module, "rust_eh_register_frames", "rust_eh_register_frames"); | |
| the_relooper = RelooperCreate(); | |
| { | |
| BinaryenExpressionRef children[] = { 0 }; | |
| expressions[88] = BinaryenBlock(the_module, "bb0", children, 0); | |
| } | |
| relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[88]); | |
| expressions[89] = BinaryenGetLocal(the_module, 0, 1); | |
| expressions[90] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
| expressions[91] = BinaryenStore(the_module, 4, 0, 0, expressions[90], expressions[89], 1); | |
| expressions[92] = BinaryenGetLocal(the_module, 0, 1); | |
| expressions[93] = BinaryenReturn(the_module, expressions[92]); | |
| { | |
| BinaryenExpressionRef children[] = { expressions[91], expressions[93] }; | |
| expressions[94] = BinaryenBlock(the_module, "bb1", children, 2); | |
| } | |
| relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[94]); | |
| RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]); | |
| expressions[95] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
| expressions[96] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[95]); | |
| expressions[97] = BinaryenSetLocal(the_module, 0, expressions[96]); | |
| relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[97]); | |
| RelooperAddBranch(relooperBlocks[2], relooperBlocks[0], expressions[0], expressions[0]); | |
| expressions[98] = RelooperRenderAndDispose(the_relooper, relooperBlocks[2], 1, the_module); | |
| { | |
| BinaryenType varTypes[] = { 1, 1, 2 }; | |
| functions[5] = BinaryenAddFunction(the_module, "rust_eh_unregister_frames", functionTypes[1], varTypes, 3, expressions[98]); | |
| } | |
| BinaryenAddExport(the_module, "rust_eh_unregister_frames", "rust_eh_unregister_frames"); | |
| the_relooper = RelooperCreate(); | |
| expressions[99] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); | |
| expressions[100] = BinaryenTeeLocal(the_module, 0, expressions[99]); | |
| expressions[101] = BinaryenDrop(the_module, expressions[100]); | |
| expressions[102] = BinaryenGetLocal(the_module, 0, 1); | |
| expressions[103] = BinaryenTeeLocal(the_module, 2, expressions[102]); | |
| expressions[104] = BinaryenDrop(the_module, expressions[103]); | |
| expressions[105] = BinaryenGetLocal(the_module, 2, 1); | |
| expressions[106] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); | |
| expressions[107] = BinaryenUnary(the_module, 22, expressions[105]); | |
| expressions[108] = BinaryenUnary(the_module, 22, expressions[106]); | |
| expressions[109] = BinaryenBinary(the_module, 25, expressions[107], expressions[108]); | |
| expressions[110] = BinaryenSetLocal(the_module, 8, expressions[109]); | |
| expressions[111] = BinaryenGetLocal(the_module, 8, 2); | |
| expressions[112] = BinaryenUnary(the_module, 24, expressions[111]); | |
| expressions[113] = BinaryenConst(the_module, BinaryenLiteralInt64(32)); | |
| expressions[114] = BinaryenGetLocal(the_module, 8, 2); | |
| expressions[115] = BinaryenBinary(the_module, 36, expressions[114], expressions[113]); | |
| expressions[116] = BinaryenUnary(the_module, 24, expressions[115]); | |
| expressions[117] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
| expressions[118] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[117]); | |
| expressions[119] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); | |
| expressions[120] = BinaryenBinary(the_module, 1, expressions[118], expressions[119]); | |
| expressions[121] = BinaryenTeeLocal(the_module, 3, expressions[120]); | |
| expressions[122] = BinaryenStore(the_module, 4, 0, 0, expressions[117], expressions[121], 1); | |
| expressions[123] = BinaryenGetLocal(the_module, 3, 1); | |
| expressions[124] = BinaryenStore(the_module, 4, 0, 0, expressions[123], expressions[112], 1); | |
| expressions[125] = BinaryenStore(the_module, 4, 4, 0, expressions[123], expressions[116], 1); | |
| { | |
| BinaryenExpressionRef children[] = { expressions[101], expressions[104], expressions[110], expressions[122], expressions[124], expressions[125] }; | |
| expressions[126] = BinaryenBlock(the_module, "bb0", children, 6); | |
| } | |
| relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[126]); | |
| expressions[127] = BinaryenGetLocal(the_module, 3, 1); | |
| expressions[128] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[127]); | |
| expressions[129] = BinaryenTeeLocal(the_module, 1, expressions[128]); | |
| expressions[130] = BinaryenDrop(the_module, expressions[129]); | |
| expressions[131] = BinaryenGetLocal(the_module, 1, 1); | |
| expressions[132] = BinaryenTeeLocal(the_module, 4, expressions[131]); | |
| expressions[133] = BinaryenDrop(the_module, expressions[132]); | |
| expressions[134] = BinaryenGetLocal(the_module, 4, 1); | |
| expressions[135] = BinaryenTeeLocal(the_module, 5, expressions[134]); | |
| expressions[136] = BinaryenDrop(the_module, expressions[135]); | |
| expressions[137] = BinaryenGetLocal(the_module, 6, 1); | |
| expressions[138] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
| expressions[139] = BinaryenStore(the_module, 4, 0, 0, expressions[138], expressions[137], 1); | |
| expressions[140] = BinaryenGetLocal(the_module, 5, 1); | |
| expressions[141] = BinaryenReturn(the_module, expressions[140]); | |
| { | |
| BinaryenExpressionRef children[] = { expressions[130], expressions[133], expressions[136], expressions[139], expressions[141] }; | |
| expressions[142] = BinaryenBlock(the_module, "bb1", children, 5); | |
| } | |
| relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[142]); | |
| RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]); | |
| { | |
| BinaryenIndex paramTypes[] = { 0 }; | |
| functionTypes[3] = BinaryenAddFunctionType(the_module, "rustfn-0-30", 1, paramTypes, 0); | |
| } | |
| expressions[143] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
| expressions[144] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[143]); | |
| expressions[145] = BinaryenSetLocal(the_module, 6, expressions[144]); | |
| relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[145]); | |
| RelooperAddBranch(relooperBlocks[2], relooperBlocks[0], expressions[0], expressions[0]); | |
| expressions[146] = RelooperRenderAndDispose(the_relooper, relooperBlocks[2], 7, the_module); | |
| { | |
| BinaryenType varTypes[] = { 1, 1, 1, 1, 1, 1, 1, 1, 2 }; | |
| functions[6] = BinaryenAddFunction(the_module, "real_main", functionTypes[3], varTypes, 9, expressions[146]); | |
| } | |
| BinaryenAddExport(the_module, "real_main", "real_main"); | |
| the_relooper = RelooperCreate(); | |
| expressions[147] = BinaryenGetLocal(the_module, 0, 1); | |
| expressions[148] = BinaryenTeeLocal(the_module, 2, expressions[147]); | |
| expressions[149] = BinaryenDrop(the_module, expressions[148]); | |
| { | |
| BinaryenExpressionRef operands[] = { 0 }; | |
| expressions[150] = BinaryenCall(the_module, "real_main", operands, 0, 1); | |
| } | |
| expressions[151] = BinaryenSetLocal(the_module, 4, expressions[150]); | |
| { | |
| BinaryenExpressionRef children[] = { expressions[149], expressions[151] }; | |
| expressions[152] = BinaryenBlock(the_module, "bb0", children, 2); | |
| } | |
| relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[152]); | |
| expressions[153] = BinaryenGetLocal(the_module, 4, 1); | |
| expressions[154] = BinaryenConst(the_module, BinaryenLiteralInt32(3)); | |
| expressions[155] = BinaryenUnary(the_module, 22, expressions[153]); | |
| expressions[156] = BinaryenUnary(the_module, 22, expressions[154]); | |
| expressions[157] = BinaryenBinary(the_module, 25, expressions[155], expressions[156]); | |
| expressions[158] = BinaryenSetLocal(the_module, 10, expressions[157]); | |
| expressions[159] = BinaryenGetLocal(the_module, 10, 2); | |
| expressions[160] = BinaryenUnary(the_module, 24, expressions[159]); | |
| expressions[161] = BinaryenConst(the_module, BinaryenLiteralInt64(32)); | |
| expressions[162] = BinaryenGetLocal(the_module, 10, 2); | |
| expressions[163] = BinaryenBinary(the_module, 36, expressions[162], expressions[161]); | |
| expressions[164] = BinaryenUnary(the_module, 24, expressions[163]); | |
| expressions[165] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
| expressions[166] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[165]); | |
| expressions[167] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); | |
| expressions[168] = BinaryenBinary(the_module, 1, expressions[166], expressions[167]); | |
| expressions[169] = BinaryenTeeLocal(the_module, 5, expressions[168]); | |
| expressions[170] = BinaryenStore(the_module, 4, 0, 0, expressions[165], expressions[169], 1); | |
| expressions[171] = BinaryenGetLocal(the_module, 5, 1); | |
| expressions[172] = BinaryenStore(the_module, 4, 0, 0, expressions[171], expressions[160], 1); | |
| expressions[173] = BinaryenStore(the_module, 4, 4, 0, expressions[171], expressions[164], 1); | |
| { | |
| BinaryenExpressionRef children[] = { expressions[158], expressions[170], expressions[172], expressions[173] }; | |
| expressions[174] = BinaryenBlock(the_module, "bb1", children, 4); | |
| } | |
| relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[174]); | |
| expressions[175] = BinaryenGetLocal(the_module, 5, 1); | |
| expressions[176] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[175]); | |
| expressions[177] = BinaryenTeeLocal(the_module, 3, expressions[176]); | |
| expressions[178] = BinaryenDrop(the_module, expressions[177]); | |
| expressions[179] = BinaryenGetLocal(the_module, 3, 1); | |
| expressions[180] = BinaryenTeeLocal(the_module, 6, expressions[179]); | |
| expressions[181] = BinaryenDrop(the_module, expressions[180]); | |
| expressions[182] = BinaryenGetLocal(the_module, 6, 1); | |
| expressions[183] = BinaryenTeeLocal(the_module, 7, expressions[182]); | |
| expressions[184] = BinaryenDrop(the_module, expressions[183]); | |
| expressions[185] = BinaryenGetLocal(the_module, 8, 1); | |
| expressions[186] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
| expressions[187] = BinaryenStore(the_module, 4, 0, 0, expressions[186], expressions[185], 1); | |
| expressions[188] = BinaryenGetLocal(the_module, 7, 1); | |
| expressions[189] = BinaryenReturn(the_module, expressions[188]); | |
| { | |
| BinaryenExpressionRef children[] = { expressions[178], expressions[181], expressions[184], expressions[187], expressions[189] }; | |
| expressions[190] = BinaryenBlock(the_module, "bb2", children, 5); | |
| } | |
| relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[190]); | |
| RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]); | |
| RelooperAddBranch(relooperBlocks[1], relooperBlocks[2], expressions[0], expressions[0]); | |
| { | |
| BinaryenIndex paramTypes[] = { 1, 1 }; | |
| functionTypes[4] = BinaryenAddFunctionType(the_module, "rustfn-0-33", 1, paramTypes, 2); | |
| } | |
| expressions[191] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
| expressions[192] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[191]); | |
| expressions[193] = BinaryenSetLocal(the_module, 8, expressions[192]); | |
| relooperBlocks[3] = RelooperAddBlock(the_relooper, expressions[193]); | |
| RelooperAddBranch(relooperBlocks[3], relooperBlocks[0], expressions[0], expressions[0]); | |
| expressions[194] = RelooperRenderAndDispose(the_relooper, relooperBlocks[3], 9, the_module); | |
| { | |
| BinaryenType varTypes[] = { 1, 1, 1, 1, 1, 1, 1, 1, 2 }; | |
| functions[7] = BinaryenAddFunction(the_module, "main", functionTypes[4], varTypes, 9, expressions[194]); | |
| } | |
| BinaryenAddExport(the_module, "main", "main"); | |
| { | |
| BinaryenIndex paramTypes[] = { 0 }; | |
| functionTypes[5] = BinaryenAddFunctionType(the_module, "__wasm_start", 0, paramTypes, 0); | |
| } | |
| { | |
| const char* segments[] = { 0 }; | |
| BinaryenExpressionRef segmentOffsets[] = { 0 }; | |
| BinaryenIndex segmentSizes[] = { 0 }; | |
| BinaryenSetMemory(the_module, 1, 1, NULL, segments, segmentOffsets, segmentSizes, 0); | |
| } | |
| expressions[195] = BinaryenConst(the_module, BinaryenLiteralInt32(65535)); | |
| expressions[196] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
| expressions[197] = BinaryenStore(the_module, 4, 0, 0, expressions[196], expressions[195], 1); | |
| expressions[198] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
| expressions[199] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); | |
| { | |
| BinaryenExpressionRef operands[] = { expressions[198], expressions[199] }; | |
| expressions[200] = BinaryenCall(the_module, "main", operands, 2, 1); | |
| } | |
| expressions[201] = BinaryenDrop(the_module, expressions[200]); | |
| { | |
| BinaryenExpressionRef children[] = { expressions[197], expressions[201] }; | |
| expressions[202] = BinaryenBlock(the_module, NULL, children, 2); | |
| } | |
| { | |
| BinaryenType varTypes[] = { 0 }; | |
| functions[8] = BinaryenAddFunction(the_module, "__wasm_start", functionTypes[5], varTypes, 0, expressions[202]); | |
| } | |
| BinaryenSetStart(the_module, functions[8]); | |
| BinaryenModuleValidate(the_module); | |
| BinaryenModuleOptimize(the_module); | |
| BinaryenModuleValidate(the_module); | |
| return 0; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment