Mercurial > hg > graal-compiler
diff src/share/vm/prims/forte.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 | f08d439fab8c |
children | 59c790074993 |
line wrap: on
line diff
--- a/src/share/vm/prims/forte.cpp Fri Aug 31 16:39:35 2012 -0700 +++ b/src/share/vm/prims/forte.cpp Sat Sep 01 13:25:18 2012 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 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 @@ -68,7 +68,7 @@ static bool is_decipherable_compiled_frame(JavaThread* thread, frame* fr, nmethod* nm); static bool is_decipherable_interpreted_frame(JavaThread* thread, frame* fr, - methodOop* method_p, + Method** method_p, int* bci_p); @@ -178,12 +178,12 @@ static bool is_decipherable_interpreted_frame(JavaThread* thread, frame* fr, - methodOop* method_p, + Method** method_p, int* bci_p) { assert(fr->is_interpreted_frame(), "just checking"); // top frame is an interpreted frame - // check if it is walkable (i.e. valid methodOop and valid bci) + // check if it is walkable (i.e. valid Method* and valid bci) // Because we may be racing a gc thread the method and/or bci // of a valid interpreter frame may look bad causing us to @@ -199,14 +199,14 @@ if (known_valid || fr->is_interpreted_frame_valid(thread)) { // The frame code should completely validate the frame so that - // references to methodOop and bci are completely safe to access + // references to Method* and bci are completely safe to access // If they aren't the frame code should be fixed not this // code. However since gc isn't locked out the values could be // stale. This is a race we can never completely win since we can't // lock out gc so do one last check after retrieving their values // from the frame for additional safety - methodOop method = fr->interpreter_frame_method(); + Method* method = fr->interpreter_frame_method(); // We've at least found a method. // NOTE: there is something to be said for the approach that @@ -250,13 +250,13 @@ static bool find_initial_Java_frame(JavaThread* thread, frame* fr, frame* initial_frame_p, - methodOop* method_p, + Method** method_p, int* bci_p) { // It is possible that for a frame containing an nmethod // we can capture the method but no bci. If we get no // bci the frame isn't walkable but the method is usable. - // Therefore we init the returned methodOop to NULL so the + // Therefore we init the returned Method* to NULL so the // caller can make the distinction. *method_p = NULL; @@ -384,7 +384,7 @@ NoHandleMark nhm; frame initial_Java_frame; - methodOop method; + Method* method; int bci; int count; @@ -402,9 +402,9 @@ // The method is not stored GC safe so see if GC became active // after we entered AsyncGetCallTrace() and before we try to - // use the methodOop. + // use the Method*. // Yes, there is still a window after this check and before - // we use methodOop below, but we can't lock out GC so that + // we use Method* below, but we can't lock out GC so that // has to be an acceptable risk. if (!ch->is_valid_method(method)) { trace->num_frames = ticks_GC_active; // -2 @@ -442,9 +442,9 @@ // The method is not stored GC safe so see if GC became active // after we entered AsyncGetCallTrace() and before we try to - // use the methodOop. + // use the Method*. // Yes, there is still a window after this check and before - // we use methodOop below, but we can't lock out GC so that + // we use Method* below, but we can't lock out GC so that // has to be an acceptable risk. if (!ch->is_valid_method(method)) { // we throw away everything we've gathered in this sample since