| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent cc5522d commit 65c799c
6 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -451,14 +451,11 @@ export function compileCall( | |||
| 451 | 451 | arg0 = compiler.compileExpression(operands[0], Type.i32, ConversionKind.NONE, WrapMode.WRAP); | |
| 452 | 452 | } | |
| 453 | 453 | switch (compiler.currentType.kind) { | |
| 454 | + case TypeKind.BOOL: // usually overflows | ||
| 454 | 455 | case TypeKind.I8: | |
| 455 | - case TypeKind.I16: | ||
| 456 | 456 | case TypeKind.U8: | |
| 457 | - case TypeKind.U16: { | ||
| 458 | - ret = module.createUnary(UnaryOp.ClzI32, arg0); | ||
| 459 | - break; | ||
| 460 | - } | ||
| 461 | - case TypeKind.BOOL: // usually overflows | ||
| 457 | + case TypeKind.I16: | ||
| 458 | + case TypeKind.U16: | ||
| 462 | 459 | case TypeKind.I32: | |
| 463 | 460 | case TypeKind.U32: { | |
| 464 | 461 | ret = module.createUnary(UnaryOp.ClzI32, arg0); | |
@@ -531,14 +528,11 @@ export function compileCall( | |||
| 531 | 528 | arg0 = compiler.compileExpression(operands[0], Type.i32, ConversionKind.NONE, WrapMode.WRAP); | |
| 532 | 529 | } | |
| 533 | 530 | switch (compiler.currentType.kind) { | |
| 531 | + case TypeKind.BOOL: // usually overflows | ||
| 534 | 532 | case TypeKind.I8: | |
| 535 | - case TypeKind.I16: | ||
| 536 | 533 | case TypeKind.U8: | |
| 537 | - case TypeKind.U16: { | ||
| 538 | - ret = module.createUnary(UnaryOp.CtzI32, arg0); | ||
| 539 | - break; | ||
| 540 | - } | ||
| 541 | - case TypeKind.BOOL: // usually overflows | ||
| 534 | + case TypeKind.I16: | ||
| 535 | + case TypeKind.U16: | ||
| 542 | 536 | case TypeKind.I32: | |
| 543 | 537 | case TypeKind.U32: { | |
| 544 | 538 | ret = module.createUnary(UnaryOp.CtzI32, arg0); | |
@@ -611,14 +605,11 @@ export function compileCall( | |||
| 611 | 605 | arg0 = compiler.compileExpression(operands[0], Type.i32, ConversionKind.NONE, WrapMode.WRAP); | |
| 612 | 606 | } | |
| 613 | 607 | switch (compiler.currentType.kind) { | |
| 608 | + case TypeKind.BOOL: // usually overflows | ||
| 614 | 609 | case TypeKind.I8: | |
| 615 | - case TypeKind.I16: | ||
| 616 | 610 | case TypeKind.U8: | |
| 617 | - case TypeKind.U16: { | ||
| 618 | - ret = module.createUnary(UnaryOp.PopcntI32, arg0); | ||
| 619 | - break; | ||
| 620 | - } | ||
| 621 | - case TypeKind.BOOL: // usually overflows | ||
| 611 | + case TypeKind.I16: | ||
| 612 | + case TypeKind.U16: | ||
| 622 | 613 | case TypeKind.I32: | |
| 623 | 614 | case TypeKind.U32: { | |
| 624 | 615 | ret = module.createUnary(UnaryOp.PopcntI32, arg0); | |
@@ -2525,11 +2516,8 @@ export function compileCall( | |||
| 2525 | 2516 | case TypeKind.I16: | |
| 2526 | 2517 | case TypeKind.U8: | |
| 2527 | 2518 | case TypeKind.U16: | |
| 2528 | - case TypeKind.BOOL: { | ||
| 2529 | - ret = module.createSelect(arg0, arg1, arg2); | ||
| 2530 | - break; | ||
| 2531 | - } | ||
| 2532 | - default: { // any other value type | ||
| 2519 | + case TypeKind.BOOL: | ||
| 2520 | + default: { | ||
| 2533 | 2521 | ret = module.createSelect(arg0, arg1, arg2); | |
| 2534 | 2522 | break; | |
| 2535 | 2523 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -4499,7 +4499,6 @@ export class Compiler extends DiagnosticEmitter { | |||
| 4499 | 4499 | ||
| 4500 | 4500 | // simplify if cloning left without side effects is possible | |
| 4501 | 4501 | if (expr = module.cloneExpression(leftExpr, true, 0)) { | |
| 4502 | - this.makeIsTrueish(leftExpr, this.currentType); | ||
| 4503 | 4502 | expr = module.createIf( | |
| 4504 | 4503 | this.makeIsTrueish(leftExpr, this.currentType), | |
| 4505 | 4504 | rightExpr, | |
@@ -6420,14 +6419,16 @@ export class Compiler extends DiagnosticEmitter { | |||
| 6420 | 6419 | var arrayOffset = arraySegment.offset; | |
| 6421 | 6420 | if (hasGC) arrayOffset = i64_add(arrayOffset, i64_new(gcHeaderSize)); | |
| 6422 | 6421 | this.currentType = arrayInstance.type; | |
| 6422 | + var buffer_offset = pos + arrayInstance.offsetof("buffer_"); | ||
| 6423 | + var length_offset = pos + arrayInstance.offsetof("length_"); | ||
| 6423 | 6424 | if (usizeTypeSize == 8) { | |
| 6424 | - writeI64(bufferOffset, buf, pos + arrayInstance.offsetof("buffer_")); | ||
| 6425 | - writeI32(length, buf, pos + arrayInstance.offsetof("length_")); | ||
| 6425 | + writeI64(bufferOffset, buf, buffer_offset); | ||
| 6426 | + writeI32(length, buf, length_offset); | ||
| 6426 | 6427 | return this.module.createI64(i64_low(arrayOffset), i64_high(arrayOffset)); | |
| 6427 | 6428 | } else { | |
| 6428 | 6429 | assert(i64_is_u32(bufferOffset)); | |
| 6429 | - writeI32(i64_low(bufferOffset), buf, pos + arrayInstance.offsetof("buffer_")); | ||
| 6430 | - writeI32(length, buf, pos + arrayInstance.offsetof("length_")); | ||
| 6430 | + writeI32(i64_low(bufferOffset), buf, buffer_offset); | ||
| 6431 | + writeI32(length, buf, length_offset); | ||
| 6431 | 6432 | assert(i64_is_u32(arrayOffset)); | |
| 6432 | 6433 | return this.module.createI32(i64_low(arrayOffset)); | |
| 6433 | 6434 | } | |
@@ -6448,12 +6449,13 @@ export class Compiler extends DiagnosticEmitter { | |||
| 6448 | 6449 | var nativeElementType = elementType.toNativeType(); | |
| 6449 | 6450 | var isStatic = true; | |
| 6450 | 6451 | for (let i = 0; i < length; ++i) { | |
| 6451 | - let expr = expressions[i] | ||
| 6452 | - ? this.compileExpression(<Expression>expressions[i], elementType, ConversionKind.IMPLICIT, WrapMode.NONE) | ||
| 6452 | + let expression = expressions[i]; | ||
| 6453 | + let expr = expression | ||
| 6454 | + ? this.compileExpression(<Expression>expression, elementType, ConversionKind.IMPLICIT, WrapMode.NONE) | ||
| 6453 | 6455 | : elementType.toNativeZero(module); | |
| 6454 | 6456 | compiledValues[i] = expr; | |
| 6455 | 6457 | if (isStatic) { | |
| 6456 | - expr = module.precomputeExpression(compiledValues[i]); | ||
| 6458 | + expr = module.precomputeExpression(expr); | ||
| 6457 | 6459 | if (getExpressionId(expr) == ExpressionId.Const) { | |
| 6458 | 6460 | assert(getExpressionType(expr) == nativeElementType); | |
| 6459 | 6461 | constantValues[i] = expr; | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1614,33 +1614,34 @@ export class Program extends DiagnosticEmitter { | |||
| 1614 | 1614 | element = assert(parent.lookupInSelf(name)); // possibly merged | |
| 1615 | 1615 | var members = declaration.members; | |
| 1616 | 1616 | for (let i = 0, k = members.length; i < k; ++i) { | |
| 1617 | - switch (members[i].kind) { | ||
| 1617 | + let member = members[i]; | ||
| 1618 | + switch (member.kind) { | ||
| 1618 | 1619 | case NodeKind.CLASSDECLARATION: { | |
| 1619 | - this.initializeClass(<ClassDeclaration>members[i], element, queuedExtends, queuedImplements); | ||
| 1620 | + this.initializeClass(<ClassDeclaration>member, element, queuedExtends, queuedImplements); | ||
| 1620 | 1621 | break; | |
| 1621 | 1622 | } | |
| 1622 | 1623 | case NodeKind.ENUMDECLARATION: { | |
| 1623 | - this.initializeEnum(<EnumDeclaration>members[i], element); | ||
| 1624 | + this.initializeEnum(<EnumDeclaration>member, element); | ||
| 1624 | 1625 | break; | |
| 1625 | 1626 | } | |
| 1626 | 1627 | case NodeKind.FUNCTIONDECLARATION: { | |
| 1627 | - this.initializeFunction(<FunctionDeclaration>members[i], element); | ||
| 1628 | + this.initializeFunction(<FunctionDeclaration>member, element); | ||
| 1628 | 1629 | break; | |
| 1629 | 1630 | } | |
| 1630 | 1631 | case NodeKind.INTERFACEDECLARATION: { | |
| 1631 | - this.initializeInterface(<InterfaceDeclaration>members[i], element); | ||
| 1632 | + this.initializeInterface(<InterfaceDeclaration>member, element); | ||
| 1632 | 1633 | break; | |
| 1633 | 1634 | } | |
| 1634 | 1635 | case NodeKind.NAMESPACEDECLARATION: { | |
| 1635 | - this.initializeNamespace(<NamespaceDeclaration>members[i], element, queuedExtends, queuedImplements); | ||
| 1636 | + this.initializeNamespace(<NamespaceDeclaration>member, element, queuedExtends, queuedImplements); | ||
| 1636 | 1637 | break; | |
| 1637 | 1638 | } | |
| 1638 | 1639 | case NodeKind.TYPEDECLARATION: { | |
| 1639 | - this.initializeTypeDefinition(<TypeDeclaration>members[i], element); | ||
| 1640 | + this.initializeTypeDefinition(<TypeDeclaration>member, element); | ||
| 1640 | 1641 | break; | |
| 1641 | 1642 | } | |
| 1642 | 1643 | case NodeKind.VARIABLE: { | |
| 1643 | - this.initializeVariables(<VariableStatement>members[i], element); | ||
| 1644 | + this.initializeVariables(<VariableStatement>member, element); | ||
| 1644 | 1645 | break; | |
| 1645 | 1646 | } | |
| 1646 | 1647 | default: assert(false); // namespace member expected | |
| Back | FazBrowse Home | New Git URL |
0 commit comments