Mercurial > hg > graal-compiler
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()) { |