@@ -1434,6 +1434,14 @@ export class Module {
1434
1434
binaryen . _BinaryenSetOneCallerInlineMaxSize ( size ) ;
1435
1435
}
1436
1436
1437
+ getAllowInliningFunctionsWithLoops ( ) : bool {
1438
+ return binaryen . _BinaryenGetAllowInliningFunctionsWithLoops ( ) ;
1439
+ }
1440
+
1441
+ setAllowInliningFunctionsWithLoops ( enabled : bool ) : void {
1442
+ binaryen . _BinaryenSetAllowInliningFunctionsWithLoops ( enabled ) ;
1443
+ }
1444
+
1437
1445
// meta (module)
1438
1446
1439
1447
getFeatures ( ) : FeatureFlags {
@@ -1474,23 +1482,26 @@ export class Module {
1474
1482
// Implicitly run costly non-LLVM optimizations on -O3 or -Oz
1475
1483
if ( optimizeLevel >= 3 || shrinkLevel >= 2 ) optimizeLevel = 4 ;
1476
1484
1477
- binaryen . _BinaryenSetOptimizeLevel ( optimizeLevel ) ;
1478
- binaryen . _BinaryenSetShrinkLevel ( shrinkLevel ) ;
1479
- binaryen . _BinaryenSetDebugInfo ( debugInfo ) ;
1485
+ this . setOptimizeLevel ( optimizeLevel ) ;
1486
+ this . setShrinkLevel ( shrinkLevel ) ;
1487
+ this . setDebugInfo ( debugInfo ) ;
1488
+ this . clearPassArguments ( ) ;
1480
1489
1481
1490
// Tweak inlining limits based on optimization levels
1482
- if ( optimizeLevel >= 2 && shrinkLevel === 0 ) {
1483
- binaryen . _BinaryenSetAlwaysInlineMaxSize ( 12 ) ;
1484
- binaryen . _BinaryenSetFlexibleInlineMaxSize ( 70 ) ;
1485
- binaryen . _BinaryenSetOneCallerInlineMaxSize ( 200 ) ;
1491
+ if ( optimizeLevel >= 2 && shrinkLevel == 0 ) {
1492
+ this . setAlwaysInlineMaxSize ( 12 ) ;
1493
+ this . setFlexibleInlineMaxSize ( 70 ) ;
1494
+ this . setOneCallerInlineMaxSize ( 200 ) ;
1495
+ this . setAllowInliningFunctionsWithLoops ( optimizeLevel >= 3 ) ;
1486
1496
} else {
1487
- binaryen . _BinaryenSetAlwaysInlineMaxSize (
1497
+ this . setAlwaysInlineMaxSize (
1488
1498
optimizeLevel == 0 && shrinkLevel >= 0
1489
1499
? 2
1490
1500
: 4
1491
1501
) ;
1492
- binaryen . _BinaryenSetFlexibleInlineMaxSize ( 65 ) ;
1493
- binaryen . _BinaryenSetOneCallerInlineMaxSize ( 80 ) ;
1502
+ this . setFlexibleInlineMaxSize ( 65 ) ;
1503
+ this . setOneCallerInlineMaxSize ( 80 ) ;
1504
+ this . setAllowInliningFunctionsWithLoops ( false ) ;
1494
1505
}
1495
1506
1496
1507
// Pass order here differs substantially from Binaryen's defaults
@@ -1596,7 +1607,7 @@ export class Module {
1596
1607
if ( optimizeLevel >= 2 || shrinkLevel >= 2 ) {
1597
1608
passes . push ( "inlining-optimizing" ) ;
1598
1609
}
1599
- if ( binaryen . _BinaryenGetLowMemoryUnused ( ) ) {
1610
+ if ( this . getLowMemoryUnused ( ) ) {
1600
1611
if ( optimizeLevel >= 3 || shrinkLevel >= 1 ) {
1601
1612
passes . push ( "optimize-added-constants-propagate" ) ;
1602
1613
} else {
0 commit comments