@markw65/monkeyc-optimizer 1.1.32 → 1.1.33
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.
- package/README.md +14 -0
- package/build/api.cjs +31 -31
- package/build/{chunk-NUE3G2QE.cjs → chunk-7ANQTFGD.cjs} +22 -8
- package/build/optimizer.cjs +17 -17
- package/build/sdk-util.cjs +14 -14
- package/build/src/projects.d.ts +1 -0
- package/build/worker-thread.cjs +3 -3
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -922,3 +922,17 @@ No functional change, just fixes a typo that broke the typescript exports.
|
|
|
922
922
|
- sdk-6.2.x fixes [this finally bug](https://forums.garmin.com/developer/connect-iq/i/bug-reports/finally-doesn-t-work-as-expected), so that now all the examples work correctly (ie the `finally` block always executes, as expected, no matter how you exit the `try` or `catch` blocks). I've updated the way the control flow graph is built to match this behavior.
|
|
923
923
|
|
|
924
924
|
- sdk-6.2.x fixes [this continue in switch issue](https://forums.garmin.com/developer/connect-iq/i/bug-reports/continue-in-a-switch-statement-behaves-surprisingly), by making `continue` in a `switch` continue the loop containing the switch (or its a compile time error if there's no loop). This matches the behavior of C and C++, for example. I've updated the optimizer to interpret `continue` appropriately, depending on the sdk version.
|
|
925
|
+
|
|
926
|
+
### 1.1.33
|
|
927
|
+
|
|
928
|
+
- Update to [@markw65/prettier-plugin-monkeyc@1.0.51](https://github.com/markw65/prettier-plugin-monkeyc#1051)
|
|
929
|
+
|
|
930
|
+
- Makes it compatible with prettier@3.0.0
|
|
931
|
+
|
|
932
|
+
- Bug fixes
|
|
933
|
+
|
|
934
|
+
- Fix a problem that could incorrectly optimize an array-init
|
|
935
|
+
|
|
936
|
+
- Optimizations
|
|
937
|
+
|
|
938
|
+
- Enable the array-init optimization in a few more cases
|
package/build/api.cjs
CHANGED
|
@@ -18,44 +18,44 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var api_exports = {};
|
|
20
20
|
__export(api_exports, {
|
|
21
|
-
checkCompilerVersion: () =>
|
|
22
|
-
collectNamespaces: () =>
|
|
23
|
-
createDocumentationMap: () =>
|
|
24
|
-
diagnostic: () =>
|
|
25
|
-
diagnosticHelper: () =>
|
|
26
|
-
findNamesInScope: () =>
|
|
27
|
-
findUsingForNode: () =>
|
|
28
|
-
formatAst: () =>
|
|
29
|
-
formatAstLongLines: () =>
|
|
30
|
-
getApiFunctionInfo: () =>
|
|
31
|
-
getApiMapping: () =>
|
|
32
|
-
getSuperClasses: () =>
|
|
21
|
+
checkCompilerVersion: () => import_chunk_7ANQTFGD.checkCompilerVersion,
|
|
22
|
+
collectNamespaces: () => import_chunk_7ANQTFGD.collectNamespaces,
|
|
23
|
+
createDocumentationMap: () => import_chunk_7ANQTFGD.createDocumentationMap,
|
|
24
|
+
diagnostic: () => import_chunk_7ANQTFGD.diagnostic,
|
|
25
|
+
diagnosticHelper: () => import_chunk_7ANQTFGD.diagnosticHelper,
|
|
26
|
+
findNamesInScope: () => import_chunk_7ANQTFGD.findNamesInScope,
|
|
27
|
+
findUsingForNode: () => import_chunk_7ANQTFGD.findUsingForNode,
|
|
28
|
+
formatAst: () => import_chunk_7ANQTFGD.formatAst,
|
|
29
|
+
formatAstLongLines: () => import_chunk_7ANQTFGD.formatAstLongLines,
|
|
30
|
+
getApiFunctionInfo: () => import_chunk_7ANQTFGD.getApiFunctionInfo,
|
|
31
|
+
getApiMapping: () => import_chunk_7ANQTFGD.getApiMapping,
|
|
32
|
+
getSuperClasses: () => import_chunk_7ANQTFGD.getSuperClasses,
|
|
33
33
|
hasProperty: () => import_chunk_MBTLUWXR.hasProperty,
|
|
34
|
-
isClassVariable: () =>
|
|
35
|
-
isLocal: () =>
|
|
36
|
-
isLookupCandidate: () =>
|
|
37
|
-
isStateNode: () =>
|
|
38
|
-
lookupByFullName: () =>
|
|
39
|
-
lookupNext: () =>
|
|
40
|
-
lookupResultContains: () =>
|
|
41
|
-
lookupWithType: () =>
|
|
42
|
-
makeToyboxLink: () =>
|
|
43
|
-
mapVarDeclsByType: () =>
|
|
44
|
-
markInvokeClassMethod: () =>
|
|
45
|
-
parseSdkVersion: () =>
|
|
46
|
-
sameLookupResult: () =>
|
|
34
|
+
isClassVariable: () => import_chunk_7ANQTFGD.isClassVariable,
|
|
35
|
+
isLocal: () => import_chunk_7ANQTFGD.isLocal,
|
|
36
|
+
isLookupCandidate: () => import_chunk_7ANQTFGD.isLookupCandidate,
|
|
37
|
+
isStateNode: () => import_chunk_7ANQTFGD.isStateNode,
|
|
38
|
+
lookupByFullName: () => import_chunk_7ANQTFGD.lookupByFullName,
|
|
39
|
+
lookupNext: () => import_chunk_7ANQTFGD.lookupNext,
|
|
40
|
+
lookupResultContains: () => import_chunk_7ANQTFGD.lookupResultContains,
|
|
41
|
+
lookupWithType: () => import_chunk_7ANQTFGD.lookupWithType,
|
|
42
|
+
makeToyboxLink: () => import_chunk_7ANQTFGD.makeToyboxLink,
|
|
43
|
+
mapVarDeclsByType: () => import_chunk_7ANQTFGD.mapVarDeclsByType,
|
|
44
|
+
markInvokeClassMethod: () => import_chunk_7ANQTFGD.markInvokeClassMethod,
|
|
45
|
+
parseSdkVersion: () => import_chunk_7ANQTFGD.parseSdkVersion,
|
|
46
|
+
sameLookupResult: () => import_chunk_7ANQTFGD.sameLookupResult,
|
|
47
47
|
traverseAst: () => import_chunk_MBTLUWXR.traverseAst,
|
|
48
|
-
variableDeclarationName: () =>
|
|
49
|
-
visitReferences: () =>
|
|
50
|
-
visit_resources: () =>
|
|
51
|
-
visitorNode: () =>
|
|
48
|
+
variableDeclarationName: () => import_chunk_7ANQTFGD.variableDeclarationName,
|
|
49
|
+
visitReferences: () => import_chunk_7ANQTFGD.visitReferences,
|
|
50
|
+
visit_resources: () => import_chunk_7ANQTFGD.visit_resources,
|
|
51
|
+
visitorNode: () => import_chunk_7ANQTFGD.visitorNode
|
|
52
52
|
});
|
|
53
53
|
module.exports = __toCommonJS(api_exports);
|
|
54
|
-
var
|
|
54
|
+
var import_chunk_7ANQTFGD = require("./chunk-7ANQTFGD.cjs");
|
|
55
55
|
var import_chunk_PVBIKZYZ = require("./chunk-PVBIKZYZ.cjs");
|
|
56
56
|
var import_chunk_MBTLUWXR = require("./chunk-MBTLUWXR.cjs");
|
|
57
57
|
var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
|
|
58
|
-
(0,
|
|
58
|
+
(0, import_chunk_7ANQTFGD.init_api)();
|
|
59
59
|
// Annotate the CommonJS export names for ESM import in node:
|
|
60
60
|
0 && (module.exports = {
|
|
61
61
|
checkCompilerVersion,
|
|
@@ -26,8 +26,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
29
|
+
var chunk_7ANQTFGD_exports = {};
|
|
30
|
+
__export(chunk_7ANQTFGD_exports, {
|
|
31
31
|
EnumTagsConst: () => EnumTagsConst,
|
|
32
32
|
LastTypeTag: () => LastTypeTag,
|
|
33
33
|
ObjectLikeTagsConst: () => ObjectLikeTagsConst,
|
|
@@ -122,7 +122,7 @@ __export(chunk_NUE3G2QE_exports, {
|
|
|
122
122
|
visitorNode: () => visitorNode,
|
|
123
123
|
xml_util_exports: () => xml_util_exports
|
|
124
124
|
});
|
|
125
|
-
module.exports = __toCommonJS(
|
|
125
|
+
module.exports = __toCommonJS(chunk_7ANQTFGD_exports);
|
|
126
126
|
var import_chunk_PVBIKZYZ = require("./chunk-PVBIKZYZ.cjs");
|
|
127
127
|
var import_chunk_MBTLUWXR = require("./chunk-MBTLUWXR.cjs");
|
|
128
128
|
var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
|
|
@@ -22562,6 +22562,7 @@ function optimizeArrayInit(func, block, index, context, interpState) {
|
|
|
22562
22562
|
interpState = cloneState2(null);
|
|
22563
22563
|
}
|
|
22564
22564
|
const putvStarts = [];
|
|
22565
|
+
const dupsToFix = [];
|
|
22565
22566
|
let i;
|
|
22566
22567
|
let initInst = null;
|
|
22567
22568
|
let initType = null;
|
|
@@ -22594,6 +22595,12 @@ function optimizeArrayInit(func, block, index, context, interpState) {
|
|
|
22594
22595
|
usedLocals |= 1n << BigInt(bc.arg);
|
|
22595
22596
|
}
|
|
22596
22597
|
const delta = interpState.stack.length - depth;
|
|
22598
|
+
if (delta < 0) {
|
|
22599
|
+
break;
|
|
22600
|
+
}
|
|
22601
|
+
if (bc.op === 46 && bc.arg >= delta - 1) {
|
|
22602
|
+
dupsToFix[k] = putvStarts.length;
|
|
22603
|
+
}
|
|
22597
22604
|
if (delta === 3) {
|
|
22598
22605
|
const t = interpState.stack[interpState.stack.length - 1].type;
|
|
22599
22606
|
if (bc.op === 18) {
|
|
@@ -22607,9 +22614,6 @@ function optimizeArrayInit(func, block, index, context, interpState) {
|
|
|
22607
22614
|
}
|
|
22608
22615
|
thisInit = null;
|
|
22609
22616
|
}
|
|
22610
|
-
if (delta < 0 || bc.op === 46 && bc.arg >= delta - 1) {
|
|
22611
|
-
break;
|
|
22612
|
-
}
|
|
22613
22617
|
}
|
|
22614
22618
|
if (found === i)
|
|
22615
22619
|
break;
|
|
@@ -22677,6 +22681,11 @@ function optimizeArrayInit(func, block, index, context, interpState) {
|
|
|
22677
22681
|
/* aputv */
|
|
22678
22682
|
);
|
|
22679
22683
|
};
|
|
22684
|
+
dupsToFix.forEach((x, n) => {
|
|
22685
|
+
const bc = block.bytecodes[n];
|
|
22686
|
+
(0, import_node_assert9.default)(bc.op === 46 && bc.arg >= 2);
|
|
22687
|
+
bc.arg -= 2;
|
|
22688
|
+
});
|
|
22680
22689
|
convertAputv(i - 1);
|
|
22681
22690
|
for (let i2 = putvStarts.length; i2--; ) {
|
|
22682
22691
|
const offset = putvStarts[i2];
|
|
@@ -22796,6 +22805,11 @@ ${blockToString(block, context)}`
|
|
|
22796
22805
|
if (local >= 0) {
|
|
22797
22806
|
block.bytecodes.splice(i, 0, bytecode(2, void 0));
|
|
22798
22807
|
}
|
|
22808
|
+
dupsToFix.forEach((x, n) => {
|
|
22809
|
+
const bc = block.bytecodes[n];
|
|
22810
|
+
(0, import_node_assert9.default)(bc.op === 46 && bc.arg >= 2);
|
|
22811
|
+
bc.arg += (putvStarts.length - x - 1) * 2;
|
|
22812
|
+
});
|
|
22799
22813
|
for (let i2 = putvStarts.length; i2-- > 1; ) {
|
|
22800
22814
|
block.bytecodes.splice(putvStarts[i2], 2);
|
|
22801
22815
|
}
|
|
@@ -29893,7 +29907,7 @@ async function generateOneConfig(buildConfig, manifestXML, dependencyFiles, conf
|
|
|
29893
29907
|
const opt_time = await (0, import_chunk_PVBIKZYZ.first_modified)(
|
|
29894
29908
|
Object.values(fnMap).map((v) => v.output)
|
|
29895
29909
|
);
|
|
29896
|
-
if (source_time < opt_time &&
|
|
29910
|
+
if (source_time < opt_time && 1690936956222 < opt_time) {
|
|
29897
29911
|
return {
|
|
29898
29912
|
hasTests,
|
|
29899
29913
|
diagnostics: prevDiagnostics,
|
|
@@ -29931,7 +29945,7 @@ async function generateOneConfig(buildConfig, manifestXML, dependencyFiles, conf
|
|
|
29931
29945
|
hasTests: hasTests2,
|
|
29932
29946
|
diagnostics,
|
|
29933
29947
|
sdkVersion,
|
|
29934
|
-
optimizerVersion: "1.1.
|
|
29948
|
+
optimizerVersion: "1.1.33",
|
|
29935
29949
|
...Object.fromEntries(
|
|
29936
29950
|
configOptionsToCheck.map((option) => [option, config[option]])
|
|
29937
29951
|
)
|
package/build/optimizer.cjs
CHANGED
|
@@ -18,29 +18,29 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var optimizer_exports = {};
|
|
20
20
|
__export(optimizer_exports, {
|
|
21
|
-
StateNodeAttributes: () =>
|
|
22
|
-
buildOptimizedProject: () =>
|
|
21
|
+
StateNodeAttributes: () => import_chunk_7ANQTFGD.StateNodeAttributes,
|
|
22
|
+
buildOptimizedProject: () => import_chunk_7ANQTFGD.buildOptimizedProject,
|
|
23
23
|
copyRecursiveAsNeeded: () => import_chunk_PVBIKZYZ.copyRecursiveAsNeeded,
|
|
24
|
-
defaultConfig: () =>
|
|
25
|
-
display: () =>
|
|
26
|
-
generateApiMirTests: () =>
|
|
27
|
-
generateOneConfig: () =>
|
|
28
|
-
generateOptimizedProject: () =>
|
|
29
|
-
getConfig: () =>
|
|
30
|
-
getProjectAnalysis: () =>
|
|
31
|
-
get_jungle: () =>
|
|
32
|
-
isErrorWithLocation: () =>
|
|
33
|
-
launchSimulator: () =>
|
|
34
|
-
manifestProducts: () =>
|
|
35
|
-
mctree: () =>
|
|
36
|
-
simulateProgram: () =>
|
|
24
|
+
defaultConfig: () => import_chunk_7ANQTFGD.defaultConfig,
|
|
25
|
+
display: () => import_chunk_7ANQTFGD.display,
|
|
26
|
+
generateApiMirTests: () => import_chunk_7ANQTFGD.generateApiMirTests,
|
|
27
|
+
generateOneConfig: () => import_chunk_7ANQTFGD.generateOneConfig,
|
|
28
|
+
generateOptimizedProject: () => import_chunk_7ANQTFGD.generateOptimizedProject,
|
|
29
|
+
getConfig: () => import_chunk_7ANQTFGD.getConfig,
|
|
30
|
+
getProjectAnalysis: () => import_chunk_7ANQTFGD.getProjectAnalysis,
|
|
31
|
+
get_jungle: () => import_chunk_7ANQTFGD.get_jungle,
|
|
32
|
+
isErrorWithLocation: () => import_chunk_7ANQTFGD.isErrorWithLocation,
|
|
33
|
+
launchSimulator: () => import_chunk_7ANQTFGD.launchSimulator,
|
|
34
|
+
manifestProducts: () => import_chunk_7ANQTFGD.manifestProducts,
|
|
35
|
+
mctree: () => import_chunk_7ANQTFGD.mctree,
|
|
36
|
+
simulateProgram: () => import_chunk_7ANQTFGD.simulateProgram
|
|
37
37
|
});
|
|
38
38
|
module.exports = __toCommonJS(optimizer_exports);
|
|
39
|
-
var
|
|
39
|
+
var import_chunk_7ANQTFGD = require("./chunk-7ANQTFGD.cjs");
|
|
40
40
|
var import_chunk_PVBIKZYZ = require("./chunk-PVBIKZYZ.cjs");
|
|
41
41
|
var import_chunk_MBTLUWXR = require("./chunk-MBTLUWXR.cjs");
|
|
42
42
|
var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
|
|
43
|
-
(0,
|
|
43
|
+
(0, import_chunk_7ANQTFGD.init_optimizer)();
|
|
44
44
|
// Annotate the CommonJS export names for ESM import in node:
|
|
45
45
|
0 && (module.exports = {
|
|
46
46
|
StateNodeAttributes,
|
package/build/sdk-util.cjs
CHANGED
|
@@ -18,25 +18,25 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var sdk_util_exports = {};
|
|
20
20
|
__export(sdk_util_exports, {
|
|
21
|
-
SectionKinds: () =>
|
|
22
|
-
appSupport: () =>
|
|
23
|
-
connectiq: () =>
|
|
24
|
-
getDeviceInfo: () =>
|
|
25
|
-
getFunctionDocumentation: () =>
|
|
26
|
-
getLanguages: () =>
|
|
27
|
-
getSdkPath: () =>
|
|
28
|
-
isWin: () =>
|
|
29
|
-
optimizeProgram: () =>
|
|
30
|
-
readPrg: () =>
|
|
31
|
-
readPrgWithOffsets: () =>
|
|
32
|
-
xmlUtil: () =>
|
|
21
|
+
SectionKinds: () => import_chunk_7ANQTFGD.SectionKinds,
|
|
22
|
+
appSupport: () => import_chunk_7ANQTFGD.appSupport,
|
|
23
|
+
connectiq: () => import_chunk_7ANQTFGD.connectiq,
|
|
24
|
+
getDeviceInfo: () => import_chunk_7ANQTFGD.getDeviceInfo,
|
|
25
|
+
getFunctionDocumentation: () => import_chunk_7ANQTFGD.getFunctionDocumentation,
|
|
26
|
+
getLanguages: () => import_chunk_7ANQTFGD.getLanguages,
|
|
27
|
+
getSdkPath: () => import_chunk_7ANQTFGD.getSdkPath,
|
|
28
|
+
isWin: () => import_chunk_7ANQTFGD.isWin,
|
|
29
|
+
optimizeProgram: () => import_chunk_7ANQTFGD.optimizeProgram,
|
|
30
|
+
readPrg: () => import_chunk_7ANQTFGD.readPrg,
|
|
31
|
+
readPrgWithOffsets: () => import_chunk_7ANQTFGD.readPrgWithOffsets,
|
|
32
|
+
xmlUtil: () => import_chunk_7ANQTFGD.xml_util_exports
|
|
33
33
|
});
|
|
34
34
|
module.exports = __toCommonJS(sdk_util_exports);
|
|
35
|
-
var
|
|
35
|
+
var import_chunk_7ANQTFGD = require("./chunk-7ANQTFGD.cjs");
|
|
36
36
|
var import_chunk_PVBIKZYZ = require("./chunk-PVBIKZYZ.cjs");
|
|
37
37
|
var import_chunk_MBTLUWXR = require("./chunk-MBTLUWXR.cjs");
|
|
38
38
|
var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
|
|
39
|
-
(0,
|
|
39
|
+
(0, import_chunk_7ANQTFGD.init_sdk_util)();
|
|
40
40
|
// Annotate the CommonJS export names for ESM import in node:
|
|
41
41
|
0 && (module.exports = {
|
|
42
42
|
SectionKinds,
|
package/build/src/projects.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export type RemoteProject = string | {
|
|
|
14
14
|
jungleContent?: string[];
|
|
15
15
|
garminOptLevel?: number;
|
|
16
16
|
test?: boolean | string[];
|
|
17
|
+
branch?: string;
|
|
17
18
|
};
|
|
18
19
|
export declare const githubProjects: RemoteProject[];
|
|
19
20
|
export declare function fetchGitProjects(projects: RemoteProject[], testOnly: boolean, skipRemote: boolean): Promise<(string | {
|
package/build/worker-thread.cjs
CHANGED
|
@@ -21,17 +21,17 @@ __export(worker_thread_exports, {
|
|
|
21
21
|
default: () => worker_thread_default
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(worker_thread_exports);
|
|
24
|
-
var
|
|
24
|
+
var import_chunk_7ANQTFGD = require("./chunk-7ANQTFGD.cjs");
|
|
25
25
|
var import_chunk_PVBIKZYZ = require("./chunk-PVBIKZYZ.cjs");
|
|
26
26
|
var import_chunk_MBTLUWXR = require("./chunk-MBTLUWXR.cjs");
|
|
27
27
|
var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
|
|
28
28
|
var import_node_worker_threads = require("node:worker_threads");
|
|
29
29
|
var require_worker_thread = (0, import_chunk_ABYVSU2C.__commonJS)({
|
|
30
30
|
"src/worker-thread.ts"() {
|
|
31
|
-
(0,
|
|
31
|
+
(0, import_chunk_7ANQTFGD.init_worker_task)();
|
|
32
32
|
if (import_node_worker_threads.parentPort) {
|
|
33
33
|
import_node_worker_threads.parentPort.on("message", async (task) => {
|
|
34
|
-
return import_node_worker_threads.parentPort.postMessage(await (0,
|
|
34
|
+
return import_node_worker_threads.parentPort.postMessage(await (0, import_chunk_7ANQTFGD.performTask)(task));
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
37
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@markw65/monkeyc-optimizer",
|
|
3
3
|
"type": "commonjs",
|
|
4
|
-
"version": "1.1.
|
|
4
|
+
"version": "1.1.33",
|
|
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",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"author": "markw65",
|
|
49
49
|
"license": "MIT",
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@markw65/prettier-plugin-monkeyc": "^1.0.
|
|
51
|
+
"@markw65/prettier-plugin-monkeyc": "^1.0.51"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@types/chai": "^4.3.4",
|