Browse Source

kernel: Move classes' initialize calling into runtime.

Herbert Vojčík 7 years ago
parent
commit
3135c30945
2 changed files with 18 additions and 16 deletions
  1. 1 16
      support/boot.js
  2. 17 0
      support/kernel-runtime.js

+ 1 - 16
support/boot.js

@@ -675,33 +675,18 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
         };
     }
 
-    SmalltalkInitBrik.deps = ["globals", "classes"];
     function SmalltalkInitBrik (brikz, st) {
-        var globals = brikz.smalltalkGlobals.globals;
-
         var initialized = false;
         var runtimeLoadedPromise = new Promise(function (resolve, reject) {
             require(['./kernel-runtime'], resolve, reject);
         });
 
-
         /* Smalltalk initialization. Called on page load */
 
         st.initialize = function () {
             return runtimeLoadedPromise.then(function (configureWithRuntime) {
-                if (initialized) {
-                    return;
-                }
-
+                if (initialized) return;
                 configureWithRuntime(brikz);
-
-                st.alias(globals.Array, "OrderedCollection");
-                st.alias(globals.Date, "Time");
-
-                st.classes().forEach(function (klass) {
-                    klass._initialize();
-                });
-
                 initialized = true;
             });
         };

+ 17 - 0
support/kernel-runtime.js

@@ -134,6 +134,11 @@ define(function () {
         setClassConstructor(globals.RegularExpression, RegExp);
         setClassConstructor(globals.Error, Error);
         setClassConstructor(globals.Promise, Promise);
+
+        this.__init__ = function () {
+            st.alias(globals.Array, "OrderedCollection");
+            st.alias(globals.Date, "Time");
+        }
     }
 
     RuntimeMethodsBrik.deps = ["manipulation", "dnu", "runtimeClasses"];
@@ -479,6 +484,17 @@ define(function () {
         this.messageNotUnderstood = messageNotUnderstood;
     }
 
+    StartImageBrik.deps = ["frameBinding", "runtimeMethods", "runtime", "primitives"];
+    function StartImageBrik(brikz, st) {
+        this.__init__ = function () {
+            var classes = brikz.behaviors.classes;
+            classes().forEach(function (klass) {
+                klass._initialize();
+            });
+        };
+        this.__init__.once = true;
+    }
+
     /* Making smalltalk that can run */
 
     function configureWithRuntime(brikz) {
@@ -490,6 +506,7 @@ define(function () {
         brikz.messageSend = MessageSendBrik;
         brikz.runtime = RuntimeBrik;
         brikz.primitives = PrimitivesBrik;
+        brikz.startImage = StartImageBrik;
 
         brikz.rebuild();
     }