| Date: Tue, 13 Feb 2001 18:25:42 -0600 |
| From: Vikram S. Adve <vadve@cs.uiuc.edu> |
| To: Chris Lattner <sabre@nondot.org> |
| Subject: RE: LLVM Concerns... |
| |
| > 1. Reference types |
| > Right now, I've spec'd out the language to have a pointer type, which |
| > works fine for lots of stuff... except that Java really has |
| > references: constrained pointers that cannot be manipulated: added and |
| > subtracted, moved, etc... Do we want to have a type like this? It |
| > could be very nice for analysis (pointer always points to the start of |
| > an object, etc...) and more closely matches Java semantics. The |
| > pointer type would be kept for C++ like semantics. Through analysis, |
| > C++ pointers could be promoted to references in the LLVM |
| > representation. |
| |
| |
| You're right, having references would be useful. Even for C++ the *static* |
| compiler could generate references instead of pointers with fairly |
| straightforward analysis. Let's include a reference type for now. But I'm |
| also really concerned that LLVM is becoming big and complex and (perhaps) |
| too high-level. After we get some initial performance results, we may have |
| a clearer idea of what our goals should be and we should revisit this |
| question then. |
| |
| > 2. Our "implicit" memory references in assembly language: |
| > After thinking about it, this model has two problems: |
| > A. If you do pointer analysis and realize that two stores are |
| > independent and can share the same memory source object, |
| |
| not sure what you meant by "share the same memory source object" |
| |
| > there is |
| > no way to represent this in either the bytecode or assembly. |
| > B. When parsing assembly/bytecode, we effectively have to do a full |
| > SSA generation/PHI node insertion pass to build the dependencies |
| > when we don't want the "pinned" representation. This is not |
| > cool. |
| |
| I understand the concern. But again, let's focus on the performance first |
| and then look at the language design issues. E.g., it would be good to know |
| how big the bytecode files are before expanding them further. I am pretty |
| keen to explore the implications of LLVM for mobile devices. Both bytecode |
| size and power consumption are important to consider there. |
| |
| --Vikram |
| |