# HG changeset patch # User asaha # Date 1456775348 28800 # Node ID a2b0ee820059a44be558a2d435b7d85ed5a8b63a # Parent 4f7fc09d8d669a5847f8bb438030b07c7df2802c# Parent 352f1b2573b09f1580b0cc1506c8f432213ed035 Merge diff -r 4f7fc09d8d66 -r a2b0ee820059 .hgtags --- a/.hgtags Mon Feb 22 13:23:02 2016 -0800 +++ b/.hgtags Mon Feb 29 11:49:08 2016 -0800 @@ -818,6 +818,7 @@ 8c791dd1c24d85ebd18b03d49185c2a25263c129 jdk8u75-b07 e4a935cb6f7178912fd653e2a9514eadec7935ab jdk8u75-b08 e97c45c377eb8d022cfe24b73737fa312107e0a5 jdk8u75-b09 +d44c7e324682a30e064503ef9582d83a41f4173e jdk8u75-b10 d7b01fb81aa8a5437cb03bc36afe15cf0e55fb89 jdk8u76-b00 c1679cc87ba045219169cabb6b9b378c2b5cc578 jdk8u76-b01 218483967e52b419d885d34af4488a81c5133804 jdk8u76-b02 diff -r 4f7fc09d8d66 -r a2b0ee820059 src/share/vm/oops/typeArrayOop.hpp --- a/src/share/vm/oops/typeArrayOop.hpp Mon Feb 22 13:23:02 2016 -0800 +++ b/src/share/vm/oops/typeArrayOop.hpp Mon Feb 29 11:49:08 2016 -0800 @@ -96,7 +96,7 @@ void byte_at_put(int which, jbyte contents) { *byte_at_addr(which) = contents; } jboolean bool_at(int which) const { return *bool_at_addr(which); } - void bool_at_put(int which, jboolean contents) { *bool_at_addr(which) = contents; } + void bool_at_put(int which, jboolean contents) { *bool_at_addr(which) = (((jint)contents) & 1); } jchar char_at(int which) const { return *char_at_addr(which); } void char_at_put(int which, jchar contents) { *char_at_addr(which) = contents; } diff -r 4f7fc09d8d66 -r a2b0ee820059 src/share/vm/runtime/deoptimization.cpp --- a/src/share/vm/runtime/deoptimization.cpp Mon Feb 22 13:23:02 2016 -0800 +++ b/src/share/vm/runtime/deoptimization.cpp Mon Feb 29 11:49:08 2016 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -847,13 +847,25 @@ _obj->int_field_put(offset, (jint)*((jint*)&val)); 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)); @@ -899,13 +911,25 @@ obj->int_at_put(index, (jint)*((jint*)&val)); 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));