diff --git a/src/hotspot/share/code/icBuffer.hpp b/src/hotspot/share/code/icBuffer.hpp index b60b620..b6322bd 100644 --- a/src/hotspot/share/code/icBuffer.hpp +++ b/src/hotspot/share/code/icBuffer.hpp @@ -30,6 +30,7 @@ #include "interpreter/bytecodes.hpp" #include "memory/allocation.hpp" #include "utilities/align.hpp" +#include "utilities/macros.hpp" // // For CompiledIC's: @@ -100,20 +101,16 @@ class InlineCacheBuffer: public AllStatic { static int ic_stub_code_size(); 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; } + DEBUG_ONLY(static volatile int _needs_refill;) - static void init_next_stub(); + static StubQueue* buffer() { return _buffer; } static ICStub* new_ic_stub(); - // Machine-dependent implementation of ICBuffer static void assemble_ic_buffer_code(address code_begin, void* cached_value, address entry_point); static address ic_buffer_entry_point (address code_begin); @@ -129,6 +126,7 @@ class InlineCacheBuffer: public AllStatic { // removes the ICStubs after backpatching static void update_inline_caches(); + static void refill_ic_stubs(); // for debugging static bool is_empty(); @@ -138,7 +136,7 @@ class InlineCacheBuffer: public AllStatic { static int pending_icholder_count() { return _pending_count; } // New interface - static void create_transition_stub(CompiledIC *ic, void* cached_value, address entry); + static bool create_transition_stub(CompiledIC *ic, void* cached_value, address entry); static address ic_destination_for(CompiledIC *ic); static void* cached_value_for(CompiledIC *ic); };