comparison src/share/vm/opto/compile.hpp @ 17980:0bf37f737702

8032410: compiler/uncommontrap/TestStackBangRbp.java times out on Solaris-Sparc V9 Summary: make compiled code bang the stack by the worst case size of the interpreter frame at deoptimization points. Reviewed-by: twisti, kvn
author roland
date Tue, 01 Apr 2014 09:36:49 +0200
parents 78bbf4d43a14
children dda2ae6f9557
comparison
equal deleted inserted replaced
17978:ad51f24671c2 17980:0bf37f737702
485 int _frame_slots; // Size of total frame in stack slots 485 int _frame_slots; // Size of total frame in stack slots
486 CodeOffsets _code_offsets; // Offsets into the code for various interesting entries 486 CodeOffsets _code_offsets; // Offsets into the code for various interesting entries
487 RegMask _FIRST_STACK_mask; // All stack slots usable for spills (depends on frame layout) 487 RegMask _FIRST_STACK_mask; // All stack slots usable for spills (depends on frame layout)
488 Arena* _indexSet_arena; // control IndexSet allocation within PhaseChaitin 488 Arena* _indexSet_arena; // control IndexSet allocation within PhaseChaitin
489 void* _indexSet_free_block_list; // free list of IndexSet bit blocks 489 void* _indexSet_free_block_list; // free list of IndexSet bit blocks
490 int _interpreter_frame_size;
490 491
491 uint _node_bundling_limit; 492 uint _node_bundling_limit;
492 Bundle* _node_bundling_base; // Information for instruction bundling 493 Bundle* _node_bundling_base; // Information for instruction bundling
493 494
494 // Instruction bits passed off to the VM 495 // Instruction bits passed off to the VM
944 int inner_loops() const { return _inner_loops; } 945 int inner_loops() const { return _inner_loops; }
945 Matcher* matcher() { return _matcher; } 946 Matcher* matcher() { return _matcher; }
946 PhaseRegAlloc* regalloc() { return _regalloc; } 947 PhaseRegAlloc* regalloc() { return _regalloc; }
947 int frame_slots() const { return _frame_slots; } 948 int frame_slots() const { return _frame_slots; }
948 int frame_size_in_words() const; // frame_slots in units of the polymorphic 'words' 949 int frame_size_in_words() const; // frame_slots in units of the polymorphic 'words'
950 int frame_size_in_bytes() const { return _frame_slots << LogBytesPerInt; }
949 RegMask& FIRST_STACK_mask() { return _FIRST_STACK_mask; } 951 RegMask& FIRST_STACK_mask() { return _FIRST_STACK_mask; }
950 Arena* indexSet_arena() { return _indexSet_arena; } 952 Arena* indexSet_arena() { return _indexSet_arena; }
951 void* indexSet_free_block_list() { return _indexSet_free_block_list; } 953 void* indexSet_free_block_list() { return _indexSet_free_block_list; }
952 uint node_bundling_limit() { return _node_bundling_limit; } 954 uint node_bundling_limit() { return _node_bundling_limit; }
953 Bundle* node_bundling_base() { return _node_bundling_base; } 955 Bundle* node_bundling_base() { return _node_bundling_base; }
954 void set_node_bundling_limit(uint n) { _node_bundling_limit = n; } 956 void set_node_bundling_limit(uint n) { _node_bundling_limit = n; }
955 void set_node_bundling_base(Bundle* b) { _node_bundling_base = b; } 957 void set_node_bundling_base(Bundle* b) { _node_bundling_base = b; }
956 bool starts_bundle(const Node *n) const; 958 bool starts_bundle(const Node *n) const;
957 bool need_stack_bang(int frame_size_in_bytes) const; 959 bool need_stack_bang(int frame_size_in_bytes) const;
958 bool need_register_stack_bang() const; 960 bool need_register_stack_bang() const;
961
962 void update_interpreter_frame_size(int size) {
963 if (_interpreter_frame_size < size) {
964 _interpreter_frame_size = size;
965 }
966 }
967 int bang_size_in_bytes() const;
959 968
960 void set_matcher(Matcher* m) { _matcher = m; } 969 void set_matcher(Matcher* m) { _matcher = m; }
961 //void set_regalloc(PhaseRegAlloc* ra) { _regalloc = ra; } 970 //void set_regalloc(PhaseRegAlloc* ra) { _regalloc = ra; }
962 void set_indexSet_arena(Arena* a) { _indexSet_arena = a; } 971 void set_indexSet_arena(Arena* a) { _indexSet_arena = a; }
963 void set_indexSet_free_block_list(void* p) { _indexSet_free_block_list = p; } 972 void set_indexSet_free_block_list(void* p) { _indexSet_free_block_list = p; }