UNPKG

@awayfl/avm2

Version:

Virtual machine for executing AS3 code

31 lines (30 loc) 1.17 kB
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 }); }