add stone function

This commit is contained in:
2025-05-29 11:28:51 -05:00
parent aca9baf585
commit 2e7643aa2a
4 changed files with 54 additions and 15 deletions

View File

@@ -1,5 +1,7 @@
(function engine() {
prosperon.DOC = prosperon.hidden.DOCSYM
globalThis.pi = 3.1415926535897932
function caller_data(depth = 0)
{
@@ -221,7 +223,33 @@ globalThis.use = function use(file, ...args) {
globalThis.json = use('json')
var time = use('time')
use('blob')
var blob = use('blob')
function deepFreeze(object) {
if (object instanceof blob)
object.stone()
// Retrieve the property names defined on object
var propNames = Object.keys(object);
// Freeze properties before freezing self
for (var name of propNames) {
var value = object[name];
if ((value && typeof value === "object") || typeof value === "function") {
deepFreeze(value);
}
}
return Object.freeze(object);
}
globalThis.stone = deepFreeze
stone.p = function(object)
{
return Object.isFrozen(object)
}
var DOCPATH = 'scripts/core/doc.js'
var script = io.slurp(DOCPATH)
var fnname = "doc"

View File

@@ -376,5 +376,6 @@ JSValue js_io_use(JSContext *js) {
JSValue mod = JS_NewObject(js);
JS_SetPropertyFunctionList(js,mod,js_io_funcs,countof(js_io_funcs));
return mod;
}

View File

@@ -196,7 +196,7 @@ let tests = [
}
// Stone it
b.stone();
stone(b)
// Now check bits
for (let i = 0; i < 5; i++) {
@@ -230,7 +230,7 @@ let tests = [
}
// Must stone before reading
b.stone();
stone(b)
let bits = [
b.read_logical(0),
@@ -248,7 +248,7 @@ let tests = [
run() {
let b = new Blob(5, false);
// Stone it
b.stone();
stone(b)
// Try to write
let passed = true;
let messages = [];
@@ -286,7 +286,7 @@ let tests = [
}
// Stone the copy to read from it
copy.stone();
stone(copy)
let bits = [];
for (let i = 0; i < len; i++) {
@@ -335,7 +335,7 @@ let tests = [
};
}
b1.stone();
stone(b1)
let bits = [];
for (let i = 0; i < 4; i++) {
bits.push(b1.read_logical(i));
@@ -360,7 +360,7 @@ let tests = [
};
}
b.stone();
stone(b)
let val1 = b.read_fit(0, 3);
let val2 = b.read_fit(3, 4);
@@ -385,7 +385,7 @@ let tests = [
b.write_kim(-1); // Small negative number
b.write_kim(1000); // Larger number
b.stone();
stone(b)
let result1 = b.read_kim(0);
let result2 = b.read_kim(result1.bits_read);
@@ -409,7 +409,7 @@ let tests = [
let b = new Blob();
b.write_text("Hello");
b.stone();
stone(b)
let result = b.read_text(0);
@@ -432,7 +432,7 @@ let tests = [
b.write_dec64(3.14159);
b.write_dec64(-42.5);
b.stone();
stone(b)
let val1 = b.read_dec64(0);
let val2 = b.read_dec64(64);
@@ -470,7 +470,7 @@ let tests = [
};
}
b.stone();
stone(b)
// Check pad? function
let isPadded = b["pad?"](3, 8);
@@ -534,7 +534,7 @@ let tests = [
b.write_bit(true);
b.write_bit(false);
b.stone();
stone(b)
let bits = [];
for (let i = 0; i < 4; i++) {
@@ -553,10 +553,10 @@ let tests = [
for (let i = 0; i < 10; i++) {
b.write_bit(i % 3 === 0); // Pattern: T,F,F,T,F,F,T,F,F,T
}
b.stone();
stone(b)
let copy = b.read_blob(3, 7); // Extract bits 3-6
copy.stone(); // Need to stone the copy to read
stone(copy)
if (copy.length !== 4) {
return {
@@ -584,7 +584,7 @@ let tests = [
let randomFunc = () => counter++;
let b = new Blob(8, randomFunc);
b.stone();
stone(b)
if (b.length !== 8) {
return {

View File

@@ -17,6 +17,16 @@ var tree = {
]
}
stone(tree)
log.console(tree)
log.console(stone.p(tree))
log.console(stone.p("false"))
log.console(stone.p(9))
log.console(stone.p(undefined))
log.console(stone.p({}))
var os = use('os')
var st = os.now()
var actor