RFR (L): 7173584: Implement arraycopy as a macro node (original) (raw)

Vladimir Kozlov vladimir.kozlov at oracle.com
Thu Sep 27 12:56:59 PDT 2012


Sorry, somehow I missed this.

Roland Westrelin wrote:

Here is a new one for this (ignore the comments below the file names. They are broken):

http://cr.openjdk.java.net/~roland/7173584/webrev.01/ The 2 changes are: - the fix for 7174363 is merged - I hit an assert once during testing: assert(proj->con == predicateproj->con, "must match"); loopPredicate.cpp line 825 One of the predicates added for an array copy is mistaken for a range check predicate but with the IfTrue/IfFalse projections swapped so I tried to change the code so that proj->con != predicateproj->con is supported.

I am not comfortable with this predicate change. The check come from generate_limit_guard() :

if (a.length u< offset+copy_length) uncommon_trap; else arraycopy;

which is reversed by igvn to

if (offset+copy_length u< a.length) arraycopy; else uncommon_trap;

So it should not be IfFalse projection. Can you explain the case which you hit?

Also instead of duplicating gen_subtype_check() in macroArrayCopy.cpp can you modify the original one to work for you (by passing additional flag)?

Thanks, Vlaidmir

Roland.



More information about the hotspot-compiler-dev mailing list