Index: library/serialize/serializer.tcl =================================================================== diff -u -rc4997e0189bb712287aa53d12bb3e332acfb781d -rde5093e2960746e5727c31f6ef370f6389dbb51a --- library/serialize/serializer.tcl (.../serializer.tcl) (revision c4997e0189bb712287aa53d12bb3e332acfb781d) +++ library/serialize/serializer.tcl (.../serializer.tcl) (revision de5093e2960746e5727c31f6ef370f6389dbb51a) @@ -237,12 +237,6 @@ :public method serialize-objects {list all} { set :post_cmds "" - # register for introspection purposes "trace" under a different - # name for every object system - foreach oss [ObjectSystemSerializer info instances] { - $oss registerTrace 1 - } - :topoSort $list $all #foreach i [lsort [array names :level]] { :warn "$i: [set :level($i)]"} set result "" @@ -258,10 +252,6 @@ set namespace($e) 1 set namespace([namespace qualifiers $e]) 1 } - # remove "trace" from all object systems - foreach oss [ObjectSystemSerializer info instances] { - $oss registerTrace 0 - } # Handling of variable traces: traces might require a # different topological sort, which is hard to handle. @@ -510,14 +500,6 @@ return $cmd } - :public method registerTrace {on} { - if {$on} { - ::nsf::method::alias ${:rootClass} __trace__ -frame object ::trace - } else { - ::nsf::method::create ${:rootClass} __trace__ {} {} - } - } - # # Handle association between objects and responsible serializers # @@ -645,7 +627,10 @@ :method collect-var-traces {o s} { foreach v [$o info vars] { - set t [$o __trace__ info variable $v] + # Use directdispatch to query existing traces without the need + # of an extra method. + set t [::nsf::directdispatch $o -frame object ::trace info variable $v] + if {$t ne ""} { foreach ops $t { foreach {op cmd} $ops break