mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-04-25 15:12:12 +00:00
Eliminate @builtin
decorator for compatibility with TS
This commit is contained in:
parent
56d891583e
commit
49f4d3dff1
2
dist/asc.js
vendored
2
dist/asc.js
vendored
File diff suppressed because one or more lines are too long
2
dist/asc.js.map
vendored
2
dist/asc.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/assemblyscript.js
vendored
2
dist/assemblyscript.js
vendored
File diff suppressed because one or more lines are too long
2
dist/assemblyscript.js.map
vendored
2
dist/assemblyscript.js.map
vendored
File diff suppressed because one or more lines are too long
@ -9,26 +9,29 @@ export function getHi(): u32 {
|
|||||||
return hi;
|
return hi;
|
||||||
}
|
}
|
||||||
|
|
||||||
function clz_(loLeft: u32, hiLeft: u32): void {
|
import { clz as builtin_clz } from "builtins";
|
||||||
var ret = clz<u64>(<u64>loLeft | <u64>hiLeft << 32);
|
|
||||||
lo = <u32>ret;
|
|
||||||
hi = 0;
|
|
||||||
}
|
|
||||||
export { clz_ as clz };
|
|
||||||
|
|
||||||
function ctz_(loLeft: u32, hiLeft: u32): void {
|
export function clz(loLeft: u32, hiLeft: u32): void {
|
||||||
var ret = ctz<u64>(<u64>loLeft | <u64>hiLeft << 32);
|
var ret = builtin_clz<u64>(<u64>loLeft | <u64>hiLeft << 32);
|
||||||
lo = <u32>ret;
|
lo = <u32>ret;
|
||||||
hi = 0;
|
hi = 0;
|
||||||
}
|
}
|
||||||
export { ctz_ as ctz };
|
|
||||||
|
|
||||||
function popcnt_(loLeft: u32, hiLeft: u32): void {
|
import { ctz as builtin_ctz } from "builtins";
|
||||||
var ret = popcnt<u64>(<u64>loLeft | <u64>hiLeft << 32);
|
|
||||||
|
export function ctz(loLeft: u32, hiLeft: u32): void {
|
||||||
|
var ret = builtin_ctz<u64>(<u64>loLeft | <u64>hiLeft << 32);
|
||||||
|
lo = <u32>ret;
|
||||||
|
hi = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
import { popcnt as builtin_popcnt } from "builtins";
|
||||||
|
|
||||||
|
export function popcnt(loLeft: u32, hiLeft: u32): void {
|
||||||
|
var ret = builtin_popcnt<u64>(<u64>loLeft | <u64>hiLeft << 32);
|
||||||
lo = <u32>ret;
|
lo = <u32>ret;
|
||||||
hi = 0;
|
hi = 0;
|
||||||
}
|
}
|
||||||
export { popcnt_ as popcnt };
|
|
||||||
|
|
||||||
export function eqz(loLeft: u32, hiLeft: u32): void {
|
export function eqz(loLeft: u32, hiLeft: u32): void {
|
||||||
var ret: bool = !(<u64>loLeft | <u64>hiLeft << 32);
|
var ret: bool = !(<u64>loLeft | <u64>hiLeft << 32);
|
||||||
@ -114,19 +117,21 @@ export function shr_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): voi
|
|||||||
hi = <u32>(ret >>> 32);
|
hi = <u32>(ret >>> 32);
|
||||||
}
|
}
|
||||||
|
|
||||||
function rotl_(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
import { rotl as builtin_rotl } from "builtins";
|
||||||
var ret = rotl<u64>(<u64>loLeft | <u64>hiLeft << 32, <u64>loRight | <u64>hiRight << 32);
|
|
||||||
lo = <u32>ret;
|
|
||||||
hi = <u32>(ret >>> 32);
|
|
||||||
}
|
|
||||||
export { rotl_ as rotl };
|
|
||||||
|
|
||||||
function rotr_(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
export function rotl(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||||
var ret = rotr<u64>(<u64>loLeft | <u64>hiLeft << 32, <u64>loRight | <u64>hiRight << 32);
|
var ret = builtin_rotl<u64>(<u64>loLeft | <u64>hiLeft << 32, <u64>loRight | <u64>hiRight << 32);
|
||||||
|
lo = <u32>ret;
|
||||||
|
hi = <u32>(ret >>> 32);
|
||||||
|
}
|
||||||
|
|
||||||
|
import { rotr as builtin_rotr } from "builtins";
|
||||||
|
|
||||||
|
export function rotr(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||||
|
var ret = builtin_rotr<u64>(<u64>loLeft | <u64>hiLeft << 32, <u64>loRight | <u64>hiRight << 32);
|
||||||
lo = <u32>ret;
|
lo = <u32>ret;
|
||||||
hi = <u32>(ret >>> 32);
|
hi = <u32>(ret >>> 32);
|
||||||
}
|
}
|
||||||
export { rotr_ as rotr };
|
|
||||||
|
|
||||||
export function eq(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
export function eq(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||||
var ret: bool = (<u64>loLeft | <u64>hiLeft << 32) == (<u64>loRight | <u64>hiRight << 32);
|
var ret: bool = (<u64>loLeft | <u64>hiLeft << 32) == (<u64>loRight | <u64>hiRight << 32);
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
10
src/ast.ts
10
src/ast.ts
@ -7,7 +7,8 @@ import {
|
|||||||
CommonFlags,
|
CommonFlags,
|
||||||
PATH_DELIMITER,
|
PATH_DELIMITER,
|
||||||
STATIC_DELIMITER,
|
STATIC_DELIMITER,
|
||||||
INSTANCE_DELIMITER
|
INSTANCE_DELIMITER,
|
||||||
|
LIBRARY_PREFIX
|
||||||
} from "./program";
|
} from "./program";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@ -703,12 +704,15 @@ export abstract class Node {
|
|||||||
stmt.namespaceName = null;
|
stmt.namespaceName = null;
|
||||||
stmt.path = path;
|
stmt.path = path;
|
||||||
var normalizedPath = normalizePath(path.value);
|
var normalizedPath = normalizePath(path.value);
|
||||||
if (path.value.startsWith(".")) { // relative
|
if (path.value.startsWith(".")) { // relative in project
|
||||||
stmt.normalizedPath = resolvePath(
|
stmt.normalizedPath = resolvePath(
|
||||||
normalizedPath,
|
normalizedPath,
|
||||||
range.source.normalizedPath
|
range.source.normalizedPath
|
||||||
);
|
);
|
||||||
} else { // absolute
|
} else { // absolute in library
|
||||||
|
if (!normalizedPath.startsWith(LIBRARY_PREFIX)) {
|
||||||
|
normalizedPath = LIBRARY_PREFIX + normalizedPath;
|
||||||
|
}
|
||||||
stmt.normalizedPath = normalizedPath;
|
stmt.normalizedPath = normalizedPath;
|
||||||
}
|
}
|
||||||
stmt.internalPath = mangleInternalPath(stmt.normalizedPath);
|
stmt.internalPath = mangleInternalPath(stmt.normalizedPath);
|
||||||
|
@ -26,8 +26,8 @@ import {
|
|||||||
} from "./types";
|
} from "./types";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
UnaryOp,
|
|
||||||
BinaryOp,
|
BinaryOp,
|
||||||
|
UnaryOp,
|
||||||
HostOp,
|
HostOp,
|
||||||
NativeType,
|
NativeType,
|
||||||
ExpressionRef,
|
ExpressionRef,
|
||||||
@ -35,11 +35,11 @@ import {
|
|||||||
} from "./module";
|
} from "./module";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
Global,
|
|
||||||
FunctionPrototype,
|
|
||||||
Local,
|
|
||||||
Class,
|
|
||||||
ElementKind,
|
ElementKind,
|
||||||
|
Global,
|
||||||
|
Local,
|
||||||
|
FunctionPrototype,
|
||||||
|
Class,
|
||||||
ClassPrototype
|
ClassPrototype
|
||||||
} from "./program";
|
} from "./program";
|
||||||
|
|
||||||
@ -2500,8 +2500,6 @@ export function compileAllocate(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const abortInternalName = "abort";
|
|
||||||
|
|
||||||
/** Compiles an abort wired to the conditionally imported 'abort' function. */
|
/** Compiles an abort wired to the conditionally imported 'abort' function. */
|
||||||
export function compileAbort(
|
export function compileAbort(
|
||||||
compiler: Compiler,
|
compiler: Compiler,
|
||||||
@ -2514,7 +2512,7 @@ export function compileAbort(
|
|||||||
var stringType = program.typesLookup.get("string"); // might be intended
|
var stringType = program.typesLookup.get("string"); // might be intended
|
||||||
if (!stringType) return module.createUnreachable();
|
if (!stringType) return module.createUnreachable();
|
||||||
|
|
||||||
var abortPrototype = program.elementsLookup.get(abortInternalName); // might be intended
|
var abortPrototype = program.elementsLookup.get("abort"); // might be intended
|
||||||
if (!abortPrototype || abortPrototype.kind != ElementKind.FUNCTION_PROTOTYPE) return module.createUnreachable();
|
if (!abortPrototype || abortPrototype.kind != ElementKind.FUNCTION_PROTOTYPE) return module.createUnreachable();
|
||||||
|
|
||||||
var abortInstance = (<FunctionPrototype>abortPrototype).resolve(); // reports
|
var abortInstance = (<FunctionPrototype>abortPrototype).resolve(); // reports
|
||||||
|
@ -464,7 +464,7 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
compileGlobal(global: Global): bool {
|
compileGlobal(global: Global): bool {
|
||||||
if (global.is(CommonFlags.COMPILED) || global.is(CommonFlags.BUILTIN)) return true;
|
if (global.is(CommonFlags.COMPILED) || global.is(CommonFlags.AMBIENT | CommonFlags.BUILTIN)) return true;
|
||||||
global.set(CommonFlags.COMPILED); // ^ built-ins are compiled on use
|
global.set(CommonFlags.COMPILED); // ^ built-ins are compiled on use
|
||||||
|
|
||||||
var module = this.module;
|
var module = this.module;
|
||||||
@ -814,7 +814,7 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
/** Compiles a readily resolved function instance. */
|
/** Compiles a readily resolved function instance. */
|
||||||
compileFunction(instance: Function): bool {
|
compileFunction(instance: Function): bool {
|
||||||
if (instance.is(CommonFlags.COMPILED)) return true;
|
if (instance.is(CommonFlags.COMPILED)) return true;
|
||||||
assert(!instance.is(CommonFlags.BUILTIN) || instance.simpleName == "abort");
|
assert(!instance.is(CommonFlags.AMBIENT | CommonFlags.BUILTIN) || instance.simpleName == "abort");
|
||||||
instance.set(CommonFlags.COMPILED);
|
instance.set(CommonFlags.COMPILED);
|
||||||
|
|
||||||
// check that modifiers are matching but still compile as-is
|
// check that modifiers are matching but still compile as-is
|
||||||
@ -3975,7 +3975,7 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
let prototype = <FunctionPrototype>element;
|
let prototype = <FunctionPrototype>element;
|
||||||
|
|
||||||
// builtins are compiled on the fly
|
// builtins are compiled on the fly
|
||||||
if (prototype.is(CommonFlags.BUILTIN)) {
|
if (prototype.is(CommonFlags.AMBIENT | CommonFlags.BUILTIN)) {
|
||||||
let expr = compileBuiltinCall( // reports
|
let expr = compileBuiltinCall( // reports
|
||||||
this,
|
this,
|
||||||
prototype,
|
prototype,
|
||||||
@ -4521,7 +4521,7 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
return this.module.createGetLocal(localIndex, localType.toNativeType());
|
return this.module.createGetLocal(localIndex, localType.toNativeType());
|
||||||
}
|
}
|
||||||
case ElementKind.GLOBAL: {
|
case ElementKind.GLOBAL: {
|
||||||
if (element.is(CommonFlags.BUILTIN)) {
|
if (element.is(CommonFlags.AMBIENT | CommonFlags.BUILTIN)) {
|
||||||
return compileBuiltinGetConstant(this, <Global>element, expression);
|
return compileBuiltinGetConstant(this, <Global>element, expression);
|
||||||
}
|
}
|
||||||
if (!this.compileGlobal(<Global>element)) { // reports; not yet compiled if a static field
|
if (!this.compileGlobal(<Global>element)) { // reports; not yet compiled if a static field
|
||||||
@ -4996,7 +4996,7 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
var targetExpr: ExpressionRef;
|
var targetExpr: ExpressionRef;
|
||||||
switch (element.kind) {
|
switch (element.kind) {
|
||||||
case ElementKind.GLOBAL: { // static property
|
case ElementKind.GLOBAL: { // static property
|
||||||
if (element.is(CommonFlags.BUILTIN)) {
|
if (element.is(CommonFlags.AMBIENT | CommonFlags.BUILTIN)) {
|
||||||
return compileBuiltinGetConstant(this, <Global>element, propertyAccess);
|
return compileBuiltinGetConstant(this, <Global>element, propertyAccess);
|
||||||
}
|
}
|
||||||
if (!this.compileGlobal(<Global>element)) { // reports; not yet compiled if a static field
|
if (!this.compileGlobal(<Global>element)) { // reports; not yet compiled if a static field
|
||||||
|
@ -92,6 +92,7 @@ export enum DiagnosticCode {
|
|||||||
Function_implementation_is_missing_or_not_immediately_following_the_declaration = 2391,
|
Function_implementation_is_missing_or_not_immediately_following_the_declaration = 2391,
|
||||||
Multiple_constructor_implementations_are_not_allowed = 2392,
|
Multiple_constructor_implementations_are_not_allowed = 2392,
|
||||||
Duplicate_function_implementation = 2393,
|
Duplicate_function_implementation = 2393,
|
||||||
|
Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local = 2395,
|
||||||
The_0_operator_cannot_be_applied_to_type_1 = 2469,
|
The_0_operator_cannot_be_applied_to_type_1 = 2469,
|
||||||
Export_declaration_conflicts_with_exported_declaration_of_0 = 2484,
|
Export_declaration_conflicts_with_exported_declaration_of_0 = 2484,
|
||||||
Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property = 2540,
|
Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property = 2540,
|
||||||
@ -193,6 +194,7 @@ export function diagnosticCodeToString(code: DiagnosticCode): string {
|
|||||||
case 2391: return "Function implementation is missing or not immediately following the declaration.";
|
case 2391: return "Function implementation is missing or not immediately following the declaration.";
|
||||||
case 2392: return "Multiple constructor implementations are not allowed.";
|
case 2392: return "Multiple constructor implementations are not allowed.";
|
||||||
case 2393: return "Duplicate function implementation.";
|
case 2393: return "Duplicate function implementation.";
|
||||||
|
case 2395: return "Individual declarations in merged declaration '{0}' must be all exported or all local.";
|
||||||
case 2469: return "The '{0}' operator cannot be applied to type '{1}'.";
|
case 2469: return "The '{0}' operator cannot be applied to type '{1}'.";
|
||||||
case 2484: return "Export declaration conflicts with exported declaration of '{0}'.";
|
case 2484: return "Export declaration conflicts with exported declaration of '{0}'.";
|
||||||
case 2540: return "Cannot assign to '{0}' because it is a constant or a read-only property.";
|
case 2540: return "Cannot assign to '{0}' because it is a constant or a read-only property.";
|
||||||
|
@ -86,6 +86,7 @@
|
|||||||
"Function implementation is missing or not immediately following the declaration.": 2391,
|
"Function implementation is missing or not immediately following the declaration.": 2391,
|
||||||
"Multiple constructor implementations are not allowed.": 2392,
|
"Multiple constructor implementations are not allowed.": 2392,
|
||||||
"Duplicate function implementation.": 2393,
|
"Duplicate function implementation.": 2393,
|
||||||
|
"Individual declarations in merged declaration '{0}' must be all exported or all local.": 2395,
|
||||||
"The '{0}' operator cannot be applied to type '{1}'.": 2469,
|
"The '{0}' operator cannot be applied to type '{1}'.": 2469,
|
||||||
"Export declaration conflicts with exported declaration of '{0}'.": 2484,
|
"Export declaration conflicts with exported declaration of '{0}'.": 2484,
|
||||||
"Cannot assign to '{0}' because it is a constant or a read-only property.": 2540,
|
"Cannot assign to '{0}' because it is a constant or a read-only property.": 2540,
|
||||||
|
@ -1395,10 +1395,6 @@ export class ASTBuilder {
|
|||||||
sb.push("@global\n");
|
sb.push("@global\n");
|
||||||
indent(sb, indentLevel);
|
indent(sb, indentLevel);
|
||||||
}
|
}
|
||||||
if (node.is(CommonFlags.BUILTIN)) {
|
|
||||||
sb.push("@builtin\n");
|
|
||||||
indent(sb, indentLevel);
|
|
||||||
}
|
|
||||||
if (node.is(CommonFlags.UNMANAGED)) {
|
if (node.is(CommonFlags.UNMANAGED)) {
|
||||||
sb.push("@unmanaged\n");
|
sb.push("@unmanaged\n");
|
||||||
indent(sb, indentLevel);
|
indent(sb, indentLevel);
|
||||||
|
@ -78,6 +78,8 @@ import {
|
|||||||
WhileStatement
|
WhileStatement
|
||||||
} from "./ast";
|
} from "./ast";
|
||||||
|
|
||||||
|
const builtinsFile = LIBRARY_PREFIX + "builtins.ts";
|
||||||
|
|
||||||
/** Parser interface. */
|
/** Parser interface. */
|
||||||
export class Parser extends DiagnosticEmitter {
|
export class Parser extends DiagnosticEmitter {
|
||||||
|
|
||||||
@ -124,6 +126,11 @@ export class Parser extends DiagnosticEmitter {
|
|||||||
);
|
);
|
||||||
sources.push(source);
|
sources.push(source);
|
||||||
|
|
||||||
|
// mark the special builtins library file
|
||||||
|
if (source.normalizedPath == builtinsFile) {
|
||||||
|
source.set(CommonFlags.BUILTIN);
|
||||||
|
}
|
||||||
|
|
||||||
// tokenize and parse
|
// tokenize and parse
|
||||||
var tn = new Tokenizer(source, program.diagnostics);
|
var tn = new Tokenizer(source, program.diagnostics);
|
||||||
tn.onComment = this.onComment;
|
tn.onComment = this.onComment;
|
||||||
@ -160,10 +167,6 @@ export class Parser extends DiagnosticEmitter {
|
|||||||
flags |= CommonFlags.GLOBAL;
|
flags |= CommonFlags.GLOBAL;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (text == "builtin") {
|
|
||||||
flags |= CommonFlags.BUILTIN;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (text == "unmananged") {
|
if (text == "unmananged") {
|
||||||
flags |= CommonFlags.UNMANAGED;
|
flags |= CommonFlags.UNMANAGED;
|
||||||
continue;
|
continue;
|
||||||
@ -173,6 +176,9 @@ export class Parser extends DiagnosticEmitter {
|
|||||||
decorators.push(decorator);
|
decorators.push(decorator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// mark builtins
|
||||||
|
flags |= (tn.source.flags & CommonFlags.BUILTIN);
|
||||||
|
|
||||||
// check modifiers
|
// check modifiers
|
||||||
var exportStart: i32 = 0;
|
var exportStart: i32 = 0;
|
||||||
var exportEnd: i32 = 0;
|
var exportEnd: i32 = 0;
|
||||||
|
@ -347,7 +347,6 @@ export class Program extends DiagnosticEmitter {
|
|||||||
} else {
|
} else {
|
||||||
element.set(CommonFlags.GLOBAL);
|
element.set(CommonFlags.GLOBAL);
|
||||||
this.elementsLookup.set(simpleName, element);
|
this.elementsLookup.set(simpleName, element);
|
||||||
this.fileLevelExports.set(simpleName, element);
|
|
||||||
if (element.is(CommonFlags.BUILTIN)) {
|
if (element.is(CommonFlags.BUILTIN)) {
|
||||||
element.internalName = simpleName;
|
element.internalName = simpleName;
|
||||||
}
|
}
|
||||||
@ -378,8 +377,6 @@ export class Program extends DiagnosticEmitter {
|
|||||||
prototype.namespace = namespace;
|
prototype.namespace = namespace;
|
||||||
this.elementsLookup.set(internalName, prototype);
|
this.elementsLookup.set(internalName, prototype);
|
||||||
|
|
||||||
this.checkInternalDecorators(prototype, declaration);
|
|
||||||
|
|
||||||
var implementsTypes = declaration.implementsTypes;
|
var implementsTypes = declaration.implementsTypes;
|
||||||
var numImplementsTypes = implementsTypes.length;
|
var numImplementsTypes = implementsTypes.length;
|
||||||
if (prototype.is(CommonFlags.UNMANAGED)) {
|
if (prototype.is(CommonFlags.UNMANAGED)) {
|
||||||
@ -472,6 +469,8 @@ export class Program extends DiagnosticEmitter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.checkInternalDecorators(prototype, declaration);
|
||||||
|
|
||||||
// check and possibly register string type
|
// check and possibly register string type
|
||||||
if (
|
if (
|
||||||
prototype.is(CommonFlags.GLOBAL) &&
|
prototype.is(CommonFlags.GLOBAL) &&
|
||||||
@ -839,8 +838,6 @@ export class Program extends DiagnosticEmitter {
|
|||||||
element.namespace = namespace;
|
element.namespace = namespace;
|
||||||
this.elementsLookup.set(internalName, element);
|
this.elementsLookup.set(internalName, element);
|
||||||
|
|
||||||
this.checkInternalDecorators(element, declaration);
|
|
||||||
|
|
||||||
if (namespace) {
|
if (namespace) {
|
||||||
if (namespace.members) {
|
if (namespace.members) {
|
||||||
if (namespace.members.has(simpleName)) {
|
if (namespace.members.has(simpleName)) {
|
||||||
@ -883,6 +880,8 @@ export class Program extends DiagnosticEmitter {
|
|||||||
for (let i = 0, k = values.length; i < k; ++i) {
|
for (let i = 0, k = values.length; i < k; ++i) {
|
||||||
this.initializeEnumValue(values[i], element);
|
this.initializeEnumValue(values[i], element);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.checkInternalDecorators(element, declaration);
|
||||||
}
|
}
|
||||||
|
|
||||||
private initializeEnumValue(
|
private initializeEnumValue(
|
||||||
@ -1068,8 +1067,6 @@ export class Program extends DiagnosticEmitter {
|
|||||||
prototype.namespace = namespace;
|
prototype.namespace = namespace;
|
||||||
this.elementsLookup.set(internalName, prototype);
|
this.elementsLookup.set(internalName, prototype);
|
||||||
|
|
||||||
this.checkInternalDecorators(prototype, declaration);
|
|
||||||
|
|
||||||
if (namespace) {
|
if (namespace) {
|
||||||
if (namespace.members) {
|
if (namespace.members) {
|
||||||
if (namespace.members.has(simpleName)) {
|
if (namespace.members.has(simpleName)) {
|
||||||
@ -1107,6 +1104,8 @@ export class Program extends DiagnosticEmitter {
|
|||||||
this.moduleLevelExports.set(internalName, prototype);
|
this.moduleLevelExports.set(internalName, prototype);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.checkInternalDecorators(prototype, declaration);
|
||||||
}
|
}
|
||||||
|
|
||||||
private initializeImports(
|
private initializeImports(
|
||||||
@ -1204,8 +1203,6 @@ export class Program extends DiagnosticEmitter {
|
|||||||
prototype.namespace = namespace;
|
prototype.namespace = namespace;
|
||||||
this.elementsLookup.set(internalName, prototype);
|
this.elementsLookup.set(internalName, prototype);
|
||||||
|
|
||||||
this.checkInternalDecorators(prototype, declaration);
|
|
||||||
|
|
||||||
if (namespace) {
|
if (namespace) {
|
||||||
if (namespace.members) {
|
if (namespace.members) {
|
||||||
if (namespace.members.has(prototype.internalName)) {
|
if (namespace.members.has(prototype.internalName)) {
|
||||||
@ -1266,6 +1263,8 @@ export class Program extends DiagnosticEmitter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.checkInternalDecorators(prototype, declaration);
|
||||||
}
|
}
|
||||||
|
|
||||||
private initializeNamespace(
|
private initializeNamespace(
|
||||||
@ -1300,14 +1299,18 @@ export class Program extends DiagnosticEmitter {
|
|||||||
namespace.set(CommonFlags.MODULE_EXPORT);
|
namespace.set(CommonFlags.MODULE_EXPORT);
|
||||||
}
|
}
|
||||||
} else if (namespace.is(CommonFlags.EXPORT)) { // no parent namespace
|
} else if (namespace.is(CommonFlags.EXPORT)) { // no parent namespace
|
||||||
if (this.fileLevelExports.has(internalName)) {
|
let existingExport = this.fileLevelExports.get(internalName);
|
||||||
this.error(
|
if (existingExport) {
|
||||||
DiagnosticCode.Export_declaration_conflicts_with_exported_declaration_of_0,
|
if (!existingExport.is(CommonFlags.EXPORT)) {
|
||||||
declaration.name.range, internalName
|
this.error(
|
||||||
);
|
DiagnosticCode.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local,
|
||||||
return;
|
declaration.name.range, namespace.internalName
|
||||||
|
); // recoverable
|
||||||
|
}
|
||||||
|
namespace = existingExport; // join
|
||||||
|
} else {
|
||||||
|
this.fileLevelExports.set(internalName, namespace);
|
||||||
}
|
}
|
||||||
this.fileLevelExports.set(internalName, namespace);
|
|
||||||
if (declaration.range.source.isEntry) {
|
if (declaration.range.source.isEntry) {
|
||||||
if (this.moduleLevelExports.has(internalName)) {
|
if (this.moduleLevelExports.has(internalName)) {
|
||||||
this.error(
|
this.error(
|
||||||
@ -1404,8 +1407,6 @@ export class Program extends DiagnosticEmitter {
|
|||||||
global.namespace = namespace;
|
global.namespace = namespace;
|
||||||
this.elementsLookup.set(internalName, global);
|
this.elementsLookup.set(internalName, global);
|
||||||
|
|
||||||
this.checkInternalDecorators(global, declaration);
|
|
||||||
|
|
||||||
if (namespace) {
|
if (namespace) {
|
||||||
if (namespace.members) {
|
if (namespace.members) {
|
||||||
if (namespace.members.has(simpleName)) {
|
if (namespace.members.has(simpleName)) {
|
||||||
@ -1443,6 +1444,7 @@ export class Program extends DiagnosticEmitter {
|
|||||||
this.moduleLevelExports.set(internalName, global);
|
this.moduleLevelExports.set(internalName, global);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
this.checkInternalDecorators(global, declaration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
3
std/assembly.d.ts
vendored
3
std/assembly.d.ts
vendored
@ -346,6 +346,3 @@ declare function unmanaged(target: Function): any;
|
|||||||
|
|
||||||
/** Annotates a class field with an explicit offset. */
|
/** Annotates a class field with an explicit offset. */
|
||||||
declare function offset(offset: usize): any;
|
declare function offset(offset: usize): any;
|
||||||
|
|
||||||
/** Annotates an element as begin built-in. */
|
|
||||||
declare function builtin(target: Function): any;
|
|
||||||
|
@ -1,113 +1,73 @@
|
|||||||
// types
|
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function isInteger(value: void): bool;
|
export declare function isInteger(value: void): bool;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function isFloat(value: void): bool;
|
export declare function isFloat(value: void): bool;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function isReference(value: void): bool;
|
export declare function isReference(value: void): bool;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function isString(value: void): bool;
|
export declare function isString(value: void): bool;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function isArray(value: void): bool;
|
export declare function isArray(value: void): bool;
|
||||||
|
|
||||||
// math
|
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare const NaN: f64; // | f32
|
export declare const NaN: f64; // | f32
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare const Infinity: f64; // | f32
|
export declare const Infinity: f64; // | f32
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function isNaN<T>(value: T): bool;
|
export declare function isNaN<T>(value: T): bool;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function isFinite<T>(value: T): bool;
|
export declare function isFinite<T>(value: T): bool;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function clz<T>(value: T): T;
|
export declare function clz<T>(value: T): T;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function ctz<T>(value: T): T;
|
export declare function ctz<T>(value: T): T;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function popcnt<T>(value: T): T;
|
export declare function popcnt<T>(value: T): T;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function rotl<T>(value: T, shift: T): T;
|
export declare function rotl<T>(value: T, shift: T): T;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function rotr<T>(value: T, shift: T): T;
|
export declare function rotr<T>(value: T, shift: T): T;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function abs<T>(value: T): T;
|
export declare function abs<T>(value: T): T;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function max<T>(left: T, right: T): T;
|
export declare function max<T>(left: T, right: T): T;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function min<T>(left: T, right: T): T;
|
export declare function min<T>(left: T, right: T): T;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function ceil<T>(value: T): T;
|
export declare function ceil<T>(value: T): T;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function floor<T>(value: T): T;
|
export declare function floor<T>(value: T): T;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function copysign<T>(left: T, right: T): T;
|
export declare function copysign<T>(left: T, right: T): T;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function nearest<T>(left: T, right: T): T;
|
export declare function nearest<T>(left: T, right: T): T;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function reinterpret<T>(value: void): T;
|
export declare function reinterpret<T>(value: void): T;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function sqrt<T>(value: T): T;
|
export declare function sqrt<T>(value: T): T;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function trunc<T>(value: T): T;
|
export declare function trunc<T>(value: T): T;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function load<T>(offset: usize, constantOffset?: usize): T;
|
export declare function load<T>(offset: usize, constantOffset?: usize): T;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function store<T>(offset: usize, value: void, constantOffset?: usize): T;
|
export declare function store<T>(offset: usize, value: void, constantOffset?: usize): T;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function sizeof<T>(): usize;
|
export declare function sizeof<T>(): usize;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function select<T>(ifTrue: T, ifFalse: T, condition: bool): T;
|
export declare function select<T>(ifTrue: T, ifFalse: T, condition: bool): T;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function unreachable(): void;
|
export declare function unreachable(): void;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function current_memory(): i32;
|
export declare function current_memory(): i32;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function grow_memory(pages: i32): i32;
|
export declare function grow_memory(pages: i32): i32;
|
||||||
|
|
||||||
// @builtin
|
|
||||||
// export declare function move_memory(dest: usize, src: usize: n: usize): void;
|
// export declare function move_memory(dest: usize, src: usize: n: usize): void;
|
||||||
|
|
||||||
// @builtin
|
|
||||||
// export declare function set_memory(dest: usize, value: u32, n: usize): void;
|
// export declare function set_memory(dest: usize, value: u32, n: usize): void;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function changetype<T>(value: void): T;
|
export declare function changetype<T>(value: void): T;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function assert<T>(isTrueish: T, message?: string): T;
|
export declare function assert<T>(isTrueish: T, message?: string): T;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function abort(
|
export declare function abort(
|
||||||
message?: string | null,
|
message?: string | null,
|
||||||
fileName?: string | null,
|
fileName?: string | null,
|
||||||
@ -115,41 +75,32 @@ export declare function abort(
|
|||||||
columnNumber?: u32
|
columnNumber?: u32
|
||||||
): void;
|
): void;
|
||||||
|
|
||||||
@builtin
|
export declare function i8(value: void): i8;
|
||||||
declare function i8(value: void): i8;
|
export namespace i8 {
|
||||||
namespace i8 {
|
|
||||||
export const MIN_VALUE: i8 = -128;
|
export const MIN_VALUE: i8 = -128;
|
||||||
export const MAX_VALUE: i8 = 127;
|
export const MAX_VALUE: i8 = 127;
|
||||||
}
|
}
|
||||||
export { i8 };
|
|
||||||
|
|
||||||
@builtin
|
export declare function i16(value: void): i16;
|
||||||
declare function i16(value: void): i16;
|
export namespace i16 {
|
||||||
namespace i16 {
|
|
||||||
export const MIN_VALUE: i16 = -32768;
|
export const MIN_VALUE: i16 = -32768;
|
||||||
export const MAX_VALUE: i16 = 32767;
|
export const MAX_VALUE: i16 = 32767;
|
||||||
}
|
}
|
||||||
export { i16 };
|
|
||||||
|
|
||||||
@builtin
|
export declare function i32(value: void): i32;
|
||||||
declare function i32(value: void): i32;
|
export namespace i32 {
|
||||||
namespace i32 {
|
|
||||||
export const MIN_VALUE: i32 = -2147483648;
|
export const MIN_VALUE: i32 = -2147483648;
|
||||||
export const MAX_VALUE: i32 = 2147483647;
|
export const MAX_VALUE: i32 = 2147483647;
|
||||||
}
|
}
|
||||||
export { i32 };
|
|
||||||
|
|
||||||
@builtin
|
export declare function i64(value: void): i64;
|
||||||
declare function i64(value: void): i64;
|
export namespace i64 {
|
||||||
namespace i64 {
|
|
||||||
export const MIN_VALUE: i64 = -9223372036854775808;
|
export const MIN_VALUE: i64 = -9223372036854775808;
|
||||||
export const MAX_VALUE: i64 = 9223372036854775807;
|
export const MAX_VALUE: i64 = 9223372036854775807;
|
||||||
}
|
}
|
||||||
export { i64 };
|
|
||||||
|
|
||||||
@builtin
|
export declare function isize(value: void): isize;
|
||||||
declare function isize(value: void): isize;
|
export namespace isize {
|
||||||
namespace isize {
|
|
||||||
export const MIN_VALUE: isize = sizeof<i32>() == sizeof<isize>()
|
export const MIN_VALUE: isize = sizeof<i32>() == sizeof<isize>()
|
||||||
? -2147483648
|
? -2147483648
|
||||||
: <isize>-9223372036854775808;
|
: <isize>-9223372036854775808;
|
||||||
@ -157,61 +108,47 @@ namespace isize {
|
|||||||
? 2147483647
|
? 2147483647
|
||||||
: <isize>9223372036854775807;
|
: <isize>9223372036854775807;
|
||||||
}
|
}
|
||||||
export { isize };
|
|
||||||
|
|
||||||
@builtin
|
export declare function u8(value: void): u8;
|
||||||
declare function u8(value: void): u8;
|
export namespace u8 {
|
||||||
namespace u8 {
|
|
||||||
export const MIN_VALUE: u8 = 0;
|
export const MIN_VALUE: u8 = 0;
|
||||||
export const MAX_VALUE: u8 = 255;
|
export const MAX_VALUE: u8 = 255;
|
||||||
}
|
}
|
||||||
export { u8 };
|
|
||||||
|
|
||||||
@builtin
|
export declare function u16(value: void): u16;
|
||||||
declare function u16(value: void): u16;
|
export namespace u16 {
|
||||||
namespace u16 {
|
|
||||||
export const MIN_VALUE: u16 = 0;
|
export const MIN_VALUE: u16 = 0;
|
||||||
export const MAX_VALUE: u16 = 65535;
|
export const MAX_VALUE: u16 = 65535;
|
||||||
}
|
}
|
||||||
export { u16 };
|
|
||||||
|
|
||||||
@builtin
|
export declare function u32(value: void): u32;
|
||||||
declare function u32(value: void): u32;
|
export namespace u32 {
|
||||||
namespace u32 {
|
|
||||||
export const MIN_VALUE: u32 = 0;
|
export const MIN_VALUE: u32 = 0;
|
||||||
export const MAX_VALUE: u32 = 4294967295;
|
export const MAX_VALUE: u32 = 4294967295;
|
||||||
}
|
}
|
||||||
export { u32 };
|
|
||||||
|
|
||||||
@builtin
|
export declare function u64(value: void): u64;
|
||||||
declare function u64(value: void): u64;
|
export namespace u64 {
|
||||||
namespace u64 {
|
|
||||||
export const MIN_VALUE: u64 = 0;
|
export const MIN_VALUE: u64 = 0;
|
||||||
export const MAX_VALUE: u64 = 18446744073709551615;
|
export const MAX_VALUE: u64 = 18446744073709551615;
|
||||||
}
|
}
|
||||||
export { u64 };
|
|
||||||
|
|
||||||
@builtin
|
export declare function usize(value: void): usize;
|
||||||
declare function usize(value: void): usize;
|
export namespace usize {
|
||||||
namespace usize {
|
|
||||||
export const MIN_VALUE: usize = 0;
|
export const MIN_VALUE: usize = 0;
|
||||||
export const MAX_VALUE: usize = sizeof<u32>() == sizeof<usize>()
|
export const MAX_VALUE: usize = sizeof<u32>() == sizeof<usize>()
|
||||||
? 4294967295
|
? 4294967295
|
||||||
: <usize>18446744073709551615;
|
: <usize>18446744073709551615;
|
||||||
}
|
}
|
||||||
export { usize };
|
|
||||||
|
|
||||||
@builtin
|
export declare function bool(value: void): bool;
|
||||||
declare function bool(value: void): bool;
|
export namespace bool {
|
||||||
namespace bool {
|
|
||||||
export const MIN_VALUE: bool = false;
|
export const MIN_VALUE: bool = false;
|
||||||
export const MAX_VALUE: bool = true;
|
export const MAX_VALUE: bool = true;
|
||||||
}
|
}
|
||||||
export { bool };
|
|
||||||
|
|
||||||
@builtin
|
export declare function f32(value: void): f32;
|
||||||
declare function f32(value: void): f32;
|
export namespace f32 {
|
||||||
namespace f32 {
|
|
||||||
export const MIN_VALUE: f32 = -3.40282347e+38;
|
export const MIN_VALUE: f32 = -3.40282347e+38;
|
||||||
export const MAX_VALUE: f32 = 3.40282347e+38;
|
export const MAX_VALUE: f32 = 3.40282347e+38;
|
||||||
export const MIN_POSITIVE_VALUE: f32 = 1.175494351e-38;
|
export const MIN_POSITIVE_VALUE: f32 = 1.175494351e-38;
|
||||||
@ -219,11 +156,9 @@ namespace f32 {
|
|||||||
export const MAX_SAFE_INTEGER: f32 = 16777215;
|
export const MAX_SAFE_INTEGER: f32 = 16777215;
|
||||||
export const EPSILON: f32 = 1.19209290e-07;
|
export const EPSILON: f32 = 1.19209290e-07;
|
||||||
}
|
}
|
||||||
export { f32 };
|
|
||||||
|
|
||||||
@builtin
|
export declare function f64(value: void): f64;
|
||||||
declare function f64(value: void): f64;
|
export namespace f64 {
|
||||||
namespace f64 {
|
|
||||||
export const MIN_VALUE: f64 = -1.7976931348623157e+308;
|
export const MIN_VALUE: f64 = -1.7976931348623157e+308;
|
||||||
export const MAX_VALUE: f64 = 1.7976931348623157e+308;
|
export const MAX_VALUE: f64 = 1.7976931348623157e+308;
|
||||||
export const MIN_POSITIVE_VALUE: f64 = 2.2250738585072014e-308;
|
export const MIN_POSITIVE_VALUE: f64 = 2.2250738585072014e-308;
|
||||||
@ -231,10 +166,7 @@ namespace f64 {
|
|||||||
export const MAX_SAFE_INTEGER: f64 = 9007199254740991;
|
export const MAX_SAFE_INTEGER: f64 = 9007199254740991;
|
||||||
export const EPSILON: f64 = 2.2204460492503131e-16;
|
export const EPSILON: f64 = 2.2204460492503131e-16;
|
||||||
}
|
}
|
||||||
export{ f64 };
|
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare const HEAP_BASE: usize;
|
export declare const HEAP_BASE: usize;
|
||||||
|
|
||||||
@builtin
|
|
||||||
export declare function start(): void;
|
export declare function start(): void;
|
||||||
|
@ -282,3 +282,9 @@ assert(f64.MAX_VALUE == 1.7976931348623157e+308);
|
|||||||
assert(f64.MIN_SAFE_INTEGER == -9007199254740991);
|
assert(f64.MIN_SAFE_INTEGER == -9007199254740991);
|
||||||
assert(f64.MAX_SAFE_INTEGER == 9007199254740991);
|
assert(f64.MAX_SAFE_INTEGER == 9007199254740991);
|
||||||
assert(f64.EPSILON == 2.2204460492503131e-16);
|
assert(f64.EPSILON == 2.2204460492503131e-16);
|
||||||
|
|
||||||
|
import {
|
||||||
|
isNaN as isItNaN
|
||||||
|
} from "builtins";
|
||||||
|
|
||||||
|
isItNaN(1);
|
||||||
|
@ -2020,5 +2020,13 @@
|
|||||||
(unreachable)
|
(unreachable)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
(drop
|
||||||
|
(f64.ne
|
||||||
|
(tee_local $5
|
||||||
|
(f64.const 1)
|
||||||
|
)
|
||||||
|
(get_local $5)
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -7,9 +7,9 @@
|
|||||||
(memory $0 1)
|
(memory $0 1)
|
||||||
(export "getHi" (func $../../examples/i64-polyfill/assembly/i64/getHi))
|
(export "getHi" (func $../../examples/i64-polyfill/assembly/i64/getHi))
|
||||||
(export "getLo" (func $../../examples/i64-polyfill/assembly/i64/getLo))
|
(export "getLo" (func $../../examples/i64-polyfill/assembly/i64/getLo))
|
||||||
(export "clz" (func $../../examples/i64-polyfill/assembly/i64/clz_))
|
(export "clz" (func $../../examples/i64-polyfill/assembly/i64/clz))
|
||||||
(export "ctz" (func $../../examples/i64-polyfill/assembly/i64/ctz_))
|
(export "ctz" (func $../../examples/i64-polyfill/assembly/i64/ctz))
|
||||||
(export "popcnt" (func $../../examples/i64-polyfill/assembly/i64/popcnt_))
|
(export "popcnt" (func $../../examples/i64-polyfill/assembly/i64/popcnt))
|
||||||
(export "eqz" (func $../../examples/i64-polyfill/assembly/i64/eqz))
|
(export "eqz" (func $../../examples/i64-polyfill/assembly/i64/eqz))
|
||||||
(export "add" (func $../../examples/i64-polyfill/assembly/i64/add))
|
(export "add" (func $../../examples/i64-polyfill/assembly/i64/add))
|
||||||
(export "sub" (func $../../examples/i64-polyfill/assembly/i64/sub))
|
(export "sub" (func $../../examples/i64-polyfill/assembly/i64/sub))
|
||||||
@ -24,8 +24,8 @@
|
|||||||
(export "shl" (func $../../examples/i64-polyfill/assembly/i64/shl))
|
(export "shl" (func $../../examples/i64-polyfill/assembly/i64/shl))
|
||||||
(export "shr_s" (func $../../examples/i64-polyfill/assembly/i64/shr_s))
|
(export "shr_s" (func $../../examples/i64-polyfill/assembly/i64/shr_s))
|
||||||
(export "shr_u" (func $../../examples/i64-polyfill/assembly/i64/shr_u))
|
(export "shr_u" (func $../../examples/i64-polyfill/assembly/i64/shr_u))
|
||||||
(export "rotl" (func $../../examples/i64-polyfill/assembly/i64/rotl_))
|
(export "rotl" (func $../../examples/i64-polyfill/assembly/i64/rotl))
|
||||||
(export "rotr" (func $../../examples/i64-polyfill/assembly/i64/rotr_))
|
(export "rotr" (func $../../examples/i64-polyfill/assembly/i64/rotr))
|
||||||
(export "eq" (func $../../examples/i64-polyfill/assembly/i64/eq))
|
(export "eq" (func $../../examples/i64-polyfill/assembly/i64/eq))
|
||||||
(export "ne" (func $../../examples/i64-polyfill/assembly/i64/ne))
|
(export "ne" (func $../../examples/i64-polyfill/assembly/i64/ne))
|
||||||
(export "lt_s" (func $../../examples/i64-polyfill/assembly/i64/lt_s))
|
(export "lt_s" (func $../../examples/i64-polyfill/assembly/i64/lt_s))
|
||||||
@ -43,7 +43,7 @@
|
|||||||
(func $../../examples/i64-polyfill/assembly/i64/getLo (; 1 ;) (type $i) (result i32)
|
(func $../../examples/i64-polyfill/assembly/i64/getLo (; 1 ;) (type $i) (result i32)
|
||||||
(get_global $../../examples/i64-polyfill/assembly/i64/lo)
|
(get_global $../../examples/i64-polyfill/assembly/i64/lo)
|
||||||
)
|
)
|
||||||
(func $../../examples/i64-polyfill/assembly/i64/clz_ (; 2 ;) (type $iiv) (param $0 i32) (param $1 i32)
|
(func $../../examples/i64-polyfill/assembly/i64/clz (; 2 ;) (type $iiv) (param $0 i32) (param $1 i32)
|
||||||
(set_global $../../examples/i64-polyfill/assembly/i64/lo
|
(set_global $../../examples/i64-polyfill/assembly/i64/lo
|
||||||
(i32.wrap/i64
|
(i32.wrap/i64
|
||||||
(i64.clz
|
(i64.clz
|
||||||
@ -65,7 +65,7 @@
|
|||||||
(i32.const 0)
|
(i32.const 0)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(func $../../examples/i64-polyfill/assembly/i64/ctz_ (; 3 ;) (type $iiv) (param $0 i32) (param $1 i32)
|
(func $../../examples/i64-polyfill/assembly/i64/ctz (; 3 ;) (type $iiv) (param $0 i32) (param $1 i32)
|
||||||
(set_global $../../examples/i64-polyfill/assembly/i64/lo
|
(set_global $../../examples/i64-polyfill/assembly/i64/lo
|
||||||
(i32.wrap/i64
|
(i32.wrap/i64
|
||||||
(i64.ctz
|
(i64.ctz
|
||||||
@ -87,7 +87,7 @@
|
|||||||
(i32.const 0)
|
(i32.const 0)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(func $../../examples/i64-polyfill/assembly/i64/popcnt_ (; 4 ;) (type $iiv) (param $0 i32) (param $1 i32)
|
(func $../../examples/i64-polyfill/assembly/i64/popcnt (; 4 ;) (type $iiv) (param $0 i32) (param $1 i32)
|
||||||
(set_global $../../examples/i64-polyfill/assembly/i64/lo
|
(set_global $../../examples/i64-polyfill/assembly/i64/lo
|
||||||
(i32.wrap/i64
|
(i32.wrap/i64
|
||||||
(i64.popcnt
|
(i64.popcnt
|
||||||
@ -662,7 +662,7 @@
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(func $../../examples/i64-polyfill/assembly/i64/rotl_ (; 19 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
(func $../../examples/i64-polyfill/assembly/i64/rotl (; 19 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||||
(local $4 i64)
|
(local $4 i64)
|
||||||
(set_global $../../examples/i64-polyfill/assembly/i64/lo
|
(set_global $../../examples/i64-polyfill/assembly/i64/lo
|
||||||
(i32.wrap/i64
|
(i32.wrap/i64
|
||||||
@ -703,7 +703,7 @@
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(func $../../examples/i64-polyfill/assembly/i64/rotr_ (; 20 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
(func $../../examples/i64-polyfill/assembly/i64/rotr (; 20 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||||
(local $4 i64)
|
(local $4 i64)
|
||||||
(set_global $../../examples/i64-polyfill/assembly/i64/lo
|
(set_global $../../examples/i64-polyfill/assembly/i64/lo
|
||||||
(i32.wrap/i64
|
(i32.wrap/i64
|
||||||
|
@ -8,9 +8,9 @@
|
|||||||
(memory $0 1)
|
(memory $0 1)
|
||||||
(export "getHi" (func $../../examples/i64-polyfill/assembly/i64/getHi))
|
(export "getHi" (func $../../examples/i64-polyfill/assembly/i64/getHi))
|
||||||
(export "getLo" (func $../../examples/i64-polyfill/assembly/i64/getLo))
|
(export "getLo" (func $../../examples/i64-polyfill/assembly/i64/getLo))
|
||||||
(export "clz" (func $../../examples/i64-polyfill/assembly/i64/clz_))
|
(export "clz" (func $../../examples/i64-polyfill/assembly/i64/clz))
|
||||||
(export "ctz" (func $../../examples/i64-polyfill/assembly/i64/ctz_))
|
(export "ctz" (func $../../examples/i64-polyfill/assembly/i64/ctz))
|
||||||
(export "popcnt" (func $../../examples/i64-polyfill/assembly/i64/popcnt_))
|
(export "popcnt" (func $../../examples/i64-polyfill/assembly/i64/popcnt))
|
||||||
(export "eqz" (func $../../examples/i64-polyfill/assembly/i64/eqz))
|
(export "eqz" (func $../../examples/i64-polyfill/assembly/i64/eqz))
|
||||||
(export "add" (func $../../examples/i64-polyfill/assembly/i64/add))
|
(export "add" (func $../../examples/i64-polyfill/assembly/i64/add))
|
||||||
(export "sub" (func $../../examples/i64-polyfill/assembly/i64/sub))
|
(export "sub" (func $../../examples/i64-polyfill/assembly/i64/sub))
|
||||||
@ -25,8 +25,8 @@
|
|||||||
(export "shl" (func $../../examples/i64-polyfill/assembly/i64/shl))
|
(export "shl" (func $../../examples/i64-polyfill/assembly/i64/shl))
|
||||||
(export "shr_s" (func $../../examples/i64-polyfill/assembly/i64/shr_s))
|
(export "shr_s" (func $../../examples/i64-polyfill/assembly/i64/shr_s))
|
||||||
(export "shr_u" (func $../../examples/i64-polyfill/assembly/i64/shr_u))
|
(export "shr_u" (func $../../examples/i64-polyfill/assembly/i64/shr_u))
|
||||||
(export "rotl" (func $../../examples/i64-polyfill/assembly/i64/rotl_))
|
(export "rotl" (func $../../examples/i64-polyfill/assembly/i64/rotl))
|
||||||
(export "rotr" (func $../../examples/i64-polyfill/assembly/i64/rotr_))
|
(export "rotr" (func $../../examples/i64-polyfill/assembly/i64/rotr))
|
||||||
(export "eq" (func $../../examples/i64-polyfill/assembly/i64/eq))
|
(export "eq" (func $../../examples/i64-polyfill/assembly/i64/eq))
|
||||||
(export "ne" (func $../../examples/i64-polyfill/assembly/i64/ne))
|
(export "ne" (func $../../examples/i64-polyfill/assembly/i64/ne))
|
||||||
(export "lt_s" (func $../../examples/i64-polyfill/assembly/i64/lt_s))
|
(export "lt_s" (func $../../examples/i64-polyfill/assembly/i64/lt_s))
|
||||||
@ -48,7 +48,7 @@
|
|||||||
(get_global $../../examples/i64-polyfill/assembly/i64/lo)
|
(get_global $../../examples/i64-polyfill/assembly/i64/lo)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(func $../../examples/i64-polyfill/assembly/i64/clz_ (; 2 ;) (type $iiv) (param $0 i32) (param $1 i32)
|
(func $../../examples/i64-polyfill/assembly/i64/clz (; 2 ;) (type $iiv) (param $0 i32) (param $1 i32)
|
||||||
(local $2 i64)
|
(local $2 i64)
|
||||||
(set_local $2
|
(set_local $2
|
||||||
(i64.clz
|
(i64.clz
|
||||||
@ -74,7 +74,7 @@
|
|||||||
(i32.const 0)
|
(i32.const 0)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(func $../../examples/i64-polyfill/assembly/i64/ctz_ (; 3 ;) (type $iiv) (param $0 i32) (param $1 i32)
|
(func $../../examples/i64-polyfill/assembly/i64/ctz (; 3 ;) (type $iiv) (param $0 i32) (param $1 i32)
|
||||||
(local $2 i64)
|
(local $2 i64)
|
||||||
(set_local $2
|
(set_local $2
|
||||||
(i64.ctz
|
(i64.ctz
|
||||||
@ -100,7 +100,7 @@
|
|||||||
(i32.const 0)
|
(i32.const 0)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(func $../../examples/i64-polyfill/assembly/i64/popcnt_ (; 4 ;) (type $iiv) (param $0 i32) (param $1 i32)
|
(func $../../examples/i64-polyfill/assembly/i64/popcnt (; 4 ;) (type $iiv) (param $0 i32) (param $1 i32)
|
||||||
(local $2 i64)
|
(local $2 i64)
|
||||||
(set_local $2
|
(set_local $2
|
||||||
(i64.popcnt
|
(i64.popcnt
|
||||||
@ -696,7 +696,7 @@
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(func $../../examples/i64-polyfill/assembly/i64/rotl_ (; 19 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
(func $../../examples/i64-polyfill/assembly/i64/rotl (; 19 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||||
(local $4 i64)
|
(local $4 i64)
|
||||||
(set_local $4
|
(set_local $4
|
||||||
(i64.rotl
|
(i64.rotl
|
||||||
@ -738,7 +738,7 @@
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(func $../../examples/i64-polyfill/assembly/i64/rotr_ (; 20 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
(func $../../examples/i64-polyfill/assembly/i64/rotr (; 20 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||||
(local $4 i64)
|
(local $4 i64)
|
||||||
(set_local $4
|
(set_local $4
|
||||||
(i64.rotr
|
(i64.rotr
|
||||||
|
@ -6413,6 +6413,14 @@
|
|||||||
(unreachable)
|
(unreachable)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
(drop
|
||||||
|
(f64.ne
|
||||||
|
(tee_local $3
|
||||||
|
(f64.const 1)
|
||||||
|
)
|
||||||
|
(get_local $3)
|
||||||
|
)
|
||||||
|
)
|
||||||
(if
|
(if
|
||||||
(i32.eqz
|
(i32.eqz
|
||||||
(i32.eq
|
(i32.eq
|
||||||
|
Loading…
x
Reference in New Issue
Block a user