1.1 --- a/src/share/vm/opto/library_call.cpp Wed Apr 22 17:03:18 2009 -0700 1.2 +++ b/src/share/vm/opto/library_call.cpp Thu Apr 23 14:04:24 2009 -0700 1.3 @@ -3055,9 +3055,7 @@ 1.4 // Normal case: The array type has been cached in the java.lang.Class. 1.5 // The following call works fine even if the array type is polymorphic. 1.6 // It could be a dynamic mix of int[], boolean[], Object[], etc. 1.7 - _sp += nargs; // set original stack for use by uncommon_trap 1.8 - Node* obj = new_array(klass_node, count_val); 1.9 - _sp -= nargs; 1.10 + Node* obj = new_array(klass_node, count_val, nargs); 1.11 result_reg->init_req(_normal_path, control()); 1.12 result_val->init_req(_normal_path, obj); 1.13 result_io ->init_req(_normal_path, i_o()); 1.14 @@ -3179,9 +3177,7 @@ 1.15 Node* orig_tail = _gvn.transform( new(C, 3) SubINode(orig_length, start) ); 1.16 Node* moved = generate_min_max(vmIntrinsics::_min, orig_tail, length); 1.17 1.18 - _sp += nargs; // set original stack for use by uncommon_trap 1.19 - Node* newcopy = new_array(klass_node, length); 1.20 - _sp -= nargs; 1.21 + Node* newcopy = new_array(klass_node, length, nargs); 1.22 1.23 // Generate a direct call to the right arraycopy function(s). 1.24 // We know the copy is disjoint but we might not know if the 1.25 @@ -3903,10 +3899,8 @@ 1.26 set_control(array_ctl); 1.27 Node* obj_length = load_array_length(obj); 1.28 Node* obj_size = NULL; 1.29 - _sp += nargs; // set original stack for use by uncommon_trap 1.30 - Node* alloc_obj = new_array(obj_klass, obj_length, 1.31 + Node* alloc_obj = new_array(obj_klass, obj_length, nargs, 1.32 raw_mem_only, &obj_size); 1.33 - _sp -= nargs; 1.34 assert(obj_size != NULL, ""); 1.35 Node* raw_obj = alloc_obj->in(1); 1.36 assert(raw_obj->is_Proj() && raw_obj->in(0)->is_Allocate(), "");