Subject: C444 JGSI Review Resent-Date: Thu, 30 Sep 1999 23:17:58 -0400 Resent-From: Geoffrey Fox Resent-To: p_gcf@npac.syr.edu Date: Fri, 17 Sep 1999 22:58:12 -0700 From: heydon@pa.dec.com (Allan Heydon) To: Geoffrey Fox CC: najork@pa.dec.com ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Overall Recommendation: Accept ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This paper describes a number of optimizations performed by IBM's Java JIT compiler, and evaluates their effectiveness. The paper is technically correct and presents results relevant to the Java community. The wording could be improved in places; below are some suggestions for such improvements. I appreciate that the authors solicited the help of a native English speaker to polish the prose; I would recommend a second pass. Detailed comments ~~~~~~~~~~~~~~~~~ Page 2: "Section 0" should read "Section 7" Page 2: "Inlining of Dynamic method call is applied ..." should read "Inlining of Dynamic method calls is applied ..." Page 2: The authors mention that they introduced a new byte code instruction to represent an object's interior pointer. It is not clear to me why they needed to introduce a new byte code, as opposed to just generating the appropriate PowerPC instruction. Page 3: "... was reduced to 6 by the existing method, ..." would be clearer as "... was reduced to 6 by Gupta's method, ..." Example 2: (Keep in mind that I don't know PowerPC assembly.) I did not understand the instruction "twi LLT, r7, 1". I would have expected to see something like "twi EQ, r7, 0" (i.e. trap if r7 is 0), since the next instruction divides r3 by r7. Page 4: "... the top pointer to the object must be kept in the memory or register. Because CSE generates an interior pointer of an object and the garbage collector does not scan an interior pointer of an object because of its performance." is rather confusing. Here's a stab at rephrasing it: "... the top pointer to the object must be kept in memory or in a register, so that the garbage collector classifies the object as reachable. For performance reasons, the collector does not scan the interior pointers generated by CSE." Page 4: "First, ... Finally, ..." don't go together well. Replace by: "First, ... Second, ...." Page 5: "If all of them tests fail" should read "If all of these tests fail" Page 5: "then the C runtime library is executed" should read "then a C function in the Java runtime is executed" Page 5: "In this section, we describe two optimizations of method calls: first, inlining of static method calls. Secondly, and then devirtualization of dynamic method calls." could be phrased more succinctly as: "In this section, we describe two optimizations of method calls: inlining of static method calls, and devirtualization of dynamic method calls." Page 6: "the constructor is invoked when a new class is created" should read "the constructor is invoked when a new object is created". Page 6: "the JIT compiler inlines small method" should read "our JIT compiler inlines small methods". Page 6: "Dynamic method call is an important feature of object-oriented language because of the flexibility, and it is therefore used frequently." I would prefer: "Dynamic method call is the defining feature of object- oriented languages, and is used frequently." Page 6: "... to improve the performance of dynamic method call." --> "... to improve the performance of dynamic method calls." Page 6: "... in which the class hierarchy may change in the future." --> "... in which the class hierarchy may change at runtime." Page 7: "If CHA finds that only a class implements an interface class, ..." --> "If CHA finds that only one class implements an interface, ..." Page 7: "inlining of static method call" --> "inlining of static method calls" Page 7: "raytrace (a body of mtrt)" What is mtrt? Page 8/Figure 2: The authors indicate that Figure 2 shows some dark bars some white bars. However, in my copy of the paper all the bars are white The same is true for Figures 3 through 7; the text suggests that some bars should be non-white, but in my copy, all bars are white. (This problem might have been introduced during the conversion of the paper to PDF ...) Page 9: "Figure 3 shows the distribution of object types in type inclusion test at runtime." --> "Figure 3 shows the distribution of object types in type inclusion tests at runtime." Page 9: "In each case, 14%, 28%, and 45% of the original array accesses are used." I'm not sure what the authors are trying to say here. One interpretation would be: "For db, 14% or the original array accesses are used; for tsgp, 28%; and for tmix, 45%." Page 9: "In all cases, it optimizes ..." --> "In all cases, our method optimizes ..." Page 10: "The performance in devirtualizing dynamic method call ..." --> "The performance in devirtualizing dynamic method calls ..." Page 11: "Therefore, the is still scope to improve ..." --> "Therefore, there is still room to improve ..." Page 12/Section 6.7: I would like to see one extra bar labeled NONE in Figure 8, showing the baseline performance of the benchmark programs, without any of the optimization applied. Also, the authors should clarify if the reported times include the time needed to perform the optimizations, or if this overhead was factored out. Page 12: "Figure 8 thus shows that all optimizations contribute to an improvement in the performance." I would qualify this statement as follows: "Figure 8 thus shows that all optimizations contribute to an improvement in the performance of some of the programs." Page 14: "For javac, the inlined codes of both approaches account for 92%." I'm not sure what the authors are trying to say. Maybe: "For javac, the inlined codes of both approaches are sufficient to decide 92% of all type inclusion tests." Page 14: "... because direct-binded code is undone ..." --> "... because direct binding code is undone ..." Page 14: "... we showed that there is still scope for further improvements of the Java performance." --> "... we showed that there is still room for further performance improvements." ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~