if (!(!Math.fround)) { var script = document.createElement('script'); script.src = "Release/WEBGL.js"; document.body.appendChild(script); } else { var codeXHR = new XMLHttpRequest(); codeXHR.open('GET', 'Release/WEBGL.js', true); codeXHR.onload = function() { var code = codeXHR.responseText; if (!Math.fround) { try { console.log('optimizing out Math.fround calls'); var m = /var ([^=]+)=global\.Math\.fround;/.exec(code); var minified = m[1]; if (!minified) throw 'fail'; var startAsm = code.indexOf('// EMSCRIPTEN_START_FUNCS'); var endAsm = code.indexOf('// EMSCRIPTEN_END_FUNCS'); var asm = code.substring(startAsm, endAsm); do { var moar = false; // we need to re-do, as x(x( will not be fixed asm = asm.replace(new RegExp('[^a-zA-Z0-9\\$\\_]' + minified + '\\(', 'g'), function(s) { moar = true; return s[0] + '(' }); } while (moar); code = code.substring(0, startAsm) + asm + code.substring(endAsm); code = code.replace("'use asm'", "'almost asm'"); } catch(e) { console.log('failed to optimize out Math.fround calls ' + e) } } var blob = new Blob([code], { type: 'text/javascript' }); codeXHR = null; var src = URL.createObjectURL(blob); var script = document.createElement('script'); script.src = URL.createObjectURL(blob); script.onload = function() { URL.revokeObjectURL(script.src); }; document.body.appendChild(script); }; codeXHR.send(null); }