8231756: [JVMCI] need support for deoptimizing virtual byte arrays encoding non-byte primitives

Reviewed-by: kvn
This commit is contained in:
Tom Rodriguez 2020-04-17 09:31:37 -07:00
parent 430f8020fd
commit 12f8b52fb8
13 changed files with 332 additions and 72 deletions

View file

@ -97,7 +97,7 @@ ScopeValue* DebugInfoReadStream::get_cached_object() {
enum { LOCATION_CODE = 0, CONSTANT_INT_CODE = 1, CONSTANT_OOP_CODE = 2,
CONSTANT_LONG_CODE = 3, CONSTANT_DOUBLE_CODE = 4,
OBJECT_CODE = 5, OBJECT_ID_CODE = 6,
AUTO_BOX_OBJECT_CODE = 7 };
AUTO_BOX_OBJECT_CODE = 7, MARKER_CODE = 8 };
ScopeValue* ScopeValue::read_from(DebugInfoReadStream* stream) {
ScopeValue* result = NULL;
@ -110,6 +110,7 @@ ScopeValue* ScopeValue::read_from(DebugInfoReadStream* stream) {
case OBJECT_CODE: result = stream->read_object_value(false /*is_auto_box*/); break;
case AUTO_BOX_OBJECT_CODE: result = stream->read_object_value(true /*is_auto_box*/); break;
case OBJECT_ID_CODE: result = stream->get_cached_object(); break;
case MARKER_CODE: result = new MarkerValue(); break;
default: ShouldNotReachHere();
}
return result;
@ -130,6 +131,16 @@ void LocationValue::print_on(outputStream* st) const {
location().print_on(st);
}
// MarkerValue
void MarkerValue::write_on(DebugInfoWriteStream* stream) {
stream->write_int(MARKER_CODE);
}
void MarkerValue::print_on(outputStream* st) const {
st->print("marker");
}
// ObjectValue
void ObjectValue::set_value(oop value) {