|
@@ -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) {
|