@markw65/monkeyc-optimizer 1.1.15 → 1.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -26,7 +26,7 @@ export declare function findNamesInScope(declStack: StateNode[][], pattern: stri
26
26
  parent: StateNode;
27
27
  depth: number;
28
28
  }][];
29
- export declare function mapVarDeclsByType(state: ProgramStateAnalysis, decls: StateNodeDecl[], node: mctree.Node, typeMap: TypeMap | null | undefined): (ModuleStateNode | FunctionStateNode | ClassStateNode | TypedefStateNode | ProgramStateNode | import("./optimizer-types").BlockStateNode | VariableStateNode | EnumStateNode | mctree.EnumStringMember | mctree.Identifier | mctree.AsIdentifier)[];
29
+ export declare function mapVarDeclsByType(state: ProgramStateAnalysis, decls: StateNodeDecl[], node: mctree.Node, typeMap: TypeMap | null | undefined): (mctree.Identifier | mctree.EnumStringMember | mctree.AsIdentifier | ModuleStateNode | FunctionStateNode | ClassStateNode | TypedefStateNode | ProgramStateNode | import("./optimizer-types").BlockStateNode | VariableStateNode | EnumStateNode)[];
30
30
  export declare function formatAstLongLines(node: mctree.Node): string;
31
31
  export declare function createDocumentationMap(functionDocumentation: {
32
32
  name: string;
@@ -1,4 +1,6 @@
1
1
  export declare function logger(module: string, level: number, message: unknown): void;
2
2
  export declare function wouldLog(module: string, level: number): boolean;
3
+ export declare function bumpLogging(module: string | null, amount: number): void;
4
+ export declare function setBanner(b: (() => string) | null): void;
3
5
  export declare function log(message: unknown): void;
4
6
  export declare function setLogger(log: (message: string) => void): void;
@@ -7,8 +7,8 @@ import { xmlUtil } from "./sdk-util";
7
7
  import { TypeMap } from "./type-flow/interp";
8
8
  import { copyRecursiveAsNeeded } from "./util";
9
9
  export * from "./optimizer-types";
10
- export { display } from "./type-flow/types";
11
- export { copyRecursiveAsNeeded, get_jungle, JungleBuildDependencies, JungleError, JungleResourceMap, launchSimulator, manifestProducts, mctree, ResolvedJungle, simulateProgram, };
10
+ export { display, ExactOrUnion } from "./type-flow/types";
11
+ export { copyRecursiveAsNeeded, get_jungle, JungleBuildDependencies, JungleError, JungleResourceMap, launchSimulator, manifestProducts, mctree, ResolvedJungle, simulateProgram, TypeMap, };
12
12
  export declare const defaultConfig: {
13
13
  outputPath: string;
14
14
  workspace: string;
@@ -0,0 +1,2 @@
1
+ import { Block, Context, FuncEntry } from "./bytecode";
2
+ export declare function optimizeArrayInit(func: FuncEntry, block: Block, index: number, context: Context): boolean;
@@ -29,6 +29,7 @@ export declare type Context = {
29
29
  bytecodes: Bytecode[];
30
30
  key?: crypto.KeyObject;
31
31
  debugXml: xmlUtil.Document;
32
+ nextOffset: number;
32
33
  };
33
34
  export declare type Block = {
34
35
  offset: number;
@@ -36,6 +37,7 @@ export declare type Block = {
36
37
  try?: ExceptionEntry[];
37
38
  next?: number;
38
39
  taken?: number;
40
+ exsucc?: number;
39
41
  preds?: Set<number>;
40
42
  };
41
43
  export declare type FuncEntry = {
@@ -46,12 +48,17 @@ export declare type FuncEntry = {
46
48
  export declare function offsetToString(offset: number): string;
47
49
  export declare function fixSectionSize(section: SectionKinds, sections: Context["sections"], newSize: number): void;
48
50
  export declare function optimizeBytecode(context: Context): void;
51
+ export declare function functionBanner(func: FuncEntry, context: Context | null, pass: string): () => string;
49
52
  export declare function printFunction(func: FuncEntry, context: Context | null): void;
53
+ export declare function functionToString(func: FuncEntry, context: Context | null): string;
50
54
  export declare function blockToString(block: Block, context: Context | null): string;
51
55
  export declare function bytecodeToString(bytecode: Bytecode, symbolTable: SymbolTable | null | undefined): string;
52
56
  export declare function findFunctions({ bytecodes, symbolTable, exceptionsMap, }: Context): Map<number, FuncEntry>;
53
57
  export declare function makeArgless(bc: Bytecode, op: Opcodes): void;
54
58
  export declare function equalBlocks(b1: Block, b2: Block): boolean;
59
+ export declare function removeBlock(func: FuncEntry, offset: number): void;
55
60
  export declare function removePred(func: FuncEntry, target: number, pred: number): void;
56
61
  export declare function addPred(func: FuncEntry, target: number, pred: number): void;
57
- export declare function redirect(func: FuncEntry, block: Block, from: number, to: number): boolean;
62
+ export declare function redirect(func: FuncEntry, block: Block, from: number, to: number | null | undefined): boolean;
63
+ export declare function splitBlock(func: FuncEntry, block: Block, offset: number): void;
64
+ export declare function countFallthroughPreds(func: FuncEntry, block: Block): number;
@@ -1,2 +1,2 @@
1
- import { FuncEntry, Context } from "./bytecode";
1
+ import { Context, FuncEntry } from "./bytecode";
2
2
  export declare function localDCE(func: FuncEntry, context: Context): boolean;
@@ -1,4 +1,5 @@
1
1
  import { Context, FuncEntry } from "./bytecode";
2
+ import { ExceptionsMap } from "./exceptions";
2
3
  import { LineNumber } from "./linenum";
3
4
  export declare type LocalsMap = Map<number, {
4
5
  startPc: number;
@@ -8,5 +9,6 @@ export declare type UpdateInfo = {
8
9
  offsetMap: Map<number, number>;
9
10
  localsMap: Map<FuncEntry, LocalsMap>;
10
11
  lineMap: LineNumber[];
12
+ exceptionsMap: ExceptionsMap;
11
13
  };
12
14
  export declare function emitFunc(func: FuncEntry, view: DataView, start: number, updateInfo: UpdateInfo, context: Context): number;
@@ -1,4 +1,5 @@
1
1
  import { Context } from "./bytecode";
2
+ import { UpdateInfo } from "./emit";
2
3
  export declare type ExceptionEntry = {
3
4
  tryStart: number;
4
5
  tryEnd: number;
@@ -6,4 +7,4 @@ export declare type ExceptionEntry = {
6
7
  };
7
8
  export declare type ExceptionsMap = Map<number, ExceptionEntry[]>;
8
9
  export declare function parseExceptions(view: DataView): ExceptionsMap;
9
- export declare function fixupExceptions(context: Context, offsetMap: Map<number, number>): void;
10
+ export declare function fixupExceptions(context: Context, updateInfo: UpdateInfo): void;
@@ -1,5 +1,5 @@
1
1
  import { mctree } from "@markw65/prettier-plugin-monkeyc";
2
- import { NodeEquivMap } from "src/type-flow";
2
+ import { NodeEquivMap } from "../type-flow";
3
3
  import { FunctionStateNode, ProgramStateAnalysis } from "../optimizer-types";
4
4
  import { TypeFlowBlock, TypeStateKey } from "./type-flow-util";
5
5
  export declare type CopyPropStores = Map<mctree.Node, {
@@ -1,5 +1,5 @@
1
- import * as glob from "fast-glob";
2
- export { logger, log, wouldLog } from "./logger";
1
+ import glob from "fast-glob";
2
+ export { logger, log, wouldLog, setBanner, bumpLogging } from "./logger";
3
3
  export declare function globa(pattern: string, options?: glob.Options & {
4
4
  mark?: boolean;
5
5
  }): Promise<Array<string>>;