Mercurial > hg > truffle
diff src/share/vm/ci/ciObjectFactory.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 | 5eb9169b1a14 |
children | e522a00b91aa bd7a7ce2e264 |
line wrap: on
line diff
--- a/src/share/vm/ci/ciObjectFactory.hpp Fri Aug 31 16:39:35 2012 -0700 +++ b/src/share/vm/ci/ciObjectFactory.hpp Sat Sep 01 13:25:18 2012 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 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 @@ -41,12 +41,12 @@ private: static volatile bool _initialized; - static GrowableArray<ciObject*>* _shared_ci_objects; + static GrowableArray<ciMetadata*>* _shared_ci_metadata; static ciSymbol* _shared_ci_symbols[]; static int _shared_ident_limit; Arena* _arena; - GrowableArray<ciObject*>* _ci_objects; + GrowableArray<ciMetadata*>* _ci_metadata; GrowableArray<ciMethod*>* _unloaded_methods; GrowableArray<ciKlass*>* _unloaded_klasses; GrowableArray<ciInstance*>* _unloaded_instances; @@ -68,10 +68,13 @@ NonPermObject* _non_perm_bucket[NON_PERM_BUCKETS]; int _non_perm_count; - int find(oop key, GrowableArray<ciObject*>* objects); - bool is_found_at(int index, oop key, GrowableArray<ciObject*>* objects); - void insert(int index, ciObject* obj, GrowableArray<ciObject*>* objects); + int find(Metadata* key, GrowableArray<ciMetadata*>* objects); + bool is_found_at(int index, Metadata* key, GrowableArray<ciMetadata*>* objects); + void insert(int index, ciMetadata* obj, GrowableArray<ciMetadata*>* objects); + ciObject* create_new_object(oop o); + ciMetadata* create_new_object(Metadata* o); + static bool is_equal(NonPermObject* p, oop key) { return p->object()->get_oop() == key; } @@ -79,8 +82,7 @@ NonPermObject* &find_non_perm(oop key); void insert_non_perm(NonPermObject* &where, oop key, ciObject* obj); - void init_ident_of(ciObject* obj); - void init_ident_of(ciSymbol* obj); + void init_ident_of(ciBaseObject* obj); Arena* arena() { return _arena; } @@ -99,7 +101,7 @@ // Get the ciObject corresponding to some oop. ciObject* get(oop key); - + ciMetadata* get_metadata(Metadata* key); ciSymbol* get_symbol(Symbol* key); // Get the ciSymbol corresponding to one of the vmSymbols. @@ -135,6 +137,9 @@ ciReturnAddress* get_return_address(int bci); + // RedefineClasses support + void metadata_do(void f(Metadata*)); + void print_contents(); void print(); };