mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-04-25 23:12:19 +00:00
Update binaryen
This commit is contained in:
parent
330752908a
commit
81844a1fe7
6
package-lock.json
generated
6
package-lock.json
generated
@ -216,9 +216,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"binaryen": {
|
"binaryen": {
|
||||||
"version": "39.0.0-nightly.20171116",
|
"version": "39.0.0-nightly.20171205",
|
||||||
"resolved": "https://registry.npmjs.org/binaryen/-/binaryen-39.0.0-nightly.20171116.tgz",
|
"resolved": "https://registry.npmjs.org/binaryen/-/binaryen-39.0.0-nightly.20171205.tgz",
|
||||||
"integrity": "sha512-ljl/qPne0+8hYtNWITRSAtxNM1EG5NnvTg+HRmSUdNAK2j9wcyAAg5uVj+TgipEqY82kmHt5C9+TSQNEwaxgrw=="
|
"integrity": "sha512-OYyWKbtGCSjfX1mTmwMfTANC+trKmEIOOfAMbqjJzU+qmEFCt942kIn+6+3sNeuehLLuPeXrEOq1JxKnKVdizg=="
|
||||||
},
|
},
|
||||||
"bn.js": {
|
"bn.js": {
|
||||||
"version": "4.11.8",
|
"version": "4.11.8",
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node": "^8.0.54",
|
"@types/node": "^8.0.54",
|
||||||
"binaryen": "39.0.0-nightly.20171116",
|
"binaryen": "39.0.0-nightly.20171205",
|
||||||
"minimist": "^1.2.0",
|
"minimist": "^1.2.0",
|
||||||
"source-map-support": "^0.5.0"
|
"source-map-support": "^0.5.0"
|
||||||
},
|
},
|
||||||
|
@ -352,7 +352,7 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
} else {
|
} else {
|
||||||
this.module.addGlobal(internalName, nativeType, element.isMutable, initializer);
|
this.module.addGlobal(internalName, nativeType, element.isMutable, initializer);
|
||||||
if (!element.isMutable) {
|
if (!element.isMutable) {
|
||||||
// TODO: check export, requires updated binaryen.js with Module#addGlobalExport
|
// TODO: check export
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return element.isCompiled = true;
|
return element.isCompiled = true;
|
||||||
@ -416,7 +416,7 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
if (!instance)
|
if (!instance)
|
||||||
return;
|
return;
|
||||||
if (declaration.range.source.isEntry && declaration.parent == declaration.range.source && hasModifier(ModifierKind.EXPORT, declaration.modifiers))
|
if (declaration.range.source.isEntry && declaration.parent == declaration.range.source && hasModifier(ModifierKind.EXPORT, declaration.modifiers))
|
||||||
this.module.addExport(instance.internalName, declaration.identifier.name);
|
this.module.addFunctionExport(instance.internalName, declaration.identifier.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
compileFunctionUsingTypeArguments(prototype: FunctionPrototype, typeArguments: TypeNode[], contextualTypeArguments: Map<string,Type> | null = null, alternativeReportNode: Node | null = null): Function | null {
|
compileFunctionUsingTypeArguments(prototype: FunctionPrototype, typeArguments: TypeNode[], contextualTypeArguments: Map<string,Type> | null = null, alternativeReportNode: Node | null = null): Function | null {
|
||||||
@ -473,7 +473,7 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
// create the function
|
// create the function
|
||||||
const internalName: string = instance.internalName;
|
const internalName: string = instance.internalName;
|
||||||
if (instance.isDeclare) {
|
if (instance.isDeclare) {
|
||||||
this.module.addImport(internalName, "env", declaration.identifier.name, typeRef);
|
this.module.addFunctionImport(internalName, "env", declaration.identifier.name, typeRef);
|
||||||
} else {
|
} else {
|
||||||
this.module.addFunction(internalName, typeRef, typesToNativeTypes(instance.additionalLocals), this.module.createBlock(null, <ExpressionRef[]>stmts, NativeType.None));
|
this.module.addFunction(internalName, typeRef, typesToNativeTypes(instance.additionalLocals), this.module.createBlock(null, <ExpressionRef[]>stmts, NativeType.None));
|
||||||
}
|
}
|
||||||
@ -577,7 +577,7 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
if (!(<FunctionPrototype>element).isGeneric) {
|
if (!(<FunctionPrototype>element).isGeneric) {
|
||||||
const functionInstance: Function | null = this.compileFunctionUsingTypeArguments(<FunctionPrototype>element, []);
|
const functionInstance: Function | null = this.compileFunctionUsingTypeArguments(<FunctionPrototype>element, []);
|
||||||
if (functionInstance && statement.range.source.isEntry)
|
if (functionInstance && statement.range.source.isEntry)
|
||||||
this.module.addExport(functionInstance.internalName, member.externalIdentifier.name);
|
this.module.addFunctionExport(functionInstance.internalName, member.externalIdentifier.name);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
10
src/glue/binaryen.d.ts
vendored
10
src/glue/binaryen.d.ts
vendored
@ -274,12 +274,18 @@ declare function _BinaryenFunctionRunPasses(func: BinaryenFunctionRef, module: B
|
|||||||
|
|
||||||
declare type BinaryenImportRef = usize;
|
declare type BinaryenImportRef = usize;
|
||||||
|
|
||||||
declare function _BinaryenAddImport(module: BinaryenModuleRef, internalName: CString, externalModuleName: CString, externalBaseName: CString, type: BinaryenFunctionTypeRef): BinaryenImportRef;
|
declare function _BinaryenAddFunctionImport(module: BinaryenModuleRef, internalName: CString, externalModuleName: CString, externalBaseName: CString, functionType: BinaryenFunctionTypeRef): BinaryenImportRef;
|
||||||
|
declare function _BinaryenAddTableImport(module: BinaryenModuleRef, internalName: CString, externalModuleName: CString, externalBaseName: CString): BinaryenImportRef;
|
||||||
|
declare function _BinaryenAddMemoryImport(module: BinaryenModuleRef, internalName: CString, externalModuleName: CString, externalBaseName: CString): BinaryenImportRef;
|
||||||
|
declare function _BinaryenAddGlobalImport(module: BinaryenModuleRef, internalName: CString, externalModuleName: CString, externalBaseName: CString, globalType: BinaryenType): BinaryenImportRef;
|
||||||
declare function _BinaryenRemoveImport(module: BinaryenModuleRef, internalName: CString): void;
|
declare function _BinaryenRemoveImport(module: BinaryenModuleRef, internalName: CString): void;
|
||||||
|
|
||||||
declare type BinaryenExportRef = usize;
|
declare type BinaryenExportRef = usize;
|
||||||
|
|
||||||
declare function _BinaryenAddExport(module: BinaryenModuleRef, internalName: CString, externalName: CString): BinaryenExportRef;
|
declare function _BinaryenAddFunctionExport(module: BinaryenModuleRef, internalName: CString, externalName: CString): BinaryenExportRef;
|
||||||
|
declare function _BinaryenAddTableExport(module: BinaryenModuleRef, internalName: CString, externalName: CString): BinaryenExportRef;
|
||||||
|
declare function _BinaryenAddMemoryExport(module: BinaryenModuleRef, internalName: CString, externalName: CString): BinaryenExportRef;
|
||||||
|
declare function _BinaryenAddGlobalExport(module: BinaryenModuleRef, internalName: CString, externalName: CString): BinaryenExportRef;
|
||||||
declare function _BinaryenRemoveExport(module: BinaryenModuleRef, externalName: CString): void;
|
declare function _BinaryenRemoveExport(module: BinaryenModuleRef, externalName: CString): void;
|
||||||
|
|
||||||
declare type BinaryenGlobalRef = usize;
|
declare type BinaryenGlobalRef = usize;
|
||||||
|
@ -522,12 +522,48 @@ export class Module {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
addExport(internalName: string, externalName: string): ExportRef {
|
addFunctionExport(internalName: string, externalName: string): ExportRef {
|
||||||
if (this.noEmit) return 0;
|
if (this.noEmit) return 0;
|
||||||
const cStr1: CString = allocString(internalName);
|
const cStr1: CString = allocString(internalName);
|
||||||
const cStr2: CString = allocString(externalName);
|
const cStr2: CString = allocString(externalName);
|
||||||
try {
|
try {
|
||||||
return _BinaryenAddExport(this.ref, cStr1, cStr2);
|
return _BinaryenAddFunctionExport(this.ref, cStr1, cStr2);
|
||||||
|
} finally {
|
||||||
|
_free(cStr2);
|
||||||
|
_free(cStr1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
addTableExport(internalName: string, externalName: string): ExportRef {
|
||||||
|
if (this.noEmit) return 0;
|
||||||
|
const cStr1: CString = allocString(internalName);
|
||||||
|
const cStr2: CString = allocString(externalName);
|
||||||
|
try {
|
||||||
|
return _BinaryenAddTableExport(this.ref, cStr1, cStr2);
|
||||||
|
} finally {
|
||||||
|
_free(cStr2);
|
||||||
|
_free(cStr1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
addMemoryExport(internalName: string, externalName: string): ExportRef {
|
||||||
|
if (this.noEmit) return 0;
|
||||||
|
const cStr1: CString = allocString(internalName);
|
||||||
|
const cStr2: CString = allocString(externalName);
|
||||||
|
try {
|
||||||
|
return _BinaryenAddMemoryExport(this.ref, cStr1, cStr2);
|
||||||
|
} finally {
|
||||||
|
_free(cStr2);
|
||||||
|
_free(cStr1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
addGlobalExport(internalName: string, externalName: string): ExportRef {
|
||||||
|
if (this.noEmit) return 0;
|
||||||
|
const cStr1: CString = allocString(internalName);
|
||||||
|
const cStr2: CString = allocString(externalName);
|
||||||
|
try {
|
||||||
|
return _BinaryenAddGlobalExport(this.ref, cStr1, cStr2);
|
||||||
} finally {
|
} finally {
|
||||||
_free(cStr2);
|
_free(cStr2);
|
||||||
_free(cStr1);
|
_free(cStr1);
|
||||||
@ -544,13 +580,55 @@ export class Module {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
addImport(internalName: string, externalModuleName: string, externalBaseName: string, type: FunctionTypeRef): ImportRef {
|
addFunctionImport(internalName: string, externalModuleName: string, externalBaseName: string, functionType: FunctionTypeRef): ImportRef {
|
||||||
if (this.noEmit) return 0;
|
if (this.noEmit) return 0;
|
||||||
const cStr1: CString = allocString(internalName);
|
const cStr1: CString = allocString(internalName);
|
||||||
const cStr2: CString = allocString(externalModuleName);
|
const cStr2: CString = allocString(externalModuleName);
|
||||||
const cStr3: CString = allocString(externalBaseName);
|
const cStr3: CString = allocString(externalBaseName);
|
||||||
try {
|
try {
|
||||||
return _BinaryenAddImport(this.ref, cStr1, cStr2, cStr3, type);
|
return _BinaryenAddFunctionImport(this.ref, cStr1, cStr2, cStr3, functionType);
|
||||||
|
} finally {
|
||||||
|
_free(cStr3);
|
||||||
|
_free(cStr2);
|
||||||
|
_free(cStr1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
addTableImport(internalName: string, externalModuleName: string, externalBaseName: string): ImportRef {
|
||||||
|
if (this.noEmit) return 0;
|
||||||
|
const cStr1: CString = allocString(internalName);
|
||||||
|
const cStr2: CString = allocString(externalModuleName);
|
||||||
|
const cStr3: CString = allocString(externalBaseName);
|
||||||
|
try {
|
||||||
|
return _BinaryenAddTableImport(this.ref, cStr1, cStr2, cStr3);
|
||||||
|
} finally {
|
||||||
|
_free(cStr3);
|
||||||
|
_free(cStr2);
|
||||||
|
_free(cStr1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
addMemoryImport(internalName: string, externalModuleName: string, externalBaseName: string): ImportRef {
|
||||||
|
if (this.noEmit) return 0;
|
||||||
|
const cStr1: CString = allocString(internalName);
|
||||||
|
const cStr2: CString = allocString(externalModuleName);
|
||||||
|
const cStr3: CString = allocString(externalBaseName);
|
||||||
|
try {
|
||||||
|
return _BinaryenAddMemoryImport(this.ref, cStr1, cStr2, cStr3);
|
||||||
|
} finally {
|
||||||
|
_free(cStr3);
|
||||||
|
_free(cStr2);
|
||||||
|
_free(cStr1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
addGlobalImport(internalName: string, externalModuleName: string, externalBaseName: string, globalType: NativeType): ImportRef {
|
||||||
|
if (this.noEmit) return 0;
|
||||||
|
const cStr1: CString = allocString(internalName);
|
||||||
|
const cStr2: CString = allocString(externalModuleName);
|
||||||
|
const cStr3: CString = allocString(externalBaseName);
|
||||||
|
try {
|
||||||
|
return _BinaryenAddGlobalImport(this.ref, cStr1, cStr2, cStr3, globalType);
|
||||||
} finally {
|
} finally {
|
||||||
_free(cStr3);
|
_free(cStr3);
|
||||||
_free(cStr2);
|
_free(cStr2);
|
||||||
@ -598,6 +676,16 @@ export class Module {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setFunctionTable(funcs: BinaryenFunctionRef[]): void {
|
||||||
|
if (this.noEmit) return;
|
||||||
|
const cArr: CArray<i32> = allocI32Array(funcs);
|
||||||
|
try {
|
||||||
|
_BinaryenSetFunctionTable(this.ref, cArr, funcs.length);
|
||||||
|
} finally {
|
||||||
|
_free(cArr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
setStart(func: FunctionRef): void {
|
setStart(func: FunctionRef): void {
|
||||||
if (this.noEmit) return;
|
if (this.noEmit) return;
|
||||||
_BinaryenSetStart(this.ref, func);
|
_BinaryenSetStart(this.ref, func);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user