fix repeated loads
This commit is contained in:
2
help.ce
2
help.ce
@@ -123,4 +123,4 @@ log.console("")
|
||||
log.console("Run 'cell help <command>' for more information.")
|
||||
}
|
||||
|
||||
$$stop()
|
||||
$stop()
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Engine is self-sufficient: defines its own compilation pipeline
|
||||
var ACTORDATA = actorsym
|
||||
var native_mode = false
|
||||
var _no_warn = (init != null && init.no_warn) ? true : false
|
||||
var SYSYM = '__SYSTEM__'
|
||||
|
||||
var _cell = {}
|
||||
@@ -52,6 +53,11 @@ function ensure_build_dir() {
|
||||
return dir
|
||||
}
|
||||
|
||||
function warn_marker_path(hash) {
|
||||
if (!shop_path) return null
|
||||
return shop_path + '/build/' + hash + '.w'
|
||||
}
|
||||
|
||||
// --- Native compilation support ---
|
||||
|
||||
function detect_host_target() {
|
||||
@@ -158,7 +164,7 @@ function load_pipeline_module(name, env) {
|
||||
compiled = boot_sl(compiled)
|
||||
mcode_json = json.encode(compiled)
|
||||
mach_blob = mach_compile_mcode_bin(name, mcode_json)
|
||||
if (!native_mode && cached) {
|
||||
if (cached) {
|
||||
ensure_build_dir()
|
||||
fd.slurpwrite(cached, mach_blob)
|
||||
}
|
||||
@@ -222,6 +228,7 @@ function analyze(src, filename) {
|
||||
var col = null
|
||||
var has_errors = _ast.errors != null && length(_ast.errors) > 0
|
||||
var folded = null
|
||||
var _wm = null
|
||||
if (has_errors) {
|
||||
while (_i < length(_ast.errors)) {
|
||||
e = _ast.errors[_i]
|
||||
@@ -242,11 +249,18 @@ function analyze(src, filename) {
|
||||
}
|
||||
folded = fold_mod(_ast)
|
||||
if (!_no_warn && folded._diagnostics != null && length(folded._diagnostics) > 0) {
|
||||
_i = 0
|
||||
while (_i < length(folded._diagnostics)) {
|
||||
e = folded._diagnostics[_i]
|
||||
os.print(`${filename}:${text(e.line)}:${text(e.col)}: ${e.severity}: ${e.message}\n`)
|
||||
_i = _i + 1
|
||||
_wm = warn_marker_path(content_hash(stone(blob(src))))
|
||||
if (!_wm || !fd.is_file(_wm)) {
|
||||
_i = 0
|
||||
while (_i < length(folded._diagnostics)) {
|
||||
e = folded._diagnostics[_i]
|
||||
os.print(`${filename}:${text(e.line)}:${text(e.col)}: ${e.severity}: ${e.message}\n`)
|
||||
_i = _i + 1
|
||||
}
|
||||
if (_wm) {
|
||||
ensure_build_dir()
|
||||
fd.slurpwrite(_wm, stone(blob("1")))
|
||||
}
|
||||
}
|
||||
}
|
||||
folded._diagnostics = null
|
||||
@@ -480,8 +494,7 @@ var _init = init
|
||||
if (_init != null && _init.native_mode)
|
||||
native_mode = true
|
||||
|
||||
// Inherit warn mode from init (set by C for --no-warn)
|
||||
var _no_warn = (_init != null && _init.no_warn) ? true : false
|
||||
// _no_warn already set from init at top of file
|
||||
|
||||
// CLI path: convert args to init record
|
||||
if (args != null && (_init == null || !_init.program)) {
|
||||
@@ -618,7 +631,9 @@ function use_core(path) {
|
||||
native_path = compile_core_native('core:' + path, file_path)
|
||||
native_handle = os.dylib_open(native_path)
|
||||
result = os.native_module_load_named(native_handle, 'cell_main', env)
|
||||
} disruption {}
|
||||
} disruption {
|
||||
os.print(`[engine] native compilation failed for '${path}'; falling back to bytecode\n`)
|
||||
}
|
||||
_try_native()
|
||||
if (result != null) {
|
||||
use_cache[cache_key] = result
|
||||
@@ -1732,6 +1747,8 @@ $_.clock(_ => {
|
||||
}
|
||||
env.args = _cell.args.arg
|
||||
env.log = log
|
||||
os.print(`[debug] env keys: ${text(array(env), ',')}\n`)
|
||||
os.print(`[debug] $stop in env: ${text(env['$stop'] != null)}\n`)
|
||||
env = stone(env)
|
||||
|
||||
var native_build = null
|
||||
|
||||
Reference in New Issue
Block a user