Mercurial > hg > truffle
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; } |