src/share/vm/opto/library_call.cpp

changeset 6733
00c8a1255912
parent 6711
dbf0d88d867d
child 6876
710a3c8b516e
child 7026
922c87c9aed4
     1.1 --- a/src/share/vm/opto/library_call.cpp	Fri Jun 13 15:04:38 2014 -0700
     1.2 +++ b/src/share/vm/opto/library_call.cpp	Tue Jun 17 09:02:30 2014 +0000
     1.3 @@ -4576,7 +4576,10 @@
     1.4        // It's an instance, and it passed the slow-path tests.
     1.5        PreserveJVMState pjvms(this);
     1.6        Node* obj_size  = NULL;
     1.7 -      Node* alloc_obj = new_instance(obj_klass, NULL, &obj_size);
     1.8 +      // Need to deoptimize on exception from allocation since Object.clone intrinsic
     1.9 +      // is reexecuted if deoptimization occurs and there could be problems when merging
    1.10 +      // exception state between multiple Object.clone versions (reexecute=true vs reexecute=false).
    1.11 +      Node* alloc_obj = new_instance(obj_klass, NULL, &obj_size, /*deoptimize_on_exception=*/true);
    1.12  
    1.13        copy_to_clone(obj, alloc_obj, obj_size, false, !use_ReduceInitialCardMarks());
    1.14  

mercurial