1
0
فهرست منبع

boot.js smalltalk object is just an API holder

... not an instance of Smalltalk.
Herbert Vojčík 12 سال پیش
والد
کامیت
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;
 	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);
 var brikz = new Brikz(api);
 
 
 function RootBrik(brikz, st) {
 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() {}
 	function SmalltalkNil() {}
 	inherits(SmalltalkNil, SmalltalkObject);
 	inherits(SmalltalkNil, SmalltalkObject);
 
 
+	this.Object = SmalltalkObject;
 	this.nil = new SmalltalkNil();
 	this.nil = new SmalltalkNil();
 
 
 	// Hidden root class of the system.
 	// Hidden root class of the system.
@@ -123,7 +120,6 @@ function RootBrik(brikz, st) {
 		st.addPackage("Kernel-Infrastructure");
 		st.addPackage("Kernel-Infrastructure");
 		st.wrapClassName("ProtoObject", "Kernel-Objects", SmalltalkProtoObject, undefined, false);
 		st.wrapClassName("ProtoObject", "Kernel-Objects", SmalltalkProtoObject, undefined, false);
 		st.wrapClassName("Object", "Kernel-Objects", SmalltalkObject, st.ProtoObject, 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);
 		st.wrapClassName("UndefinedObject", "Kernel-Objects", SmalltalkNil, st.Object, false);
 	};
 	};
 }
 }
@@ -131,7 +127,7 @@ function RootBrik(brikz, st) {
 function OrganizeBrik(brikz, st) {
 function OrganizeBrik(brikz, st) {
 
 
 	brikz.ensure("augments");
 	brikz.ensure("augments");
-	brikz.ensure("root");
+	var SmalltalkObject = brikz.ensure("root").Object;
 
 
 	function SmalltalkOrganizer () {}
 	function SmalltalkOrganizer () {}
 	function SmalltalkPackageOrganizer () {
 	function SmalltalkPackageOrganizer () {
@@ -308,6 +304,7 @@ function ClassesBrik(brikz, st) {
 	var root = brikz.ensure("root");
 	var root = brikz.ensure("root");
 	var nil = root.nil;
 	var nil = root.nil;
 	var rootAsClass = root.rootAsClass;
 	var rootAsClass = root.rootAsClass;
+	var SmalltalkObject = root.Object;
 	rootAsClass.klass = {fn: SmalltalkClass};
 	rootAsClass.klass = {fn: SmalltalkClass};
 
 
 	function SmalltalkPackage() {}
 	function SmalltalkPackage() {}
@@ -569,6 +566,7 @@ function MethodsBrik(brikz, st) {
 	var org = brikz.ensure("organize");
 	var org = brikz.ensure("organize");
 	var stInit = brikz.ensure("stInit");
 	var stInit = brikz.ensure("stInit");
 	var dnu = brikz.ensure("dnu");
 	var dnu = brikz.ensure("dnu");
+	var SmalltalkObject = brikz.ensure("root").Object;
 	brikz.ensure("selectorConversion");
 	brikz.ensure("selectorConversion");
 	brikz.ensure("classes");
 	brikz.ensure("classes");
 	brikz.ensure("classInit");
 	brikz.ensure("classInit");
@@ -819,7 +817,9 @@ function PrimitivesBrik(brikz, st) {
 function RuntimeBrik(brikz, st) {
 function RuntimeBrik(brikz, st) {
 
 
 	brikz.ensure("selectorConversion");
 	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) {
 	function SmalltalkMethodContext(home, setup) {
 		this.sendIdx     = {};
 		this.sendIdx     = {};
@@ -902,7 +902,7 @@ function RuntimeBrik(brikz, st) {
 	}
 	}
 
 
 	/* Wrap a JavaScript exception in a Smalltalk Exception. 
 	/* Wrap a JavaScript exception in a Smalltalk Exception. 
-	 
+
 	 In case of a RangeError, stub the stack after 100 contexts to
 	 In case of a RangeError, stub the stack after 100 contexts to
 	 avoid another RangeError later when the stack is manipulated. */
 	 avoid another RangeError later when the stack is manipulated. */
 	function wrappedError(error) {
 	function wrappedError(error) {