Replay Composition
Function Step Replay
Jump and Return
A function call is a small replay composition: the main script pauses while the function body produces a value, then the caller continues.
Program
Play the script to choose a request count and watch the replay jump into the function before returning to the caller.
function_step_replay.R
Replay: real traced execution (multi-file project)
score_bonus <- function(count) {
points <- count * 2
points
}
request_count <- 3
base_score <- 10
bonus <- score_bonus(request_count)
total <- base_score + bonus
label <- paste(request_count, total, sep = ":")
cat(label, "\n", sep = "")
score_bonus <- function(count) {
points <- count * 2
points
}
request_count <- 2
base_score <- 10
bonus <- score_bonus(request_count)
total <- base_score + bonus
label <- paste(request_count, total, sep = ":")
cat(label, "\n", sep = "")
score_bonus <- function(count) {
points <- count * 2
points
}
request_count <- 5
base_score <- 10
bonus <- score_bonus(request_count)
total <- base_score + bonus
label <- paste(request_count, total, sep = ":")
cat(label, "\n", sep = "")
score_bonus ← function(count)
1score_bonus <- function(count) {2 points <- count * 2values this stepfunction(count)score_bonusrequest_count ← 3
4}5request_count <- 36base_score <- 10values this step3request_countbase_score ← 10
5request_count <- 36base_score <- 107bonus <- score_bonus(request_count)values this step10base_scorebonus <- score_bonus(request_count)
6base_score <- 107bonus <- score_bonus(request_count)8total <- base_score + bonusvalues this step3request_countpoints ← 6
1score_bonus <- function(count) {2 points <- count * 23 pointsvalues this step6points3countpoints
2 points <- count * 23 points4}values this step6pointsbonus ← 6
6base_score <- 107bonus <- score_bonus(request_count)8total <- base_score + bonusvalues this step6bonustotal ← 16
7bonus <- score_bonus(request_count)8total <- base_score + bonus9label <- paste(request_count, total, sep = ":")values this step16total10base_score6bonuslabel ← 3:16
8total <- base_score + bonus9label <- paste(request_count, total, sep = ":")10cat(label, "\n", sep = "")values this step3:16label3request_count16totalcat(label, " ", sep = "")
9label <- paste(request_count, total, sep = ":")10cat(label, "\n", sep = "")output3:16values this step3:16label
score_bonus ← function(count)
1score_bonus <- function(count) {2 points <- count * 2values this stepfunction(count)score_bonusrequest_count ← 2
4}5request_count <- 26base_score <- 10values this step2request_countbase_score ← 10
5request_count <- 26base_score <- 107bonus <- score_bonus(request_count)values this step10base_scorebonus <- score_bonus(request_count)
6base_score <- 107bonus <- score_bonus(request_count)8total <- base_score + bonusvalues this step2request_countpoints ← 4
1score_bonus <- function(count) {2 points <- count * 23 pointsvalues this step4points2countpoints
2 points <- count * 23 points4}values this step4pointsbonus ← 4
6base_score <- 107bonus <- score_bonus(request_count)8total <- base_score + bonusvalues this step4bonustotal ← 14
7bonus <- score_bonus(request_count)8total <- base_score + bonus9label <- paste(request_count, total, sep = ":")values this step14total10base_score4bonuslabel ← 2:14
8total <- base_score + bonus9label <- paste(request_count, total, sep = ":")10cat(label, "\n", sep = "")values this step2:14label2request_count14totalcat(label, " ", sep = "")
9label <- paste(request_count, total, sep = ":")10cat(label, "\n", sep = "")output2:14values this step2:14label
score_bonus ← function(count)
1score_bonus <- function(count) {2 points <- count * 2values this stepfunction(count)score_bonusrequest_count ← 5
4}5request_count <- 56base_score <- 10values this step5request_countbase_score ← 10
5request_count <- 56base_score <- 107bonus <- score_bonus(request_count)values this step10base_scorebonus <- score_bonus(request_count)
6base_score <- 107bonus <- score_bonus(request_count)8total <- base_score + bonusvalues this step5request_countpoints ← 10
1score_bonus <- function(count) {2 points <- count * 23 pointsvalues this step10points5countpoints
2 points <- count * 23 points4}values this step10pointsbonus ← 10
6base_score <- 107bonus <- score_bonus(request_count)8total <- base_score + bonusvalues this step10bonustotal ← 20
7bonus <- score_bonus(request_count)8total <- base_score + bonus9label <- paste(request_count, total, sep = ":")values this step20total10base_score10bonuslabel ← 5:20
8total <- base_score + bonus9label <- paste(request_count, total, sep = ":")10cat(label, "\n", sep = "")values this step5:20label5request_count20totalcat(label, " ", sep = "")
9label <- paste(request_count, total, sep = ":")10cat(label, "\n", sep = "")output5:20values this step5:20label
function body
The function body has its own local names while it is executing.
call jump
The call line hands control to the function body and then receives the returned value.
single panel
This is still one source panel with one ordered trace stream.