--- a/hotspot/src/share/vm/runtime/deoptimization.cpp Thu Apr 28 13:26:29 2016 +0000
+++ b/hotspot/src/share/vm/runtime/deoptimization.cpp Fri Apr 29 02:13:40 2016 +0300
@@ -763,7 +763,7 @@
guarantee(false, "wrong number of expression stack elements during deopt");
}
VerifyOopClosure verify;
- iframe->oops_interpreted_do(&verify, NULL, &rm, false);
+ iframe->oops_interpreted_do(&verify, &rm, false);
callee_size_of_parameters = mh->size_of_parameters();
callee_max_locals = mh->max_locals();
is_top_frame = false;
@@ -897,13 +897,25 @@
break;
}
- case T_SHORT: case T_CHAR: // 2 bytes
+ case T_SHORT:
assert(value->type() == T_INT, "Agreement.");
val = value->get_int();
obj->short_at_put(index, (jshort)*((jint*)&val));
break;
- case T_BOOLEAN: case T_BYTE: // 1 byte
+ case T_CHAR:
+ assert(value->type() == T_INT, "Agreement.");
+ val = value->get_int();
+ obj->char_at_put(index, (jchar)*((jint*)&val));
+ break;
+
+ case T_BYTE:
+ assert(value->type() == T_INT, "Agreement.");
+ val = value->get_int();
+ obj->byte_at_put(index, (jbyte)*((jint*)&val));
+ break;
+
+ case T_BOOLEAN:
assert(value->type() == T_INT, "Agreement.");
val = value->get_int();
obj->bool_at_put(index, (jboolean)*((jint*)&val));
@@ -1018,13 +1030,25 @@
break;
}
- case T_SHORT: case T_CHAR: // 2 bytes
+ case T_SHORT:
assert(value->type() == T_INT, "Agreement.");
val = value->get_int();
obj->short_field_put(offset, (jshort)*((jint*)&val));
break;
- case T_BOOLEAN: case T_BYTE: // 1 byte
+ case T_CHAR:
+ assert(value->type() == T_INT, "Agreement.");
+ val = value->get_int();
+ obj->char_field_put(offset, (jchar)*((jint*)&val));
+ break;
+
+ case T_BYTE:
+ assert(value->type() == T_INT, "Agreement.");
+ val = value->get_int();
+ obj->byte_field_put(offset, (jbyte)*((jint*)&val));
+ break;
+
+ case T_BOOLEAN:
assert(value->type() == T_INT, "Agreement.");
val = value->get_int();
obj->bool_field_put(offset, (jboolean)*((jint*)&val));