RFR: 8080746: Refactor oop iteration macros to be more general
Stefan Karlsson
stefan.karlsson at oracle.com
Wed May 20 09:44:54 UTC 2015
Hi Stefan,
On 2015-05-20 10:58, Stefan Johansson wrote:
> Hi,
>
> Please review this change to generalize the oop iteration macros:
> https://bugs.openjdk.java.net/browse/JDK-8080746
>
> Webrev:
> http://cr.openjdk.java.net/~sjohanss/8080746/hotspot.00/
This looks great!
Here's a couple of cleanup/style comments:
========================================================================
http://cr.openjdk.java.net/~sjohanss/8080746/hotspot.00/src/share/vm/oops/klass.hpp.udiff.html
http://cr.openjdk.java.net/~sjohanss/8080746/hotspot.00/src/share/vm/oops/arrayKlass.hpp.udiff.html
--------------------------------------------------------------------------------
Could you visually separate the DEFN and DECL defines so that it's more
obvious that they serve different purposes. It might be worth adding a
comment describing how the DEFN definitions are used.
--------------------------------------------------------------------------------
+ int oop_oop_iterate_range##nv_suffix(oop obj, OopClosureType* blk, \
+ int start, int end);
Could you combine these two lines.
--------------------------------------------------------------------------------
The indentation of the ending backslashes are inconsistent.
--------------------------------------------------------------------------------
Pre-existing naming issue:
+ int oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* blk);
+int KlassType::oop_oop_iterate_backwards##nv_suffix(oop obj,
OopClosureType* closure) { \
Could you change parameter name blk to closure?
--------------------------------------------------------------------------------
========================================================================
http://cr.openjdk.java.net/~sjohanss/8080746/hotspot.00/src/share/vm/oops/objArrayKlass.inline.hpp.frames.html
--------------------------------------------------------------------------------
155 OOP_OOP_ITERATE_DEFN( ObjArrayKlass, OopClosureType,
nv_suffix) \
156 OOP_OOP_ITERATE_DEFN_m( ObjArrayKlass, OopClosureType,
nv_suffix) \
157 OOP_OOP_ITERATE_RANGE_DEFN( ObjArrayKlass, OopClosureType,
nv_suffix) \
158 OOP_OOP_ITERATE_NO_BACKWARDS_DEFN(ObjArrayKlass, OopClosureType,
nv_suffix)
It would be nice to prefix all these macros with OOP_OOP_ITERATE_DEFN
--------------------------------------------------------------------------------
========================================================================
http://cr.openjdk.java.net/~sjohanss/8080746/hotspot.00/src/share/vm/oops/typeArrayKlass.inline.hpp.frames.html
--------------------------------------------------------------------------------
44 template <bool nv, typename OopClosureType>
45 int TypeArrayKlass::oop_oop_iterate(oop obj, OopClosureType*
closure) {
46 return oop_oop_iterate_impl(obj, closure);
47 }
48
49 template <bool nv, typename OopClosureType>
50 int TypeArrayKlass::oop_oop_iterate_bounded(oop obj,
OopClosureType* closure, MemRegion mr) {
51 return oop_oop_iterate_impl(obj, closure);
52 }
I think you should add the inline keyword to these functions.
--------------------------------------------------------------------------------
Thanks,
StefanK
>
> Summary:
> The macros for the oop_oop_iterate functions were defined for all
> *Klass types even though they were very similar. This change extracts
> and generalizes the macros to klass.hpp and arrayKlass.hpp.
>
> For the arrays the *_OOP_OOP_ITERATE_BACKWARDS_* macros is now called
> OOP_OOP_ITERATE_NO_BACKWARDS_* to reflect that for arrays we currently
> don't have a reverse implementation.
>
> Thanks,
> Stefan
More information about the hotspot-dev
mailing list