Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SqueakJS V2 (WIP) #168

Draft
wants to merge 10 commits into
base: main
Choose a base branch
from
Draft
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Rename fromImage to fromBits
codefrau committed Jun 11, 2024
commit e393cbd3fa7199b4db0f1c8578a0ba0f42c0098b
14 changes: 7 additions & 7 deletions vm.image.js
Original file line number Diff line number Diff line change
@@ -188,7 +188,7 @@ Object.subclass('Squeak.Image',
hash = (header>>>17) & 4095,
bits = readBits(nWords, format < 5);
var object = new Squeak.Object();
object.initFromImage(oop, classInt, format, hash);
object.initFromBits(oop, classInt, format, hash);
if (classInt < 32) object.hash |= 0x10000000; // see fixCompactOops()
if (prevObj) prevObj.nextObject = object;
this.oldSpaceCount++;
@@ -236,7 +236,7 @@ Object.subclass('Squeak.Image',
// low class ids are internal to Spur
if (classID >= 32) {
var object = new Squeak.ObjectSpur();
object.initFromImage(oop, classID, format, hash);
object.initFromBits(oop, classID, format, hash);
if (prevObj) prevObj.nextObject = object;
this.oldSpaceCount++;
prevObj = object;
@@ -296,7 +296,7 @@ Object.subclass('Squeak.Image',
prevObj = null;
while (object) {
prevObj = renamedObj;
renamedObj = object.renameFromImage(oopMap, rawBits, cc);
renamedObj = object.renameFromBits(oopMap, rawBits, cc);
if (prevObj) prevObj.nextObject = renamedObj;
else this.firstOldObject = renamedObj;
oopMap[oldBaseAddr + object.oop] = renamedObj;
@@ -310,7 +310,7 @@ Object.subclass('Squeak.Image',
var splObs = oopMap[specialObjectsOopInt];
var compactClasses = rawBits[oopMap[rawBits[splObs.oop][Squeak.splOb_CompactClasses]].oop];
var floatClass = oopMap[rawBits[splObs.oop][Squeak.splOb_ClassFloat]];
// Spur needs different arguments for installFromImage()
// Spur needs different arguments for installFromBits()
if (this.isSpur) {
this.initImmediateClasses(oopMap, rawBits, splObs);
compactClasses = this.spurClassTable(oopMap, rawBits, classPages, splObs);
@@ -323,7 +323,7 @@ Object.subclass('Squeak.Image',
if (obj) {
var stop = done + (this.oldSpaceCount / 20 | 0); // do it in 20 chunks
while (obj && done < stop) {
obj.installFromImage(oopMap, rawBits, compactClasses, floatClass, littleEndian, nativeFloats, is64Bit && {
obj.installFromBits(oopMap, rawBits, compactClasses, floatClass, littleEndian, nativeFloats, is64Bit && {
makeFloat: bits => this.instantiateFloat(bits),
makeLargeFromSmall: (hi, lo) => this.instantiateLargeFromSmall(hi, lo),
});
@@ -1136,7 +1136,7 @@ Object.subclass('Squeak.Image',
bits = readBits(nWords, format);

var object = new Squeak.Object();
object.initFromImage(oop + oopOffset, classInt, format, hash);
object.initFromBits(oop + oopOffset, classInt, format, hash);
prevObj.nextObject = object;
this.oldSpaceCount++;
prevObj = object;
@@ -1160,7 +1160,7 @@ Object.subclass('Squeak.Image',
floatClass = this.specialObjectsArray.pointers[Squeak.splOb_ClassFloat],
obj = roots;
do {
obj.installFromImage(oopMap, rawBits, compactClassOops, floatClass, littleEndian, nativeFloats);
obj.installFromBits(oopMap, rawBits, compactClassOops, floatClass, littleEndian, nativeFloats);
obj = obj.nextObject;
} while (obj !== endMarker);
return roots;
10 changes: 5 additions & 5 deletions vm.object.js
Original file line number Diff line number Diff line change
@@ -78,14 +78,14 @@ Object.subclass('Squeak.Object',
if (original.bytes) this.bytes = new Uint8Array(original.bytes); // copy
}
},
initFromImage: function(oop, cls, fmt, hsh) {
initFromBits: function(oop, cls, fmt, hsh) {
// initial creation from Image, with unmapped data
this.oop = oop;
this.sqClass = cls;
this._format = fmt;
this.hash = hsh;
},
classNameFromImage: function(oopMap, rawBits) {
classNameFromBits: function(oopMap, rawBits) {
var name = oopMap[rawBits[this.oop][Squeak.Class_name]];
if (name && name._format >= 8 && name._format < 12) {
var bits = rawBits[name.oop],
@@ -94,10 +94,10 @@ Object.subclass('Squeak.Object',
}
return "Class";
},
renameFromImage: function(oopMap, rawBits, ccArray) {
renameFromBits: function(oopMap, rawBits, ccArray) {
var classObj = this.sqClass < 32 ? oopMap[ccArray[this.sqClass-1]] : oopMap[this.sqClass];
if (!classObj) return this;
var instProto = classObj.instProto || classObj.classInstProto(classObj.classNameFromImage(oopMap, rawBits));
var instProto = classObj.instProto || classObj.classInstProto(classObj.classNameFromBits(oopMap, rawBits));
if (!instProto) return this;
var renamedObj = new instProto; // Squeak.Object
renamedObj.oop = this.oop;
@@ -106,7 +106,7 @@ Object.subclass('Squeak.Object',
renamedObj.hash = this.hash;
return renamedObj;
},
installFromImage: function(oopMap, rawBits, ccArray, floatClass, littleEndian, nativeFloats) {
installFromBits: function(oopMap, rawBits, ccArray, floatClass, littleEndian, nativeFloats) {
//Install this object by decoding format, and rectifying pointers
var ccInt = this.sqClass;
// map compact classes
8 changes: 4 additions & 4 deletions vm.object.spur.js
Original file line number Diff line number Diff line change
@@ -64,7 +64,7 @@ Squeak.Object.subclass('Squeak.ObjectSpur',
// 16-23 = 8-bit indexable (plus three odd bits, one unused in 32-bits)
// 24-31 = compiled methods (CompiledMethod) (plus three odd bits, one unused in 32-bits)
},
installFromImage: function(oopMap, rawBits, classTable, floatClass, littleEndian, getCharacter, is64Bit) {
installFromBits: function(oopMap, rawBits, classTable, floatClass, littleEndian, getCharacter, is64Bit) {
//Install this object by decoding format, and rectifying pointers
var classID = this.sqClass;
if (classID < 32) throw Error("Invalid class ID: " + classID);
@@ -268,7 +268,7 @@ Squeak.Object.subclass('Squeak.ObjectSpur',
// this._format |= -indexableSize & 3; //deferred to writeTo()
this.bytes = new Uint8Array(size);
},
classNameFromImage: function(oopMap, rawBits) {
classNameFromBits: function(oopMap, rawBits) {
var name = oopMap[rawBits[this.oop][Squeak.Class_name]];
if (name && name._format >= 16 && name._format < 24) {
var bits = rawBits[name.oop],
@@ -277,10 +277,10 @@ Squeak.Object.subclass('Squeak.ObjectSpur',
}
return "Class";
},
renameFromImage: function(oopMap, rawBits, classTable) {
renameFromBits: function(oopMap, rawBits, classTable) {
var classObj = classTable[this.sqClass];
if (!classObj) return this;
var instProto = classObj.instProto || classObj.classInstProto(classObj.classNameFromImage(oopMap, rawBits));
var instProto = classObj.instProto || classObj.classInstProto(classObj.classNameFromBits(oopMap, rawBits));
if (!instProto) return this;
var renamedObj = new instProto; // Squeak.SpurObject
renamedObj.oop = this.oop;