From: Steve B. <Ste...@an...> - 2006-12-24 03:06:29
|
On 24/12/2006, at 10:16 AM, Eliot Moss wrote: >>>>>> "Peter" == Peter Donald <pe...@re...> writes: > > Peter> On 12/24/06, Eliot Moss <mo...@cs...> wrote: >>> My question is this: Do we want all the class for all of these in >>> the same boot image? This might lead to serious boot image bloat. >>> How do >>> you avoid it? > > Peter> I recorded what Dave said about the minimal Primordial > Class List at > Peter> [1]. So in theory if we can automagically determine this > minimal set > Peter> then the size of the boot image would be limited to that > size and > Peter> should be mostly stable across configurations. Each > configuration > Peter> could optionally include its related packages (ie **/ > *IA32*.class for > Peter> intel target architecture, org/ibm/jikesrvm/opt/**/ > *.class for > Peter> optimizing compiler etc) > > Peter> [1] http://jikesrvm.sourceforge.net/wiki/index.php/ > Primordial_Class_List > > Yes, except some of the coding strategies you listed would require > all the > classes to be present, because they're all mentioned. I'm not entirely sure what you're referring to (Eliot), but let's be careful to distinguish presence at javac compile time and presence in the boot image. These need not be the same thing and there are a variety of strategies for dealing with pruning. Here you can see what I did a few days ago. This was an entirely pragmatic step in the process of getting rid of the preprocessor. I'm very happy to recode it once we settle on a consistent pattern, so I'm totaly open to (constructive ;) critique. In this case, VM_Configuration (which is "generated" code) nails down at build time a particular archHelper singleton, which will be an arch-specific subtype of VM_MachineSpecific.java: http://svn.sourceforge.net/viewvc/jikesrvm/rvmroot/trunk/rvm/src/com/ ibm/jikesrvm/VM_MachineSpecific.java?view=markup http://svn.sourceforge.net/viewvc/jikesrvm/rvmroot/trunk/rvm/src-ia32/ com/ibm/jikesrvm/VM_MachineSpecificIA.java?view=markup http://svn.sourceforge.net/viewvc/jikesrvm/rvmroot/trunk/rvm/src-ppc/ com/ibm/jikesrvm/VM_MachineSpecificPowerPC.java?view=markup http://svn.sourceforge.net/viewvc/jikesrvm/rvmroot/trunk/rvm/src- generated/vm-configuration/VM_Configuration.java? revision=11245&view=markup Given the cleanup I'm undertaking right now, I'd move jikesrvm.VM_MachineSpecificIA to jikesrvm.ia.VM_MachineSpecific and VM_MachineSpecificPowerPC to jikesrvm.ppc.VM_MachineSpecific, while retaining the naming of the subclasses (modulo the details of "EM64T" v "IA64" v "x86-64" etc). --Steve |