BabylonJS / Extensions

Extensions for Babylon.js
178 stars 157 forks source link

How to compile recast.js in memory-initializer way #256

Closed liushzhql closed 2 months ago

liushzhql commented 10 months ago

some code in output recast.js file like this:

if (memoryInitializer) {
    if (!isDataURI(memoryInitializer)) {
        memoryInitializer = locateFile(memoryInitializer)
    }
    if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) {
        var data = readBinary(memoryInitializer);
        HEAPU8.set(data, GLOBAL_BASE)
    } else {
        addRunDependency("memory initializer");
        var applyMemoryInitializer = function (data) {
            if (data.byteLength) data = new Uint8Array(data);
            HEAPU8.set(data, GLOBAL_BASE);
            if (Module["memoryInitializerRequest"]) delete Module["memoryInitializerRequest"].response;
            removeRunDependency("memory initializer")
        };
        var doBrowserLoad = function () {
            readAsync(memoryInitializer, applyMemoryInitializer, function () {
                throw "could not load memory initializer " + memoryInitializer
            })
        };
        var memoryInitializerBytes = tryParseAsDataURI(memoryInitializer);
        if (memoryInitializerBytes) {
            applyMemoryInitializer(memoryInitializerBytes.buffer)
        } else if (Module["memoryInitializerRequest"]) {
            var useRequest = function () {
                var request = Module["memoryInitializerRequest"];
                var response = request.response;
                if (request.status !== 200 && request.status !== 0) {
                    var data = tryParseAsDataURI(Module["memoryInitializerRequestURL"]);
                    if (data) {
                        response = data.buffer
                    } else {
                        console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: " + request.status + ", retrying " + memoryInitializer);
                        doBrowserLoad();
                        return
                    }
                }
                applyMemoryInitializer(response)
            };
            if (Module["memoryInitializerRequest"].response) {
                setTimeout(useRequest, 0)
            } else {
                Module["memoryInitializerRequest"].addEventListener("load", useRequest)
            }
        } else {
            doBrowserLoad()
        }
    }
}
CedricGuillemet commented 8 months ago

@liushzhql can you please share more context on this issue? I have no idea what this is about

RaananW commented 2 months ago

Any further information here? Please feel free to reopen if needed.