1
0
فهرست منبع

boot.js smalltalk object is just an API holder

... not an instance of Smalltalk.
Herbert Vojčík 11 سال پیش
والد
کامیت
54cef7f492
1فایلهای تغییر یافته به همراه18 افزوده شده و 18 حذف شده
  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) {