Mercurial > hg > truffle
diff src/share/vm/interpreter/bytecode.cpp @ 6725:da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes
Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland
Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author | coleenp |
---|---|
date | Sat, 01 Sep 2012 13:25:18 -0400 |
parents | 1d7922586cf6 |
children |
line wrap: on
line diff
--- a/src/share/vm/interpreter/bytecode.cpp Fri Aug 31 16:39:35 2012 -0700 +++ b/src/share/vm/interpreter/bytecode.cpp Sat Sep 01 13:25:18 2012 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2012, 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 @@ -25,7 +25,7 @@ #include "precompiled.hpp" #include "interpreter/bytecode.hpp" #include "interpreter/linkResolver.hpp" -#include "oops/constantPoolOop.hpp" +#include "oops/constantPool.hpp" #include "oops/oop.inline.hpp" #include "runtime/fieldType.hpp" #include "runtime/handles.inline.hpp" @@ -159,7 +159,7 @@ Handle Bytecode_invoke::appendix(TRAPS) { ConstantPoolCacheEntry* cpce = cpcache_entry(); if (cpce->has_appendix()) - return Handle(THREAD, cpce->f1_appendix()); + return Handle(THREAD, cpce->appendix_if_resolved(constants())); return Handle(); // usual case } @@ -179,11 +179,7 @@ ConstantPoolCacheEntry* Bytecode_member_ref::cpcache_entry() const { int index = this->index(); - DEBUG_ONLY({ - if (!has_index_u4(code())) - index = constantPoolOopDesc::get_cpcache_index(index); - }); - return cpcache()->entry_at(index); + return cpcache()->entry_at(ConstantPool::decode_cpcache_index(index, true)); } // Implementation of Bytecode_field @@ -207,7 +203,7 @@ int Bytecode_loadconstant::pool_index() const { int index = raw_index(); if (has_cache_index()) { - return _method->constants()->cache()->entry_at(index)->constant_pool_index(); + return _method->constants()->object_to_cp_index(index); } return index; } @@ -221,7 +217,7 @@ oop Bytecode_loadconstant::resolve_constant(TRAPS) const { assert(_method.not_null(), "must supply method to resolve constant"); int index = raw_index(); - constantPoolOop constants = _method->constants(); + ConstantPool* constants = _method->constants(); if (has_cache_index()) { return constants->resolve_cached_constant_at(index, THREAD); } else {