[fix] physx wasm remove new function (#371)

This commit is contained in:
Ling Zhan 2023-06-27 09:35:19 +08:00 committed by GitHub
parent 7dfba29388
commit d47e2cb22c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 1538178 additions and 1190970 deletions

File diff suppressed because one or more lines are too long

View File

@ -575,8 +575,8 @@ var wasmMemory;
// In the wasm backend, we polyfill the WebAssembly object, // In the wasm backend, we polyfill the WebAssembly object,
// so this creates a (non-native-wasm) table for us. // so this creates a (non-native-wasm) table for us.
var wasmTable = new WebAssembly.Table({ var wasmTable = new WebAssembly.Table({
'initial': 5437, 'initial': 5439,
'maximum': 5437 + 0, 'maximum': 5439 + 0,
'element': 'anyfunc' 'element': 'anyfunc'
}); });
@ -1198,11 +1198,11 @@ function updateGlobalBufferAndViews(buf) {
} }
var STATIC_BASE = 1024, var STATIC_BASE = 1024,
STACK_BASE = 5608208, STACK_BASE = 5618720,
STACKTOP = STACK_BASE, STACKTOP = STACK_BASE,
STACK_MAX = 365328, STACK_MAX = 375840,
DYNAMIC_BASE = 5608208, DYNAMIC_BASE = 5618720,
DYNAMICTOP_PTR = 365168; DYNAMICTOP_PTR = 375680;
@ -1678,7 +1678,7 @@ var ASM_CONSTS = {
// STATICTOP = STATIC_BASE + 364304; // STATICTOP = STATIC_BASE + 374816;
/* global initializers */ __ATINIT__.push({ func: function() { ___wasm_call_ctors() } }); /* global initializers */ __ATINIT__.push({ func: function() { ___wasm_call_ctors() } });
@ -1751,14 +1751,10 @@ var ASM_CONSTS = {
} }
}function createNamedFunction(name, body) { }function createNamedFunction(name, body) {
name = makeLegalFunctionName(name); name = makeLegalFunctionName(name);
/*jshint evil:true*/ return function() {
return new Function( "use strict";
"body", return body.apply(this, arguments);
"return function " + name + "() {\n" + };
" \"use strict\";" +
" return body.apply(this, arguments);\n" +
"};\n"
)(body);
} }
@ -2763,17 +2759,14 @@ var ASM_CONSTS = {
signature = readLatin1String(signature); signature = readLatin1String(signature);
function makeDynCaller(dynCall) { function makeDynCaller(dynCall) {
var args = []; var argCache = [rawFunction];
for (var i = 1; i < signature.length; ++i) { return function() {
args.push('a' + i); argCache.length = arguments.length + 1;
} for (var i = 0; i < arguments.length; i++) {
argCache[i + 1] = arguments[i];
var name = 'dynCall_' + signature + '_' + rawFunction; }
var body = 'return function ' + name + '(' + args.join(', ') + ') {\n'; return dynCall.apply(null, argCache);
body += ' return dynCall(rawFunction' + (args.length ? ', ' : '') + args.join(', ') + ');\n'; };
body += '};\n';
return (new Function('dynCall', 'rawFunction', body))(dynCall, rawFunction);
} }
var dc = Module['dynCall_' + signature]; var dc = Module['dynCall_' + signature];
@ -2921,6 +2914,9 @@ var ASM_CONSTS = {
if (!(constructor instanceof Function)) { if (!(constructor instanceof Function)) {
throw new TypeError('new_ called with constructor type ' + typeof(constructor) + " which is not a function"); throw new TypeError('new_ called with constructor type ' + typeof(constructor) + " which is not a function");
} }
if (constructor === Function) {
throw new Error('new_ cannot create a new Function with DYNAMIC_EXECUTION == 0.');
}
/* /*
* Previously, the following line was just: * Previously, the following line was just:
@ -2975,71 +2971,47 @@ var ASM_CONSTS = {
var returns = (argTypes[0].name !== "void"); var returns = (argTypes[0].name !== "void");
var argsList = ""; var expectedArgCount = argCount - 2;
var argsListWired = ""; var argsWired = new Array(expectedArgCount);
for(var i = 0; i < argCount - 2; ++i) { var invokerFuncArgs = [];
argsList += (i!==0?", ":"")+"arg"+i; var destructors = [];
argsListWired += (i!==0?", ":"")+"arg"+i+"Wired"; return function() {
} if (arguments.length !== expectedArgCount) {
throwBindingError('function ' + humanName + ' called with ' +
arguments.length + ' arguments, expected ' + expectedArgCount +
' args!');
}
destructors.length = 0;
var thisWired;
invokerFuncArgs.length = isClassMethodFunc ? 2 : 1;
invokerFuncArgs[0] = cppTargetFunc;
if (isClassMethodFunc) {
thisWired = argTypes[1].toWireType(destructors, this);
invokerFuncArgs[1] = thisWired;
}
for (var i = 0; i < expectedArgCount; ++i) {
argsWired[i] = argTypes[i + 2].toWireType(destructors, arguments[i]);
invokerFuncArgs.push(argsWired[i]);
}
var invokerFnBody = var rv = cppInvokerFunc.apply(null, invokerFuncArgs);
"return function "+makeLegalFunctionName(humanName)+"("+argsList+") {\n" +
"if (arguments.length !== "+(argCount - 2)+") {\n" +
"throwBindingError('function "+humanName+" called with ' + arguments.length + ' arguments, expected "+(argCount - 2)+" args!');\n" +
"}\n";
if (needsDestructorStack) {
if (needsDestructorStack) { runDestructors(destructors);
invokerFnBody += } else {
"var destructors = [];\n"; for (var i = isClassMethodFunc ? 1 : 2; i < argTypes.length; i++) {
} var param = i === 1 ? thisWired : argsWired[i - 2];
if (argTypes[i].destructorFunction !== null) {
var dtorStack = needsDestructorStack ? "destructors" : "null"; argTypes[i].destructorFunction(param);
var args1 = ["throwBindingError", "invoker", "fn", "runDestructors", "retType", "classParam"]; }
var args2 = [throwBindingError, cppInvokerFunc, cppTargetFunc, runDestructors, argTypes[0], argTypes[1]];
if (isClassMethodFunc) {
invokerFnBody += "var thisWired = classParam.toWireType("+dtorStack+", this);\n";
}
for(var i = 0; i < argCount - 2; ++i) {
invokerFnBody += "var arg"+i+"Wired = argType"+i+".toWireType("+dtorStack+", arg"+i+"); // "+argTypes[i+2].name+"\n";
args1.push("argType"+i);
args2.push(argTypes[i+2]);
}
if (isClassMethodFunc) {
argsListWired = "thisWired" + (argsListWired.length > 0 ? ", " : "") + argsListWired;
}
invokerFnBody +=
(returns?"var rv = ":"") + "invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";
if (needsDestructorStack) {
invokerFnBody += "runDestructors(destructors);\n";
} else {
for(var i = isClassMethodFunc?1:2; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. Also skip class type if not a method.
var paramName = (i === 1 ? "thisWired" : ("arg"+(i - 2)+"Wired"));
if (argTypes[i].destructorFunction !== null) {
invokerFnBody += paramName+"_dtor("+paramName+"); // "+argTypes[i].name+"\n";
args1.push(paramName+"_dtor");
args2.push(argTypes[i].destructorFunction);
}
} }
} }
if (returns) {
invokerFnBody += "var ret = retType.fromWireType(rv);\n" +
"return ret;\n";
} else {
}
invokerFnBody += "}\n";
args1.push(invokerFnBody); if (returns) {
return argTypes[0].fromWireType(rv);
var invokerFunction = new_(Function, args1).apply(null, args2); }
return invokerFunction; };
} }
function heap32VectorToArray(count, firstElement) { function heap32VectorToArray(count, firstElement) {
@ -3811,45 +3783,23 @@ var ASM_CONSTS = {
var types = __emval_lookupTypes(argCount, argTypes); var types = __emval_lookupTypes(argCount, argTypes);
var retType = types[0]; var retType = types[0];
var signatureName = retType.name + "_$" + types.slice(1).map(function (t) { return t.name; }).join("_") + "$"; var argN = new Array(argCount - 1);
var invokerFunction = function(handle, name, destructors, args) {
var params = ["retType"]; var offset = 0;
var args = [retType]; for (var i = 0; i < argCount - 1; ++i) {
argN[i] = types[i + 1].readValueFromPointer(args + offset);
var argsList = ""; // 'arg0, arg1, arg2, ... , argN' offset += types[i + 1].argPackAdvance;
for (var i = 0; i < argCount - 1; ++i) { }
argsList += (i !== 0 ? ", " : "") + "arg" + i; var rv = handle[name].apply(handle, argN);
params.push("argType" + i); for (var i = 0; i < argCount - 1; ++i) {
args.push(types[1 + i]); if (types[i + 1].deleteObject) {
} types[i + 1].deleteObject(argN[i]);
var functionName = makeLegalFunctionName("methodCaller_" + signatureName);
var functionBody =
"return function " + functionName + "(handle, name, destructors, args) {\n";
var offset = 0;
for (var i = 0; i < argCount - 1; ++i) {
functionBody +=
" var arg" + i + " = argType" + i + ".readValueFromPointer(args" + (offset ? ("+"+offset) : "") + ");\n";
offset += types[i + 1]['argPackAdvance'];
}
functionBody +=
" var rv = handle[name](" + argsList + ");\n";
for (var i = 0; i < argCount - 1; ++i) {
if (types[i + 1]['deleteObject']) {
functionBody +=
" argType" + i + ".deleteObject(arg" + i + ");\n";
} }
} }
if (!retType.isVoid) { if (!retType.isVoid) {
functionBody += return retType.toWireType(destructors, rv);
" return retType.toWireType(destructors, rv);\n"; }
} };
functionBody +=
"};\n";
params.push(functionBody);
var invokerFunction = new_(Function, params).apply(null, args);
return __emval_addMethodCaller(invokerFunction); return __emval_addMethodCaller(invokerFunction);
} }
@ -3903,7 +3853,7 @@ var ASM_CONSTS = {
} }
function _emscripten_get_sbrk_ptr() { function _emscripten_get_sbrk_ptr() {
return 365168; return 375680;
} }
function _emscripten_memcpy_big(dest, src, num) { function _emscripten_memcpy_big(dest, src, num) {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long