116: def generate_packed_method
117: %Q{
118: def #{@meth}(*args, &block)
119: #p ["#{@meth} 1"]
120: call_id = "" << self.object_id.abs.to_s << args.object_id.abs.to_s
121: Benelux.current_track :global unless Benelux.known_thread?
122: mark_a = Benelux.current_track.timeline.add_mark :'#{@aliaz}_a'
123: mark_a.add_tag :call_id => call_id
124: tags = mark_a.tags
125: ret = #{@methorig}(*args, &block)
126: #p ["#{@meth} 2"]
127: ret
128: rescue => ex # We do this so we can use
129: raise ex # ex in the ensure block.
130: ensure
131: mark_z = Benelux.current_track.timeline.add_mark :'#{@aliaz}_z'
132: mark_z.tags = tags # In case tags were added between these marks
133: range = Benelux.current_track.timeline.add_range :'#{@aliaz}', mark_a, mark_z
134: range.exception = ex if defined?(ex) && !ex.nil?
135: end
136: }
137: end