RFR (L): 7173584: Implement arraycopy as a macro node
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 == predicate_proj->_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 != predicate_proj->_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