Mercurial > hg > truffle
diff src/share/vm/asm/codeBuffer.hpp @ 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 | 44ce519bc3d1 |
children | b31471cdc53e |
line wrap: on
line diff
--- a/src/share/vm/asm/codeBuffer.hpp Fri Aug 31 16:39:35 2012 -0700 +++ b/src/share/vm/asm/codeBuffer.hpp 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 @@ -486,6 +486,9 @@ bool insts_contains(address pc) const { return _insts.contains(pc); } bool insts_contains2(address pc) const { return _insts.contains2(pc); } + // Record any extra oops required to keep embedded metadata alive + void finalize_oop_references(methodHandle method); + // Allocated size in all sections, when aligned and concatenated // (this is the eventual state of the content in its final // CodeBlob). @@ -504,6 +507,12 @@ return (recorder == NULL)? 0: recorder->oop_size(); } + // allocated size of any and all recorded metadata + csize_t total_metadata_size() const { + OopRecorder* recorder = oop_recorder(); + return (recorder == NULL)? 0: recorder->metadata_size(); + } + // Configuration functions, called immediately after the CB is constructed. // The section sizes are subtracted from the original insts section. // Note: Call them in reverse section order, because each steals from insts. @@ -532,9 +541,9 @@ copy_relocations_to(blob); copy_code_to(blob); } - void copy_oops_to(nmethod* nm) { + void copy_values_to(nmethod* nm) { if (!oop_recorder()->is_unused()) { - oop_recorder()->copy_to(nm); + oop_recorder()->copy_values_to(nm); } }