This commit is contained in:
Dmitry Vasilev
2023-11-23 14:51:10 +08:00
parent 9b92302d88
commit 28332b874e
8 changed files with 25 additions and 25 deletions

View File

@@ -216,7 +216,7 @@ const replace_calltree_node = (root, node, replacement) => {
const expand_calltree_node = (state, node) => { const expand_calltree_node = (state, node) => {
if(node.has_more_children) { if(node.has_more_children) {
const next_node = eval_expand_calltree_node( const next_node = eval_expand_calltree_node(
state.eval_cxt, state.rt_cxt,
state.parse_result, state.parse_result,
node node
) )

View File

@@ -46,8 +46,8 @@ const apply_eval_result = (state, eval_result) => {
...state, ...state,
calltree: make_calltree(eval_result.calltree, null), calltree: make_calltree(eval_result.calltree, null),
calltree_node_by_loc: eval_result.calltree_node_by_loc, calltree_node_by_loc: eval_result.calltree_node_by_loc,
// TODO copy eval_cxt? // TODO copy rt_cxt?
eval_cxt: eval_result.eval_cxt, rt_cxt: eval_result.rt_cxt,
logs: { logs: {
logs: collect_logs(eval_result.logs, eval_result.calltree), logs: collect_logs(eval_result.logs, eval_result.calltree),
log_position: null log_position: null
@@ -90,7 +90,7 @@ const run_code = (s, dirty_files) => {
// Shows that calltree is brand new and requires entire rerender // Shows that calltree is brand new and requires entire rerender
calltree_changed_token: {}, calltree_changed_token: {},
eval_cxt: null, rt_cxt: null,
logs: null, logs: null,
current_calltree_node: null, current_calltree_node: null,
active_calltree_node: null, active_calltree_node: null,

View File

@@ -40,7 +40,7 @@ export class IO_Trace {
const items = state.io_trace ?? [] const items = state.io_trace ?? []
// Number of items that were used during execution // Number of items that were used during execution
const used_count = state.eval_cxt.io_trace_index ?? items.length const used_count = state.rt_cxt.io_trace_index ?? items.length
for(let i = 0; i < items.length; i++) { for(let i = 0; i < items.length; i++) {
const item = items[i] const item = items[i]

2
src/effects.js vendored
View File

@@ -223,7 +223,7 @@ export const apply_side_effects = (prev, next, ui) => {
if( if(
prev.io_trace != next.io_trace prev.io_trace != next.io_trace
|| ||
prev.eval_cxt?.io_trace_index != next.eval_cxt.io_trace_index prev.rt_cxt?.io_trace_index != next.rt_cxt.io_trace_index
) { ) {
ui.render_io_trace(next) ui.render_io_trace(next)
} }

View File

@@ -480,10 +480,10 @@ export const eval_modules = (
return { return {
modules: result.modules, modules: result.modules,
logs: result.logs, logs: result.logs,
eval_cxt: result.eval_cxt, rt_cxt: result.rt_cxt,
calltree, calltree,
calltree_node_by_loc: result.calltree_node_by_loc, calltree_node_by_loc: result.calltree_node_by_loc,
io_trace: result.eval_cxt.io_trace, io_trace: result.rt_cxt.io_trace,
} }
} }

View File

@@ -255,17 +255,17 @@ export const with_code_execution = (action, state = get_state()) => {
call toJSON(), which can call trigger deferred call (see lodash.js lazy call toJSON(), which can call trigger deferred call (see lodash.js lazy
chaining) chaining)
*/ */
if(state.eval_cxt != null) { if(state.rt_cxt != null) {
state.eval_cxt.is_recording_deferred_calls = false state.rt_cxt.is_recording_deferred_calls = false
state.eval_cxt.skip_save_ct_node_for_path = true state.rt_cxt.skip_save_ct_node_for_path = true
} }
try { try {
return action() return action()
} finally { } finally {
if(state.eval_cxt != null) { if(state.rt_cxt != null) {
state.eval_cxt.is_recording_deferred_calls = true state.rt_cxt.is_recording_deferred_calls = true
state.eval_cxt.skip_save_ct_node_for_path = false state.rt_cxt.skip_save_ct_node_for_path = false
} }
} }
} }

View File

@@ -122,7 +122,7 @@ const do_run = function*(module_fns, cxt, io_trace){
modules: cxt.modules, modules: cxt.modules,
calltree, calltree,
logs: _logs, logs: _logs,
eval_cxt: cxt, rt_cxt: cxt,
calltree_node_by_loc, calltree_node_by_loc,
} }
} }
@@ -130,9 +130,9 @@ const do_run = function*(module_fns, cxt, io_trace){
export const run = gen_to_promise(function*(module_fns, cxt, io_trace) { export const run = gen_to_promise(function*(module_fns, cxt, io_trace) {
const result = yield* do_run(module_fns, cxt, io_trace) const result = yield* do_run(module_fns, cxt, io_trace)
if(result.eval_cxt.io_trace_is_replay_aborted) { if(result.rt_cxt.io_trace_is_replay_aborted) {
// TODO test next line // TODO test next line
result.eval_cxt.is_recording_deferred_calls = false result.rt_cxt.is_recording_deferred_calls = false
// run again without io trace // run again without io trace
return yield* do_run(module_fns, cxt, null) return yield* do_run(module_fns, cxt, null)

View File

@@ -2749,11 +2749,11 @@ const y = x()`
assert_equal(s3.current_calltree_node.toplevel, true) assert_equal(s3.current_calltree_node.toplevel, true)
// Go back to fn // Go back to fn
assert_equal(s3.eval_cxt == null, false) assert_equal(s3.rt_cxt == null, false)
const s4 = COMMANDS.move_cursor( const s4 = COMMANDS.move_cursor(
{...s3, {...s3,
// Set eval_cxt to null, ensure eval would not be called again // Set rt_cxt to null, ensure eval would not be called again
eval_cxt: null rt_cxt: null
}, },
code.indexOf('1') code.indexOf('1')
) )
@@ -2837,10 +2837,10 @@ const y = x()`
// Check that when we move cursor inside unreachable function, find_call // Check that when we move cursor inside unreachable function, find_call
// not called again // not called again
assert_equal(s2.eval_cxt != null, true) assert_equal(s2.rt_cxt != null, true)
const s3 = COMMANDS.move_cursor( const s3 = COMMANDS.move_cursor(
// Set eval_cxt to null, ensure it would not be called again // Set rt_cxt to null, ensure it would not be called again
{...s2, eval_cxt: null}, {...s2, rt_cxt: null},
code.indexOf('2') code.indexOf('2')
) )
assert_equal(s3.active_calltree_node, null) assert_equal(s3.active_calltree_node, null)
@@ -3858,7 +3858,7 @@ const y = x()`
const next = COMMANDS.input(initial, `const x = Math.random()*2`, 0).state const next = COMMANDS.input(initial, `const x = Math.random()*2`, 0).state
assert_equal(next.value_explorer.result.value, 2) assert_equal(next.value_explorer.result.value, 2)
assert_equal(next.eval_cxt.io_trace_index, 1) assert_equal(next.rt_cxt.io_trace_index, 1)
// Patch Math.random to return 2. // Patch Math.random to return 2.
// TODO The first call to Math.random() is cached with value 1, and the // TODO The first call to Math.random() is cached with value 1, and the
@@ -4030,7 +4030,7 @@ const y = x()`
const state = on_deferred_call(i) const state = on_deferred_call(i)
// Deferred calls should not be record in cache // Deferred calls should not be record in cache
assert_equal(state.eval_cxt.io_trace.length, 0) assert_equal(state.rt_cxt.io_trace.length, 0)
}), }),
test('record io discard prev execution', () => { test('record io discard prev execution', () => {