Mercurial > hg > truffle
comparison src/share/vm/runtime/vframeArray.cpp @ 818:b109e761e927
6837472: com/sun/jdi/MonitorFrameInfo.java fails with AggressiveOpts in 6u14
Summary: Disable escape analysis when jvmti/debugger is used. Add support for EA ibto SA.
Reviewed-by: never
author | kvn |
---|---|
date | Tue, 09 Jun 2009 16:19:10 -0700 |
parents | a61af66fc99e |
children | bd02caa94611 9987d9d5eb0e |
comparison
equal
deleted
inserted
replaced
793:eacd97c88873 | 818:b109e761e927 |
---|---|
59 vf->thread()->add_monitor_chunk(_monitors); | 59 vf->thread()->add_monitor_chunk(_monitors); |
60 | 60 |
61 // Migrate the BasicLocks from the stack to the monitor chunk | 61 // Migrate the BasicLocks from the stack to the monitor chunk |
62 for (index = 0; index < list->length(); index++) { | 62 for (index = 0; index < list->length(); index++) { |
63 MonitorInfo* monitor = list->at(index); | 63 MonitorInfo* monitor = list->at(index); |
64 assert(!monitor->owner_is_scalar_replaced(), "object should be reallocated already"); | |
64 assert(monitor->owner() == NULL || (!monitor->owner()->is_unlocked() && !monitor->owner()->has_bias_pattern()), "object must be null or locked, and unbiased"); | 65 assert(monitor->owner() == NULL || (!monitor->owner()->is_unlocked() && !monitor->owner()->has_bias_pattern()), "object must be null or locked, and unbiased"); |
65 BasicObjectLock* dest = _monitors->at(index); | 66 BasicObjectLock* dest = _monitors->at(index); |
66 dest->set_obj(monitor->owner()); | 67 dest->set_obj(monitor->owner()); |
67 monitor->lock()->move_to(monitor->owner(), dest->lock()); | 68 monitor->lock()->move_to(monitor->owner(), dest->lock()); |
68 } | 69 } |
87 _locals = new StackValueCollection(locs->size()); | 88 _locals = new StackValueCollection(locs->size()); |
88 for(index = 0; index < locs->size(); index++) { | 89 for(index = 0; index < locs->size(); index++) { |
89 StackValue* value = locs->at(index); | 90 StackValue* value = locs->at(index); |
90 switch(value->type()) { | 91 switch(value->type()) { |
91 case T_OBJECT: | 92 case T_OBJECT: |
93 assert(!value->obj_is_scalar_replaced(), "object should be reallocated already"); | |
92 // preserve object type | 94 // preserve object type |
93 _locals->add( new StackValue((intptr_t) (value->get_obj()()), T_OBJECT )); | 95 _locals->add( new StackValue((intptr_t) (value->get_obj()()), T_OBJECT )); |
94 break; | 96 break; |
95 case T_CONFLICT: | 97 case T_CONFLICT: |
96 // A dead local. Will be initialized to null/zero. | 98 // A dead local. Will be initialized to null/zero. |
111 _expressions = new StackValueCollection(exprs->size()); | 113 _expressions = new StackValueCollection(exprs->size()); |
112 for(index = 0; index < exprs->size(); index++) { | 114 for(index = 0; index < exprs->size(); index++) { |
113 StackValue* value = exprs->at(index); | 115 StackValue* value = exprs->at(index); |
114 switch(value->type()) { | 116 switch(value->type()) { |
115 case T_OBJECT: | 117 case T_OBJECT: |
118 assert(!value->obj_is_scalar_replaced(), "object should be reallocated already"); | |
116 // preserve object type | 119 // preserve object type |
117 _expressions->add( new StackValue((intptr_t) (value->get_obj()()), T_OBJECT )); | 120 _expressions->add( new StackValue((intptr_t) (value->get_obj()()), T_OBJECT )); |
118 break; | 121 break; |
119 case T_CONFLICT: | 122 case T_CONFLICT: |
120 // A dead stack element. Will be initialized to null/zero. | 123 // A dead stack element. Will be initialized to null/zero. |