@swf2es/runtime 0.1.2 → 0.1.3
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/dist/avm1/functions.d.ts
CHANGED
|
@@ -53,6 +53,10 @@ export declare class ScriptFunction extends Avm1Function {
|
|
|
53
53
|
* whose functions close over nothing (adl; Ruffle takes the caller's).
|
|
54
54
|
*/
|
|
55
55
|
definer: Value);
|
|
56
|
+
/** The realm's count of removals as it last asked whether `target` was removed, -1 before. */
|
|
57
|
+
private looked;
|
|
58
|
+
/** Whether `target` was removed as it last asked. */
|
|
59
|
+
private gone;
|
|
56
60
|
/**
|
|
57
61
|
* Run its body with `self` as `this`, `depth` how far up `this`'s
|
|
58
62
|
* prototypes it was found (which `super` starts from), in an activation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../src/avm1/functions.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAoC,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAG5F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAmB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAA6B,KAAK,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAUtD,sDAAsD;AACtD,qBAAa,cAAe,SAAQ,YAAY;IAG5C,QAAQ,CAAC,KAAK,EAAE,KAAK;IACrB,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,gFAAgF;IAChF,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE;IACvB,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE;IAClC,uDAAuD;IACvD,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,8CAA8C;IAC9C,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,KAAK;IACrB,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;IACtB,yFAAyF;IACzF,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,IAAI,EAAE,UAAU;IACzB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,KAAK;IAzBzB,YACE,KAAK,EAAE,KAAK,EACH,KAAK,EAAE,KAAK;IACrB,8BAA8B;IACrB,MAAM,EAAE,MAAM;IACvB,gFAAgF;IACvE,IAAI,EAAE,MAAM,EAAE;IACvB,2DAA2D;IAClD,MAAM,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE;IAClC,uDAAuD;IAC9C,KAAK,EAAE,MAAM;IACtB,8CAA8C;IACrC,OAAO,EAAE,MAAM;IACxB,0EAA0E;IACjE,KAAK,EAAE,KAAK;IACrB,2EAA2E;IAClE,IAAI,EAAE,KAAK,EAAE;IACtB,yFAAyF;IAChF,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU;IACzB;;;;OAIG;IACM,OAAO,EAAE,KAAK,EAGxB;IAED;;;;;OAKG;IACM,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../src/avm1/functions.ts"],"names":[],"mappings":"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"}
|
package/dist/avm1/functions.js
CHANGED
|
@@ -73,6 +73,10 @@ export class ScriptFunction extends Avm1Function {
|
|
|
73
73
|
this.clip = clip;
|
|
74
74
|
this.definer = definer;
|
|
75
75
|
}
|
|
76
|
+
/** The realm's count of removals as it last asked whether `target` was removed, -1 before. */
|
|
77
|
+
looked = -1;
|
|
78
|
+
/** Whether `target` was removed as it last asked. */
|
|
79
|
+
gone = false;
|
|
76
80
|
/**
|
|
77
81
|
* Run its body with `self` as `this`, `depth` how far up `this`'s
|
|
78
82
|
* prototypes it was found (which `super` starts from), in an activation
|
|
@@ -98,7 +102,23 @@ export class ScriptFunction extends Avm1Function {
|
|
|
98
102
|
let scope = this.scope;
|
|
99
103
|
let target = this.target;
|
|
100
104
|
let clip = this.clip;
|
|
101
|
-
if (this.version
|
|
105
|
+
if (this.version >= 6 && caller.host.removed !== undefined) {
|
|
106
|
+
// A clip whose code defined it may since be gone, a loaded SWF's
|
|
107
|
+
// classes after it was unloaded among them: it runs on `this` where
|
|
108
|
+
// that is a clip, else on the caller's target, rather than returning
|
|
109
|
+
// at its first call, as code returns whose clip a call removes
|
|
110
|
+
// (Ruffle's resolve_reference of its base clip, then this_do).
|
|
111
|
+
if (this.looked !== realm.removals) {
|
|
112
|
+
this.looked = realm.removals;
|
|
113
|
+
this.gone = caller.host.removed(target);
|
|
114
|
+
}
|
|
115
|
+
if (this.gone) {
|
|
116
|
+
const own = self instanceof Avm1Object ? caller.host.clipOf?.(self) : undefined;
|
|
117
|
+
target = own ?? targetOrRoot(caller);
|
|
118
|
+
clip = own !== undefined ? self : caller.clip;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
else if (this.version < 6) {
|
|
102
122
|
const own = self instanceof Avm1Object ? caller.host.clipOf?.(self) : undefined;
|
|
103
123
|
if (own !== undefined) {
|
|
104
124
|
target = own;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../src/avm1/functions.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../src/avm1/functions.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,6EAA6E;AAC7E,yEAAyE;AACzE,0EAA0E;AAC1E,yEAAyE;AACzE,eAAe;AACf,EAAE;AACF,qEAAqE;AACrE,sEAAsE;AACtE,qEAAqE;AACrE,sEAAsE;AACtE,qEAAqE;AACrE,gEAAgE;AAChE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAe,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAiB,MAAM,cAAc,CAAC;AAExF,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAc,MAAM,aAAa,CAAC;AAEtD,qDAAqD;AACrD,MAAM,oBAAoB,GAAG,KAAK,CAAC;AACnC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AACpC,MAAM,yBAAyB,GAAG,KAAK,CAAC;AACxC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AACzC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AACpC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAErC,sDAAsD;AACtD,MAAM,OAAO,cAAe,SAAQ,YAAY;IAGnC,KAAK;IAEL,MAAM;IAEN,IAAI;IAEJ,MAAM;IAEN,KAAK;IAEL,OAAO;IAEP,KAAK;IAEL,IAAI;IAEJ,MAAM;IACN,IAAI;IAMJ,OAAO;IAzBlB,YACE,KAAY,EACH,KAAY;IACrB,8BAA8B;IACrB,MAAc;IACvB,gFAAgF;IACvE,IAAc;IACvB,2DAA2D;IAClD,MAAyB;IAClC,uDAAuD;IAC9C,KAAa;IACtB,8CAA8C;IACrC,OAAe;IACxB,0EAA0E;IACjE,KAAY;IACrB,2EAA2E;IAClE,IAAa;IACtB,yFAAyF;IAChF,MAAc,EACd,IAAgB;IACzB;;;;OAIG;IACM,OAAc;QAEvB,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;qBAzBtB,KAAK;sBAEL,MAAM;oBAEN,IAAI;sBAEJ,MAAM;qBAEN,KAAK;uBAEL,OAAO;qBAEP,KAAK;oBAEL,IAAI;sBAEJ,MAAM;oBACN,IAAI;uBAMJ,OAAO;IAGlB,CAAC;IAED,8FAA8F;IACtF,MAAM,GAAG,CAAC,CAAC,CAAC;IACpB,qDAAqD;IAC7C,IAAI,GAAG,KAAK,CAAC;IAErB;;;;;OAKG;IACM,IAAI,CAAC,IAAW,EAAE,IAAa,EAAE,OAAe,EAAE,KAAK,GAAG,CAAC;QAClE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,oCAAoC,CAAC,CAAC;QAC5E,CAAC;QAED,oEAAoE;QACpE,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,CAAC;QAED,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3D,iEAAiE;YACjE,oEAAoE;YACpE,qEAAqE;YACrE,+DAA+D;YAC/D,+DAA+D;YAC/D,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAC7B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC1C,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM,GAAG,GAAG,IAAI,YAAY,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAChF,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;gBACrC,IAAI,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAE,IAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;YAChE,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,IAAI,YAAY,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAChF,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,MAAM,GAAG,GAAG,CAAC;gBACb,IAAI,GAAG,IAAkB,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC9B,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YACrB,CAAC;YAED,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,CAAC,KAAK,GAAG,CAAC,oBAAoB,GAAG,qBAAqB,CAAC,CAAC,KAAK,CAAC,CAAC;QACjF,MAAM,EAAE,GAAG,IAAI,UAAU,CACvB,MAAM,CAAC,EAAE,EACT,IAAI,CAAC,IAAI,EACT,MAAM,EACN,MAAM,CAAC,IAAI,EACX,KAAK;QACL,6EAA6E;QAC7E,IAAI,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EACtF,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAC/B,IAAI,CACL,CAAC;QACF,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACpB,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;QACjB,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC1B,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;QACf,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;QACjB,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;QAED,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,KAAK,GAAG,CAAC,yBAAyB,GAAG,0BAA0B,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7E,OAAO,IAAI,iBAAiB,CAAC;QAC/B,CAAC;QAED,IACE,CAAC,KAAK,GAAG,CAAC,qBAAqB,GAAG,sBAAsB,CAAC,CAAC,KAAK,CAAC;YAChE,KAAK,GAAG,CAAC;YACT,IAAI,CAAC,OAAO,IAAI,CAAC;YACjB,IAAI,YAAY,UAAU,EAC1B,CAAC;YACD,OAAO,IAAI,aAAa,CAAC;QAC3B,CAAC;QAED,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YAClB,EAAE,CAAC,OAAO,GAAG,OAAO,CAAC;YACrB,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;QAClB,CAAC;QAED,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6DAA6D;YAC7D,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;gBAC3B,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACzB,CAAC;IACH,CAAC;IAED,wFAAwF;IAC/E,UAAU,CAAC,IAAgB,EAAE,IAAa,EAAE,OAAe;QAClE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACpC,CAAC;IAEQ,eAAe,CAAC,IAAgB,EAAE,IAAa,EAAE,OAAe,EAAE,KAAa;QACtF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;CACF;AAED,SAAS,SAAS;IAChB,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,2EAA2E;AAC3E,SAAS,WAAW,CAAC,KAAiB,EAAE,IAAY,EAAE,KAAY,EAAE,OAAe;IACjF,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,SAAU,SAAQ,UAAU;IAG5B,IAAI;IAEJ,KAAK;IAJhB;IACE,6CAA6C;IACpC,IAAgB;IACzB,2DAA2D;IAClD,KAAa,EACtB,OAAe;QAEf,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;oBAL/B,IAAI;qBAEJ,KAAK;IAIhB,CAAC;CACF;AAED,qFAAqF;AACrF,SAAS,UAAU,CAAC,IAAgB,EAAE,KAAa,EAAE,OAAe;IAClE,IAAI,IAAI,GAAU,IAAI,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,IAAI,CAAC,CAAC,IAAI,YAAY,UAAU,CAAC,EAAE,CAAC;YAClC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,IAAI,YAAY,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,EAAc,EAAE,IAAW,EAAE,OAAe;IAClE,OAAO,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,YAAY,UAAU;QAC/D,CAAC,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;QACxC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,WAAW,CAAC,EAAc,EAAE,IAAa,EAAE,OAAe;IACxE,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC7C,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC7C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,wDAAwD;AACxD,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,OAAe,EAAE,EAAE,CAC7D,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;AAE1D;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,EAAc,EACd,CAAa,EACb,IAAY,EACZ,OAAe;IAEf,IAAI,CAAuB,CAAC;IAC5B,IAAI,EAAE,CAAC,OAAO,GAAG,iBAAiB,IAAI,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;QACxE,EAAE,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC;QACjC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;SAAM,IAAI,EAAE,CAAC,OAAO,GAAG,aAAa,IAAI,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;QACvE,EAAE,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC;QAC7B,kDAAkD;QAClD,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,EAAE,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QACrB,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@swf2es/runtime",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "AVM2 and AVM1 language runtime used by generated code",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"actionscript",
|
|
@@ -41,6 +41,6 @@
|
|
|
41
41
|
"LICENSE.third-party"
|
|
42
42
|
],
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@swf2es/format": "0.1.
|
|
44
|
+
"@swf2es/format": "0.1.3"
|
|
45
45
|
}
|
|
46
46
|
}
|
package/src/avm1/functions.ts
CHANGED
|
@@ -60,6 +60,11 @@ export class ScriptFunction extends Avm1Function {
|
|
|
60
60
|
super(proto, world, notNative);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
/** The realm's count of removals as it last asked whether `target` was removed, -1 before. */
|
|
64
|
+
private looked = -1;
|
|
65
|
+
/** Whether `target` was removed as it last asked. */
|
|
66
|
+
private gone = false;
|
|
67
|
+
|
|
63
68
|
/**
|
|
64
69
|
* Run its body with `self` as `this`, `depth` how far up `this`'s
|
|
65
70
|
* prototypes it was found (which `super` starts from), in an activation
|
|
@@ -89,7 +94,23 @@ export class ScriptFunction extends Avm1Function {
|
|
|
89
94
|
let scope = this.scope;
|
|
90
95
|
let target = this.target;
|
|
91
96
|
let clip = this.clip;
|
|
92
|
-
if (this.version
|
|
97
|
+
if (this.version >= 6 && caller.host.removed !== undefined) {
|
|
98
|
+
// A clip whose code defined it may since be gone, a loaded SWF's
|
|
99
|
+
// classes after it was unloaded among them: it runs on `this` where
|
|
100
|
+
// that is a clip, else on the caller's target, rather than returning
|
|
101
|
+
// at its first call, as code returns whose clip a call removes
|
|
102
|
+
// (Ruffle's resolve_reference of its base clip, then this_do).
|
|
103
|
+
if (this.looked !== realm.removals) {
|
|
104
|
+
this.looked = realm.removals;
|
|
105
|
+
this.gone = caller.host.removed(target);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (this.gone) {
|
|
109
|
+
const own = self instanceof Avm1Object ? caller.host.clipOf?.(self) : undefined;
|
|
110
|
+
target = own ?? targetOrRoot(caller);
|
|
111
|
+
clip = own !== undefined ? (self as Avm1Object) : caller.clip;
|
|
112
|
+
}
|
|
113
|
+
} else if (this.version < 6) {
|
|
93
114
|
const own = self instanceof Avm1Object ? caller.host.clipOf?.(self) : undefined;
|
|
94
115
|
if (own !== undefined) {
|
|
95
116
|
target = own;
|