src/share/vm/opto/library_call.cpp

changeset 1165
9c6be3edf0dc
parent 1116
fbde8ec322d0
child 1210
93c14e5562c4
     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(), "");

mercurial