Check-in [ea7b788fb4]
Bounty program for improvements to Tcl and certain Tcl packages.

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Keep dictionary iterations out of the callframe - they can never be addressed by upvar
Timelines: family | ancestors | descendants | both | kbk-refactor-callframe
Files: files | file ages | folders
SHA3-256: ea7b788fb47c28dbebe9c61c6d8432618f895aaa87501d90a15475e2106867f6
User & Date: kbk 2018-12-29 21:00:16
Context
2019-01-01
21:57
Move callframe moves to the actual points where callframe values are moved. They can then be optimized by avaiability and liveness analysis. check-in: dbd9571178 user: kbk tags: notworking, kbk-refactor-callframe
2018-12-29
21:00
Keep dictionary iterations out of the callframe - they can never be addressed by upvar check-in: ea7b788fb4 user: kbk tags: kbk-refactor-callframe
20:26
Open a branch for some experiments on refactoring callframe operations check-in: 7454a5228c user: kbk tags: kbk-refactor-callframe
Changes

Changes to quadcode/translate.tcl.

1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
oo::define quadcode::transformer method index-to-var {varIndex} {
    if {[string match "%*" $varIndex]} {
	set varIndex [string range $varIndex 1 end]
    }
    lassign [lindex [dict get $bytecode variables] $varIndex] flags name
    if {"temp" in $flags} {
	# Variable name is not legal for Tcl scalar local variables
	return [list var ($varIndex)]
    }
    return [list var $name]
}

# exception-target --
#
#	Locate where an exception should go to from the current PC. Do not






|







1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
oo::define quadcode::transformer method index-to-var {varIndex} {
    if {[string match "%*" $varIndex]} {
	set varIndex [string range $varIndex 1 end]
    }
    lassign [lindex [dict get $bytecode variables] $varIndex] flags name
    if {"temp" in $flags} {
	# Variable name is not legal for Tcl scalar local variables
	return [list temp @var$varIndex]
    }
    return [list var $name]
}

# exception-target --
#
#	Locate where an exception should go to from the current PC. Do not