@awayfl/avm2
Version:
Virtual machine for executing AS3 code
31 lines (30 loc) • 1.17 kB
JavaScript
import { runtimeWriter } from '../run/writers';
import { release } from '@awayfl/swf-loader';
import { assert } from '@awayjs/graphics';
/**
* Creates a self patching getter that lazily constructs the class and memoizes
* to the class's instance constructor.
*/
export function defineClassLoader(applicationDomain, container, mn, classAlias) {
Object.defineProperty(container, classAlias, {
get: function () {
runtimeWriter && runtimeWriter.writeLn('Running Memoizer: ' + mn.name);
var axClass = applicationDomain.getClass(mn);
release || assert(axClass, 'Class ' + mn + ' is not found.');
release || assert(axClass.axConstruct);
var loader = function () {
return axClass.axConstruct(arguments);
};
loader.axIsType = function (value) {
return axClass.axIsType(value);
};
loader.axClass = axClass;
Object.defineProperty(container, classAlias, {
value: loader,
writable: false
});
return loader;
},
configurable: true
});
}