--- a/hotspot/src/share/vm/opto/compile.hpp Mon Apr 14 09:04:36 2014 +0000
+++ b/hotspot/src/share/vm/opto/compile.hpp Tue Apr 01 09:36:49 2014 +0200
@@ -484,6 +484,7 @@
RegMask _FIRST_STACK_mask; // All stack slots usable for spills (depends on frame layout)
Arena* _indexSet_arena; // control IndexSet allocation within PhaseChaitin
void* _indexSet_free_block_list; // free list of IndexSet bit blocks
+ int _interpreter_frame_size;
uint _node_bundling_limit;
Bundle* _node_bundling_base; // Information for instruction bundling
@@ -941,6 +942,7 @@
PhaseRegAlloc* regalloc() { return _regalloc; }
int frame_slots() const { return _frame_slots; }
int frame_size_in_words() const; // frame_slots in units of the polymorphic 'words'
+ int frame_size_in_bytes() const { return _frame_slots << LogBytesPerInt; }
RegMask& FIRST_STACK_mask() { return _FIRST_STACK_mask; }
Arena* indexSet_arena() { return _indexSet_arena; }
void* indexSet_free_block_list() { return _indexSet_free_block_list; }
@@ -952,6 +954,13 @@
bool need_stack_bang(int frame_size_in_bytes) const;
bool need_register_stack_bang() const;
+ void update_interpreter_frame_size(int size) {
+ if (_interpreter_frame_size < size) {
+ _interpreter_frame_size = size;
+ }
+ }
+ int bang_size_in_bytes() const;
+
void set_matcher(Matcher* m) { _matcher = m; }
//void set_regalloc(PhaseRegAlloc* ra) { _regalloc = ra; }
void set_indexSet_arena(Arena* a) { _indexSet_arena = a; }