Browse Source

boot.js smalltalk object is just an API holder

... not an instance of Smalltalk.
Herbert Vojčík 10 years ago
parent
commit
54cef7f492
1 changed files with 18 additions and 18 deletions
  1. 18 18
      support/boot.js

+ 18 - 18
support/boot.js

@@ -92,27 +92,24 @@ function inherits(child, parent) {
 	return child;
 }
 
-/* Smalltalk foundational objects */
-
-/* SmalltalkRoot is the hidden root of the Amber hierarchy.
- All objects including `Object` inherit from SmalltalkRoot */
-function SmalltalkRoot() {}
-function SmalltalkProtoObject() {}
-inherits(SmalltalkProtoObject, SmalltalkRoot);
-function SmalltalkObject() {}
-inherits(SmalltalkObject, SmalltalkProtoObject);
-
-function Smalltalk() {}
-inherits(Smalltalk, SmalltalkObject);
-
-var api = new Smalltalk();
+var api = {};
 var brikz = new Brikz(api);
 
 function RootBrik(brikz, st) {
 
+	/* Smalltalk foundational objects */
+
+	/* SmalltalkRoot is the hidden root of the Amber hierarchy.
+	 All objects including `Object` inherit from SmalltalkRoot */
+	function SmalltalkRoot() {}
+	function SmalltalkProtoObject() {}
+	inherits(SmalltalkProtoObject, SmalltalkRoot);
+	function SmalltalkObject() {}
+	inherits(SmalltalkObject, SmalltalkProtoObject);
 	function SmalltalkNil() {}
 	inherits(SmalltalkNil, SmalltalkObject);
 
+	this.Object = SmalltalkObject;
 	this.nil = new SmalltalkNil();
 
 	// Hidden root class of the system.
@@ -123,7 +120,6 @@ function RootBrik(brikz, st) {
 		st.addPackage("Kernel-Infrastructure");
 		st.wrapClassName("ProtoObject", "Kernel-Objects", SmalltalkProtoObject, undefined, false);
 		st.wrapClassName("Object", "Kernel-Objects", SmalltalkObject, st.ProtoObject, false);
-		st.wrapClassName("Smalltalk", "Kernel-Infrastructure", Smalltalk, st.Object, false);
 		st.wrapClassName("UndefinedObject", "Kernel-Objects", SmalltalkNil, st.Object, false);
 	};
 }
@@ -131,7 +127,7 @@ function RootBrik(brikz, st) {
 function OrganizeBrik(brikz, st) {
 
 	brikz.ensure("augments");
-	brikz.ensure("root");
+	var SmalltalkObject = brikz.ensure("root").Object;
 
 	function SmalltalkOrganizer () {}
 	function SmalltalkPackageOrganizer () {
@@ -308,6 +304,7 @@ function ClassesBrik(brikz, st) {
 	var root = brikz.ensure("root");
 	var nil = root.nil;
 	var rootAsClass = root.rootAsClass;
+	var SmalltalkObject = root.Object;
 	rootAsClass.klass = {fn: SmalltalkClass};
 
 	function SmalltalkPackage() {}
@@ -569,6 +566,7 @@ function MethodsBrik(brikz, st) {
 	var org = brikz.ensure("organize");
 	var stInit = brikz.ensure("stInit");
 	var dnu = brikz.ensure("dnu");
+	var SmalltalkObject = brikz.ensure("root").Object;
 	brikz.ensure("selectorConversion");
 	brikz.ensure("classes");
 	brikz.ensure("classInit");
@@ -819,7 +817,9 @@ function PrimitivesBrik(brikz, st) {
 function RuntimeBrik(brikz, st) {
 
 	brikz.ensure("selectorConversion");
-	var nil = brikz.ensure("root").nil;
+	var root = brikz.ensure("root");
+	var nil = root.nil;
+	var SmalltalkObject = root.Object;
 
 	function SmalltalkMethodContext(home, setup) {
 		this.sendIdx     = {};
@@ -902,7 +902,7 @@ function RuntimeBrik(brikz, st) {
 	}
 
 	/* Wrap a JavaScript exception in a Smalltalk Exception. 
-	 
+
 	 In case of a RangeError, stub the stack after 100 contexts to
 	 avoid another RangeError later when the stack is manipulated. */
 	function wrappedError(error) {