Example #1
0
        public void BuildMainScript()
        {
            var instance = _generator.MainInstance;

            if (instance == null)
            {
                return;
            }

            instance.IsApp = true;

            var script = new AbcScript {
                IsMain = true
            };

            Abc.Scripts.Add(script);

            script.DefineClassTraits(instance);
            script.Initializer = DefineMainScriptInit(script, instance);
        }
Example #2
0
        private void DefineScript(AbcInstance instance)
        {
            var script = new AbcScript();

            Abc.Scripts.Add(script);

            script.DefineClassTraits(instance);

            script.Initializer = Abc.DefineMethod(
                Sig.@void(),
                code =>
            {
                code.PushThisScope();

                if (IsSwc && instance.Type.Is(SystemTypeCode.Object))
                {
                    code.AddRange(_generator.NewApi);
                }

                var list = GetBaseTypesWithCctors(instance);

                const int arr = 1;
                code.Add(InstructionCode.Newarray, 0);
                code.SetLocal(arr);

                _generator.StaticCtors.DelayCalls(code, list, arr);
                code.InitClassProperties(script);
                _generator.StaticCtors.UndelayCalls(code, list, arr);

                //code.Trace("Initialization of " + instance.FullName);

                _generator.StaticCtors.Call(code, instance);
                _generator.StaticCtors.CallRange(code, list);

                code.ReturnVoid();
            }
                );
        }