2525#include " ir/literal-utils.h"
2626#include " ir/module-utils.h"
2727#include " shared-constants.h"
28+ #include " support/debug.h"
2829#include " wasm-builder.h"
2930#include " wasm-traversal.h"
3031#include " wasm.h"
3132
33+ #define DEBUG_TYPE " emscripten"
34+
3235namespace wasm {
3336
3437cashew::IString EM_ASM_PREFIX (" emscripten_asm_const" );
@@ -122,6 +125,7 @@ inline Expression* stackBoundsCheck(Builder& builder,
122125Expression*
123126EmscriptenGlueGenerator::generateStoreStackPointer (Function* func,
124127 Expression* value) {
128+ BYN_TRACE (" generateStoreStackPointer\n " );
125129 if (!useStackPointerGlobal) {
126130 return builder.makeStore (
127131 /* bytes =*/ 4 ,
@@ -147,6 +151,7 @@ EmscriptenGlueGenerator::generateStoreStackPointer(Function* func,
147151}
148152
149153void EmscriptenGlueGenerator::generateStackSaveFunction () {
154+ BYN_TRACE (" generateStackSaveFunction\n " );
150155 std::vector<NameType> params{};
151156 Function* function =
152157 builder.makeFunction (STACK_SAVE, std::move (params), i32 , {});
@@ -157,6 +162,7 @@ void EmscriptenGlueGenerator::generateStackSaveFunction() {
157162}
158163
159164void EmscriptenGlueGenerator::generateStackAllocFunction () {
165+ BYN_TRACE (" generateStackAllocFunction\n " );
160166 std::vector<NameType> params{{" 0" , i32 }};
161167 Function* function =
162168 builder.makeFunction (STACK_ALLOC, std::move (params), i32 , {{" 1" , i32 }});
@@ -181,6 +187,7 @@ void EmscriptenGlueGenerator::generateStackAllocFunction() {
181187}
182188
183189void EmscriptenGlueGenerator::generateStackRestoreFunction () {
190+ BYN_TRACE (" generateStackRestoreFunction\n " );
184191 std::vector<NameType> params{{" 0" , i32 }};
185192 Function* function =
186193 builder.makeFunction (STACK_RESTORE, std::move (params), none, {});
@@ -193,6 +200,7 @@ void EmscriptenGlueGenerator::generateStackRestoreFunction() {
193200}
194201
195202void EmscriptenGlueGenerator::generateRuntimeFunctions () {
203+ BYN_TRACE (" generateRuntimeFunctions\n " );
196204 generateStackSaveFunction ();
197205 generateStackAllocFunction ();
198206 generateStackRestoreFunction ();
@@ -229,6 +237,7 @@ ensureFunctionImport(Module* module, Name name, std::string sig) {
229237// Here we internalize all such wasm globals and generte code that sets their
230238// value based on the result of call `g$foo` and `fp$bar` functions at runtime.
231239Function* EmscriptenGlueGenerator::generateAssignGOTEntriesFunction () {
240+ BYN_TRACE (" generateAssignGOTEntriesFunction\n " );
232241 std::vector<Global*> gotFuncEntries;
233242 std::vector<Global*> gotMemEntries;
234243 for (auto & g : wasm.globals ) {
@@ -307,6 +316,7 @@ Function* EmscriptenGlueGenerator::generateAssignGOTEntriesFunction() {
307316// The later is the constructor function generaed by lld which performs any
308317// fixups on the memory section and calls static constructors.
309318void EmscriptenGlueGenerator::generatePostInstantiateFunction () {
319+ BYN_TRACE (" generatePostInstantiateFunction\n " );
310320 Builder builder (wasm);
311321 Function* post_instantiate =
312322 builder.makeFunction (POST_INSTANTIATE, std::vector<NameType>{}, none, {});
@@ -1039,6 +1049,7 @@ struct FixInvokeFunctionNamesWalker
10391049 }
10401050
10411051 assert (importRenames.count (curr->name ) == 0 );
1052+ BYN_TRACE (" renaming: " << curr->name << " -> " << newname << " \n " );
10421053 importRenames[curr->name ] = newname;
10431054 // Either rename or remove the existing import
10441055 if (wasm.getFunctionOrNull (newname) || !newImports.insert (newname).second ) {
@@ -1065,8 +1076,10 @@ struct FixInvokeFunctionNamesWalker
10651076};
10661077
10671078void EmscriptenGlueGenerator::fixInvokeFunctionNames () {
1079+ BYN_TRACE (" fixInvokeFunctionNames\n " );
10681080 FixInvokeFunctionNamesWalker walker (wasm);
10691081 walker.walkModule (&wasm);
1082+ BYN_TRACE (" generating dyncall thunks\n " );
10701083 for (auto sig : walker.invokeSigs ) {
10711084 generateDynCallThunk (sig);
10721085 }
@@ -1275,12 +1288,15 @@ void EmscriptenGlueGenerator::exportWasiStart() {
12751288 // If main exists, export a function to call it per the wasi standard.
12761289 Name main = " main" ;
12771290 if (!wasm.getFunctionOrNull (main)) {
1291+ BYN_TRACE (" exportWasiStart: main not found\n " );
12781292 return ;
12791293 }
12801294 Name _start = " _start" ;
12811295 if (wasm.getExportOrNull (_start)) {
1296+ BYN_TRACE (" exportWasiStart: _start already present\n " );
12821297 return ;
12831298 }
1299+ BYN_TRACE (" exportWasiStart\n " );
12841300 Builder builder (wasm);
12851301 auto * body = builder.makeDrop (builder.makeCall (
12861302 main,
0 commit comments