comparison src/share/vm/c1/c1_GraphBuilder.cpp @ 2446:13bc79b5c9c8

7033154: Improve C1 arraycopy performance Summary: better static analysis. Take advantage of array copy stubs. Reviewed-by: never
author roland
date Sun, 03 Apr 2011 12:00:54 +0200
parents 3d58a4983660
children 5d046bf49ce7
comparison
equal deleted inserted replaced
2445:08eb13460b3a 2446:13bc79b5c9c8
2822 2822
2823 // Set up locals for receiver 2823 // Set up locals for receiver
2824 int idx = 0; 2824 int idx = 0;
2825 if (!method()->is_static()) { 2825 if (!method()->is_static()) {
2826 // we should always see the receiver 2826 // we should always see the receiver
2827 state->store_local(idx, new Local(objectType, idx)); 2827 state->store_local(idx, new Local(method()->holder(), objectType, idx));
2828 idx = 1; 2828 idx = 1;
2829 } 2829 }
2830 2830
2831 // Set up locals for incoming arguments 2831 // Set up locals for incoming arguments
2832 ciSignature* sig = method()->signature(); 2832 ciSignature* sig = method()->signature();
2834 ciType* type = sig->type_at(i); 2834 ciType* type = sig->type_at(i);
2835 BasicType basic_type = type->basic_type(); 2835 BasicType basic_type = type->basic_type();
2836 // don't allow T_ARRAY to propagate into locals types 2836 // don't allow T_ARRAY to propagate into locals types
2837 if (basic_type == T_ARRAY) basic_type = T_OBJECT; 2837 if (basic_type == T_ARRAY) basic_type = T_OBJECT;
2838 ValueType* vt = as_ValueType(basic_type); 2838 ValueType* vt = as_ValueType(basic_type);
2839 state->store_local(idx, new Local(vt, idx)); 2839 state->store_local(idx, new Local(type, vt, idx));
2840 idx += type->size(); 2840 idx += type->size();
2841 } 2841 }
2842 2842
2843 // lock synchronized method 2843 // lock synchronized method
2844 if (method()->is_synchronized()) { 2844 if (method()->is_synchronized()) {