Status fields:
creation_ts: | 2008-12-23 10:52 |
---|---|
component: | jit |
version: | unspecified |
rep_platform: | alpha |
op_sys: | All |
bug_status: | RESOLVED |
resolution: | FIXED |
reporter: | stefan@complang.tuwien.ac.at |
I finally tracked down the cause of these ArrayIndexOutOfBoundsExceptions in dacapo xalan (see <http://c1.complang.tuwien.ac.at/pipermail/cacao- testresults/2008-December/006514.html>). The guilty changeset is this: <http://mips.complang.tuwien.ac.at/hg/cacao/rev/87efd9870c04>. From the comment: "Don't use REG_ITMP3 in reg_of_var calls". But that's exactly the problem. In xalan, the specific instruction that causes trouble is IUSHR. The generated code looks like this: 0x0000020000fdbe38: a28d0010 ldl a4,16(s4) 0x0000020000fdbe3c: 4683f01c and a4,31,at 0x0000020000fdbe40: 4961f63c zapnot s2,15,at 0x0000020000fdbe44: 4b9c069c srl at,at,at 0x0000020000fdbe48: 439f001c addl at,zero,at 0x0000020000fdbe4c: b79e0000 stq at,0(sp) Using REG_ITMP3 in this specific case (ICMD_IUSHR) fixes xalan. Judging from the comment in the changeset, this is not a good thing to do, though. So I don't know how to repair this.
http://mips.complang.tuwien.ac.at/hg/cacao/rev/c46f48a94d3b This fixes xalan. I'm not sure if I spotted every instance of this problem by manual inspection.
Let's declare this fixed.