Mercurial > hg > truffle
diff src/share/vm/code/debugInfo.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 | f95d63e2154a |
children | b6a8f2d23057 e0c9a1d29eb4 |
line wrap: on
line diff
--- a/src/share/vm/code/debugInfo.hpp Fri Aug 31 16:39:35 2012 -0700 +++ b/src/share/vm/code/debugInfo.hpp Sat Sep 01 13:25:18 2012 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, 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 @@ -40,6 +40,8 @@ // - LocationValue describes a value in a given location (in frame or register) // - ConstantValue describes a constant +class ConstantOopReadValue; + class ScopeValue: public ResourceObj { public: // Testers @@ -51,6 +53,11 @@ virtual bool is_constant_oop() const { return false; } virtual bool equals(ScopeValue* other) const { return false; } + ConstantOopReadValue* as_ConstantOopReadValue() { + assert(is_constant_oop(), "must be"); + return (ConstantOopReadValue*) this; + } + // Serialization of debugging information virtual void write_on(DebugInfoWriteStream* stream) = 0; static ScopeValue* read_from(DebugInfoReadStream* stream); @@ -94,7 +101,7 @@ , _field_values() , _value() , _visited(false) { - assert(klass->is_constant_oop(), "should be constant klass oop"); + assert(klass->is_constant_oop(), "should be constant java mirror oop"); } ObjectValue(int id) @@ -260,7 +267,15 @@ } ; oop read_oop() { - return code()->oop_at(read_int()); + oop o = code()->oop_at(read_int()); + assert(o == NULL || o->is_oop(), "oop only"); + return o; + } + Method* read_method() { + Method* o = (Method*)(code()->metadata_at(read_int())); + assert(o == NULL || + o->is_metadata(), "meta data only"); + return o; } ScopeValue* read_object_value(); ScopeValue* get_cached_object(); @@ -279,6 +294,8 @@ DebugInfoWriteStream(DebugInformationRecorder* recorder, int initial_size); void write_handle(jobject h); void write_bci(int bci) { write_int(bci - InvocationEntryBci); } + + void write_metadata(Metadata* m); }; #endif // SHARE_VM_CODE_DEBUGINFO_HPP