Tue, 23 Feb 2016 23:47:11 +0000
8149367: PolicyQualifierInfo/index_Ctor JCk test fails with IOE: Invalid encoding for PolicyQualifierInfo
Summary: fix incorrect code
Reviewed-by: kvn, coleenp
src/share/vm/runtime/deoptimization.cpp | file | annotate | diff | comparison | revisions |
1.1 --- a/src/share/vm/runtime/deoptimization.cpp Mon Feb 22 13:02:54 2016 -0800 1.2 +++ b/src/share/vm/runtime/deoptimization.cpp Tue Feb 23 23:47:11 2016 +0000 1.3 @@ -1,5 +1,5 @@ 1.4 /* 1.5 - * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. 1.6 + * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. 1.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.8 * 1.9 * This code is free software; you can redistribute it and/or modify it 1.10 @@ -847,13 +847,25 @@ 1.11 _obj->int_field_put(offset, (jint)*((jint*)&val)); 1.12 break; 1.13 1.14 - case T_SHORT: case T_CHAR: // 2 bytes 1.15 + case T_SHORT: 1.16 assert(value->type() == T_INT, "Agreement."); 1.17 val = value->get_int(); 1.18 _obj->short_field_put(offset, (jshort)*((jint*)&val)); 1.19 break; 1.20 1.21 - case T_BOOLEAN: case T_BYTE: // 1 byte 1.22 + case T_CHAR: 1.23 + assert(value->type() == T_INT, "Agreement."); 1.24 + val = value->get_int(); 1.25 + _obj->char_field_put(offset, (jchar)*((jint*)&val)); 1.26 + break; 1.27 + 1.28 + case T_BYTE: 1.29 + assert(value->type() == T_INT, "Agreement."); 1.30 + val = value->get_int(); 1.31 + _obj->byte_field_put(offset, (jbyte)*((jint*)&val)); 1.32 + break; 1.33 + 1.34 + case T_BOOLEAN: 1.35 assert(value->type() == T_INT, "Agreement."); 1.36 val = value->get_int(); 1.37 _obj->bool_field_put(offset, (jboolean)*((jint*)&val)); 1.38 @@ -899,13 +911,25 @@ 1.39 obj->int_at_put(index, (jint)*((jint*)&val)); 1.40 break; 1.41 1.42 - case T_SHORT: case T_CHAR: // 2 bytes 1.43 + case T_SHORT: 1.44 assert(value->type() == T_INT, "Agreement."); 1.45 val = value->get_int(); 1.46 obj->short_at_put(index, (jshort)*((jint*)&val)); 1.47 break; 1.48 1.49 - case T_BOOLEAN: case T_BYTE: // 1 byte 1.50 + case T_CHAR: 1.51 + assert(value->type() == T_INT, "Agreement."); 1.52 + val = value->get_int(); 1.53 + obj->char_at_put(index, (jchar)*((jint*)&val)); 1.54 + break; 1.55 + 1.56 + case T_BYTE: 1.57 + assert(value->type() == T_INT, "Agreement."); 1.58 + val = value->get_int(); 1.59 + obj->byte_at_put(index, (jbyte)*((jint*)&val)); 1.60 + break; 1.61 + 1.62 + case T_BOOLEAN: 1.63 assert(value->type() == T_INT, "Agreement."); 1.64 val = value->get_int(); 1.65 obj->bool_at_put(index, (jboolean)*((jint*)&val));