@markw65/monkeyc-optimizer 1.1.8 → 1.1.9

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 | EnumStateNode | mctree.EnumStringMember | mctree.Identifier | mctree.AsIdentifier | import("./optimizer-types").BlockStateNode | VariableStateNode)[];
29
+ export declare function mapVarDeclsByType(state: ProgramStateAnalysis, decls: StateNodeDecl[], node: mctree.Node, typeMap: TypeMap | null | undefined): (ModuleStateNode | FunctionStateNode | ClassStateNode | TypedefStateNode | ProgramStateNode | VariableStateNode | import("./optimizer-types").BlockStateNode | EnumStateNode | mctree.EnumStringMember | mctree.Identifier | mctree.AsIdentifier)[];
30
30
  export declare function formatAstLongLines(node: mctree.Node): string;
31
31
  export declare function createDocumentationMap(functionDocumentation: {
32
32
  name: string;
@@ -47,7 +47,7 @@ export declare enum FlowKind {
47
47
  INSTANCEOF = 6,
48
48
  NOTINSTANCE = 7
49
49
  }
50
- interface FlowEventDecl extends BaseEvent {
50
+ export interface FlowEventDecl extends BaseEvent {
51
51
  type: "flw";
52
52
  node: mctree.BinaryExpression | mctree.UnaryExpression;
53
53
  decl?: undefined;
@@ -56,7 +56,7 @@ interface FlowEventDecl extends BaseEvent {
56
56
  right_decl: EventDecl;
57
57
  right_node?: undefined;
58
58
  }
59
- interface FlowEventNode extends BaseEvent {
59
+ export interface FlowEventNode extends BaseEvent {
60
60
  type: "flw";
61
61
  node: mctree.BinaryExpression | mctree.UnaryExpression;
62
62
  decl?: undefined;
@@ -65,7 +65,7 @@ interface FlowEventNode extends BaseEvent {
65
65
  right_decl?: undefined;
66
66
  right_node: mctree.Expression;
67
67
  }
68
- interface FlowEventTruthy extends BaseEvent {
68
+ export interface FlowEventTruthy extends BaseEvent {
69
69
  type: "flw";
70
70
  node: mctree.Node;
71
71
  decl?: undefined;
@@ -74,7 +74,7 @@ interface FlowEventTruthy extends BaseEvent {
74
74
  right_decl?: undefined;
75
75
  right_node?: undefined;
76
76
  }
77
- interface FlowEventInstanceof extends BaseEvent {
77
+ export interface FlowEventInstanceof extends BaseEvent {
78
78
  type: "flw";
79
79
  node: mctree.InstanceofExpression | mctree.UnaryExpression;
80
80
  decl?: undefined;
@@ -106,4 +106,3 @@ export declare class DataflowQueue {
106
106
  dequeue(): DataFlowBlock;
107
107
  empty(): boolean;
108
108
  }
109
- export {};
@@ -1,5 +1,10 @@
1
1
  import { mctree } from "@markw65/prettier-plugin-monkeyc";
2
+ import { NodeEquivMap } from "src/type-flow";
2
3
  import { FunctionStateNode, ProgramStateAnalysis } from "../optimizer-types";
3
- import { TypeFlowBlock } from "./type-flow-util";
4
- export declare function findDeadStores(graph: TypeFlowBlock, logThisRun: boolean): Set<mctree.Node>;
4
+ import { TypeFlowBlock, TypeStateKey } from "./type-flow-util";
5
+ export declare function findDeadStores(func: FunctionStateNode, graph: TypeFlowBlock, nodeEquivs: NodeEquivMap | null, logThisRun: boolean): {
6
+ deadStores: Set<mctree.Node>;
7
+ locals: Set<TypeStateKey>;
8
+ localConflicts: Map<TypeStateKey, Set<TypeStateKey>> | null;
9
+ };
5
10
  export declare function eliminateDeadStores(state: ProgramStateAnalysis, func: FunctionStateNode, graph: TypeFlowBlock, logThisRun: boolean): boolean;
File without changes
@@ -0,0 +1,2 @@
1
+ import { FunctionStateNode, ProgramStateAnalysis } from "../optimizer-types";
2
+ export declare function minimizeLocals(state: ProgramStateAnalysis, func: FunctionStateNode): void;
@@ -26,7 +26,7 @@ export declare const enum TypeTag {
26
26
  Typedef = 262144,
27
27
  Any = 524287
28
28
  }
29
- export declare function typeTagName(tag: TypeTag): "Never" | "Null" | "False" | "True" | "Boolean" | "Number" | "Long" | "Float" | "Double" | "Decimal" | "Numeric" | "Char" | "String" | "Array" | "Dictionary" | "Method" | "Module" | "Function" | "Class" | "Object" | "Enum" | "Symbol" | "Typedef" | "Any";
29
+ export declare function typeTagName(tag: TypeTag): "Number" | "Float" | "Double" | "Long" | "String" | "Char" | "Boolean" | "Null" | "Never" | "False" | "True" | "Decimal" | "Numeric" | "Array" | "Dictionary" | "Method" | "Module" | "Function" | "Class" | "Object" | "Enum" | "Symbol" | "Typedef" | "Any";
30
30
  export declare const LastTypeTag = TypeTag.Typedef;
31
31
  export declare const SingletonTypeTagsConst: number;
32
32
  export declare const UnionDataTypeTagsConst: number;
@@ -1,9 +1,22 @@
1
1
  import { mctree } from "@markw65/prettier-plugin-monkeyc";
2
+ import { EventDecl } from "./data-flow";
2
3
  import { FunctionStateNode, ProgramStateAnalysis, StateNode } from "./optimizer-types";
3
4
  import { InterpState } from "./type-flow/interp";
5
+ import { TypeStateKey } from "./type-flow/type-flow-util";
4
6
  import { ExactOrUnion } from "./type-flow/types";
5
7
  export declare const missingNullWorkaround = true;
8
+ export declare type NodeEquivMap = Map<mctree.Node, {
9
+ decl: EventDecl;
10
+ equiv: Array<EventDecl>;
11
+ }>;
6
12
  export declare function buildTypeInfo(state: ProgramStateAnalysis, func: FunctionStateNode, optimizeEquivalencies: boolean): InterpState | undefined;
13
+ export declare function buildConflictGraph(state: ProgramStateAnalysis, func: FunctionStateNode): {
14
+ graph: import("./control-flow").Block<import("./data-flow").RefEvent | import("./data-flow").KillEvent | import("./data-flow").DefEvent | import("./data-flow").ModEvent | import("./data-flow").FlowEventDecl | import("./data-flow").FlowEventNode | import("./data-flow").FlowEventTruthy | import("./data-flow").FlowEventInstanceof | import("./data-flow").ExnEvent>;
15
+ localConflicts: Map<TypeStateKey, Set<TypeStateKey>> | null;
16
+ locals: Set<TypeStateKey>;
17
+ identifiers: Set<string>;
18
+ logThisRun: boolean;
19
+ } | undefined;
7
20
  export declare function findObjectDeclsByProperty(state: ProgramStateAnalysis, object: ExactOrUnion, next: mctree.DottedMemberExpression): readonly [null, null] | [StateNode[], StateNode[]];
8
21
  export declare function resolveDottedMember(istate: InterpState, object: ExactOrUnion, next: mctree.DottedMemberExpression): {
9
22
  mayThrow: boolean;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@markw65/monkeyc-optimizer",
3
3
  "type": "module",
4
- "version": "1.1.8",
4
+ "version": "1.1.9",
5
5
  "description": "Source to source optimizer for Garmin Monkey C code",
6
6
  "main": "build/optimizer.cjs",
7
7
  "types": "build/src/optimizer.d.ts",
@@ -40,7 +40,7 @@
40
40
  "author": "markw65",
41
41
  "license": "MIT",
42
42
  "dependencies": {
43
- "@markw65/prettier-plugin-monkeyc": "^1.0.42"
43
+ "@markw65/prettier-plugin-monkeyc": "^1.0.43"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@types/chai": "^4.3.4",