Skip to content

Commit f4d8058

Browse files
committed
Improved debugging.
1 parent c19848d commit f4d8058

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

regalloc.rb

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ def evict_by_cache cache
163163
return if !cache
164164
@cached.delete(cache.var)
165165
r = cache.reg
166-
debug_is_register?(r)
166+
debug_is_register?(r, "evict_by_cache")
167167
cache.spill!
168168
@by_reg.delete(r)
169169
# FIXME: BUG workaround? (was on one line)
@@ -213,9 +213,9 @@ def mark_dirty(reg, block)
213213
r.spill = block if r
214214
end
215215

216-
def debug_is_register?(reg)
216+
def debug_is_register?(reg, where)
217217
return if reg && reg.to_sym == @selfreg
218-
raise "NOT A REGISTER: #{reg.to_s}" if !reg || !@registers.member?(reg.to_sym)
218+
raise "NOT A REGISTER: #{reg.inspect} in #{where}" if !reg || !@registers.member?(reg.to_sym)
219219
end
220220

221221
# Called to "cache" a variable in a register. If no register is
@@ -238,7 +238,7 @@ def cache_reg!(var)
238238
end
239239

240240
if free
241-
debug_is_register?(free)
241+
debug_is_register?(free, "cache_reg!")
242242
c = Cache.new(free,var)
243243
k = var.to_sym
244244
@cached[k] = c
@@ -267,7 +267,7 @@ def lock_reg(reg)
267267
# Low level
268268
def free!(free)
269269
@allocated_registers.delete(free)
270-
debug_is_register?(free)
270+
debug_is_register?(free, "free!")
271271
@free_registers << free
272272
end
273273

@@ -290,14 +290,17 @@ def with_register(required_reg = nil)
290290
# registers is in use as cache, see if we can evict one of
291291
# them.
292292

293-
if !@cached.empty?
293+
if @cached.empty?
294+
#STDERR.puts "No cached registers?"
295+
else
294296
# Figure out which register to drop, based on order.
295297
# (least frequently used variable evicted first)
296298
r = @order.reverse
297299
r.each do |v|
298300
# @FIXME: Workaround for @bug below
299301
if !free
300302
c = @cached[v]
303+
#STDERR.puts "c: #{c.inspect}"
301304
if c
302305
if !c.locked
303306
# @FIXME
@@ -316,8 +319,6 @@ def with_register(required_reg = nil)
316319
end
317320
end
318321

319-
debug_is_register?(free)
320-
321322
if !free
322323
# This really should not happen, unless we are
323324
# very careless about #with_register blocks.
@@ -331,6 +332,8 @@ def with_register(required_reg = nil)
331332
1/0
332333
end
333334

335+
debug_is_register?(free, "with_register")
336+
334337
# This is for debugging of the allocator - we store
335338
# a backtrace of where in the compiler the allocation
336339
# was attempted from in case we run out of registers

0 commit comments

Comments
 (0)