diff src/share/vm/code/icBuffer.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 b31471cdc53e
line wrap: on
line diff
--- a/src/share/vm/code/icBuffer.hpp	Fri Aug 31 16:39:35 2012 -0700
+++ b/src/share/vm/code/icBuffer.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
@@ -57,7 +57,7 @@
 
  public:
   // Creation
-  void set_stub(CompiledIC *ic, oop cached_value, address dest_addr);
+  void set_stub(CompiledIC *ic, void* cached_value, address dest_addr);
 
   // Code info
   address code_begin() const                     { return (address)this + round_to(sizeof(ICStub), CodeEntryAlignment); }
@@ -70,7 +70,7 @@
 
   // stub info
   address destination() const;  // destination of jump instruction
-  oop     cached_oop() const;   // cached_oop for stub
+  void* cached_value() const;   // cached_value for stub
 
   // Debugging
   void    verify()            PRODUCT_RETURN;
@@ -99,6 +99,9 @@
   static StubQueue* _buffer;
   static ICStub*    _next_stub;
 
+  static CompiledICHolder* _pending_released;
+  static int _pending_count;
+
   static StubQueue* buffer()                         { return _buffer;         }
   static void       set_next_stub(ICStub* next_stub) { _next_stub = next_stub; }
   static ICStub*    get_next_stub()                  { return _next_stub;      }
@@ -109,9 +112,9 @@
 
 
   // Machine-dependent implementation of ICBuffer
-  static void    assemble_ic_buffer_code(address code_begin, oop cached_oop, address entry_point);
+  static void    assemble_ic_buffer_code(address code_begin, void* cached_value, address entry_point);
   static address ic_buffer_entry_point  (address code_begin);
-  static oop     ic_buffer_cached_oop   (address code_begin);
+  static void*   ic_buffer_cached_value (address code_begin);
 
  public:
 
@@ -127,11 +130,14 @@
   // for debugging
   static bool is_empty();
 
+  static void release_pending_icholders();
+  static void queue_for_release(CompiledICHolder* icholder);
+  static int pending_icholder_count() { return _pending_count; }
 
   // New interface
-  static void    create_transition_stub(CompiledIC *ic, oop cached_oop, address entry);
+  static void    create_transition_stub(CompiledIC *ic, void* cached_value, address entry);
   static address ic_destination_for(CompiledIC *ic);
-  static oop     cached_oop_for(CompiledIC *ic);
+  static void*   cached_value_for(CompiledIC *ic);
 };
 
 #endif // SHARE_VM_CODE_ICBUFFER_HPP