From c6c72b27f793932c3089e3922a69d979566a163c Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Mon, 18 May 2009 02:20:59 -0400 Subject: [PATCH] Bug 492490 - nanojit: move Assembler::findVictim() from RegAlloc.cpp to Assembler.cpp --- js/src/nanojit/Assembler.cpp | 22 ++++++++++++++++++++++ js/src/nanojit/RegAlloc.cpp | 22 ---------------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/js/src/nanojit/Assembler.cpp b/js/src/nanojit/Assembler.cpp index d4f7328fad78..667ed72072bc 100644 --- a/js/src/nanojit/Assembler.cpp +++ b/js/src/nanojit/Assembler.cpp @@ -1795,6 +1795,28 @@ namespace nanojit debug_only(saved.used = 0); // marker that we are no longer in exit path } + // scan table for instruction with the lowest priority, meaning it is used + // furthest in the future. + LIns* Assembler::findVictim(RegAlloc ®s, RegisterMask allow) + { + NanoAssert(allow != 0); + LIns *i, *a=0; + int allow_pri = 0x7fffffff; + for (Register r=FirstReg; r <= LastReg; r = nextreg(r)) + { + if ((allow & rmask(r)) && (i = regs.getActive(r)) != 0) + { + int pri = canRemat(i) ? 0 : regs.getPriority(r); + if (!a || pri < allow_pri) { + a = i; + allow_pri = pri; + } + } + } + NanoAssert(a != 0); + return a; + } + #ifdef NJ_VERBOSE char Assembler::outline[8192]; char Assembler::outlineEOL[512]; diff --git a/js/src/nanojit/RegAlloc.cpp b/js/src/nanojit/RegAlloc.cpp index dbc6bc0fa81e..f630af061d71 100644 --- a/js/src/nanojit/RegAlloc.cpp +++ b/js/src/nanojit/RegAlloc.cpp @@ -96,28 +96,6 @@ namespace nanojit free |= rmask(r); } - // scan table for instruction with the lowest priority, meaning it is used - // furthest in the future. - LIns* Assembler::findVictim(RegAlloc ®s, RegisterMask allow) - { - NanoAssert(allow != 0); - LIns *i, *a=0; - int allow_pri = 0x7fffffff; - for (Register r=FirstReg; r <= LastReg; r = nextreg(r)) - { - if ((allow & rmask(r)) && (i = regs.getActive(r)) != 0) - { - int pri = canRemat(i) ? 0 : regs.getPriority(r); - if (!a || pri < allow_pri) { - a = i; - allow_pri = pri; - } - } - } - NanoAssert(a != 0); - return a; - } - #ifdef NJ_VERBOSE /* static */ void RegAlloc::formatRegisters(RegAlloc& regs, char* s, Fragment *frag) {