Mercurial > hg > truffle
changeset 11142:23123fc6968a
8019324: assert(_f2 == 0 || _f2 == f2) failed: illegal field change
Reviewed-by: dholmes, rbackman
Contributed-by: David Simms <david.simms@oracle.com>
author | rbackman |
---|---|
date | Mon, 15 Jul 2013 11:35:10 +0200 |
parents | c0cb474be37e |
children | ee9e76adced3 |
files | src/share/vm/oops/cpCache.hpp |
diffstat | 1 files changed, 9 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/oops/cpCache.hpp Fri Jul 12 20:47:23 2013 +0200 +++ b/src/share/vm/oops/cpCache.hpp Mon Jul 15 11:35:10 2013 +0200 @@ -140,8 +140,15 @@ _f1 = f1; } void release_set_f1(Metadata* f1); - void set_f2(intx f2) { assert(_f2 == 0 || _f2 == f2, "illegal field change"); _f2 = f2; } - void set_f2_as_vfinal_method(Method* f2) { assert(_f2 == 0 || _f2 == (intptr_t) f2, "illegal field change"); assert(is_vfinal(), "flags must be set"); _f2 = (intptr_t) f2; } + void set_f2(intx f2) { + intx existing_f2 = _f2; // read once + assert(existing_f2 == 0 || existing_f2 == f2, "illegal field change"); + _f2 = f2; + } + void set_f2_as_vfinal_method(Method* f2) { + assert(is_vfinal(), "flags must be set"); + set_f2((intx)f2); + } int make_flags(TosState state, int option_bits, int field_index_or_method_params); void set_flags(intx flags) { _flags = flags; } bool init_flags_atomic(intx flags);