|
|
|
Apologies, the real issue was closed - 1207781 [1].
[1] http://sourceforge.net/tracker/index.php?func=detail&aid=1207781&group_id=128805&atid=712771 In the B2 compiler the registers are divided into being used for the stack, local variables and temporaries. Performing the copy elimination which is tracked by RVM-161.
Hmmm. I hope that I didn't make things unnecessarily complicated by opening a new issue when there are others that are somewhat similar. But it should be noted that this issue is greater than just the baseline compiler - I'm also cleaning up other places (notably, the C and assembly code in tools/bootImageRunner) where the JTOC is being passed around unnecessarily given that the native code also at all times knows the JTOC anyway via a global variable. The baseline compiler fix that I will perform will be minor, and will likely not have a big impact on the work of RVM-161.
For me the bigger issue is that for my native threading prototype I found places where I'd either have to continue to humor the infrastructure by passing the JTOC as if it was variable, or I could just clean the system up and not have a variable JTOC. This patch-in-progress represents the latter. I think it's a good idea to clean this up. It's been a long standing issue and we haven't cleaned it up other than in the compiler for B2. I just wanted to make sure it linked properly into all the issues we have and have had going for this.
An aside if you're cleaning up the C code is RVM-79, we're dumping the wrong floating point registers. We need to change the processing of the context to pick up the XMM registers instead/as well.
Just an update ... I got this working on IA-32. Now I'm going to make sure that PPC is not broken. I include the current patch, in case anyone wants to see where I am so far.
Hi Filip, the patch is looking good! I wonder if there isn't a bit of creep coming into it though. For example, changing all the references in the x86 assembler of Offset to Address is distinct work from the valuable removal of the JTOC. Also, beware that some of the C interfaces are the way they are to help build on AIX. If you can help the person who will eventually apply the patch to the trunk by trying to make distinct patches it'd be appreciated. There are some notes in the wiki and doing local version management:
http://jikesrvm.org/Get+The+Source As a SoC student you will be given write permissions to SVN branches, so this will also help. Separating the assembler changes is reasonable. I'll do that once I get the PPC side to work.
Patches separated - a well-cooked patch on the assembler is submitted under
Included is a seemingly working patch. It works on IA32 and PPC. Only tested on Linux, but I think I was careful with the AIX issues.
NOTE: this patch will not work without the patch in
patch committed with minor adjustments due to code changes since patch submitted in r14228.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[1] http://sourceforge.net/tracker/index.php?func=detail&aid=1571462&group_id=128805&atid=712771