# HG changeset patch # User never # Date 1291247272 28800 # Node ID 0cb042fd2d4b97352542af413b7c14a90847a0dc # Parent 4da76e32c0bed6719da1ab5a4134ca06216daf0b 6875026: CTW failure jdk6_18/hotspot/src/share/vm/c1/c1_LinearScan.cpp:5486 Reviewed-by: kvn, iveresov diff -r 4da76e32c0be -r 0cb042fd2d4b src/cpu/x86/vm/c1_LIRGenerator_x86.cpp --- a/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp Wed Dec 01 10:16:31 2010 -0800 +++ b/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp Wed Dec 01 15:47:52 2010 -0800 @@ -874,6 +874,10 @@ void LIRGenerator::do_ArrayCopy(Intrinsic* x) { assert(x->number_of_arguments() == 5, "wrong type"); + + // Make all state_for calls early since they can emit code + CodeEmitInfo* info = state_for(x, x->state()); + LIRItem src(x->argument_at(0), this); LIRItem src_pos(x->argument_at(1), this); LIRItem dst(x->argument_at(2), this); @@ -916,7 +920,6 @@ ciArrayKlass* expected_type; arraycopy_helper(x, &flags, &expected_type); - CodeEmitInfo* info = state_for(x, x->state()); // we may want to have stack (deoptimization?) __ arraycopy(src.result(), src_pos.result(), dst.result(), dst_pos.result(), length.result(), tmp, expected_type, flags, info); // does add_safepoint }