src/share/vm/opto/compile.hpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
6961690 Cdiff src/share/vm/opto/compile.hpp
src/share/vm/opto/compile.hpp
Print this page
rev 1838 : 6961690: load oops from constant table on SPARC
Summary: oops should be loaded from the constant table of an nmethod instead of materializing them with a long code sequence.
Reviewed-by:
*** 28,37 ****
--- 28,38 ----
class CallGenerator;
class ConnectionGraph;
class InlineTree;
class Int_Array;
class Matcher;
+ class MachConstantBaseNode;
class MachNode;
class MachSafePointNode;
class Node;
class Node_Array;
class Node_Notes;
*** 192,201 ****
--- 193,205 ----
Node* _immutable_memory; // Initial memory state
Node* _recent_alloc_obj;
Node* _recent_alloc_ctl;
+ MachConstantBaseNode* _mach_constant_base_node; // Constant table base node singleton.
+
+
// Blocked array of debugging and profiling information,
// tracked per node.
enum { _log2_node_notes_block_size = 8,
_node_notes_block_size = (1<<_log2_node_notes_block_size)
};
*** 252,261 ****
--- 256,267 ----
ImplicitExceptionTable _inc_table; // Table of implicit null checks in native code
OopMapSet* _oop_map_set; // Table of oop maps (one for each safepoint location)
static int _CompiledZap_count; // counter compared against CompileZap[First/Last]
BufferBlob* _scratch_buffer_blob; // For temporary code buffers.
relocInfo* _scratch_locs_memory; // For temporary code buffers.
+ int _scratch_const_size; // For temporary code buffers.
+ bool _in_scratch_emit_size; // true when in scratch_emit_size.
public:
// Accessors
// The Compile instance currently active in this (compiler) thread.
*** 434,443 ****
--- 440,452 ----
void set_recent_alloc(Node* ctl, Node* obj) {
_recent_alloc_ctl = ctl;
_recent_alloc_obj = obj;
}
+ MachConstantBaseNode* mach_constant_base_node();
+ bool has_mach_constant_base_node() const { return _mach_constant_base_node != NULL; }
+
// Handy undefined Node
Node* top() const { return _top; }
// these are used by guys who need to know about creation and transformation of top:
Node* cached_top_node() { return _top; }
*** 585,601 ****
OopMapSet* oop_map_set() { return _oop_map_set; }
DebugInformationRecorder* debug_info() { return env()->debug_info(); }
Dependencies* dependencies() { return env()->dependencies(); }
static int CompiledZap_count() { return _CompiledZap_count; }
BufferBlob* scratch_buffer_blob() { return _scratch_buffer_blob; }
! void init_scratch_buffer_blob();
void set_scratch_buffer_blob(BufferBlob* b) { _scratch_buffer_blob = b; }
relocInfo* scratch_locs_memory() { return _scratch_locs_memory; }
void set_scratch_locs_memory(relocInfo* b) { _scratch_locs_memory = b; }
// emit to scratch blob, report resulting size
uint scratch_emit_size(const Node* n);
enum ScratchBufferBlob {
MAX_inst_size = 1024,
MAX_locs_size = 128, // number of relocInfo elements
MAX_const_size = 128,
--- 594,613 ----
OopMapSet* oop_map_set() { return _oop_map_set; }
DebugInformationRecorder* debug_info() { return env()->debug_info(); }
Dependencies* dependencies() { return env()->dependencies(); }
static int CompiledZap_count() { return _CompiledZap_count; }
BufferBlob* scratch_buffer_blob() { return _scratch_buffer_blob; }
! void init_scratch_buffer_blob(int const_size);
! void clear_scratch_buffer_blob();
void set_scratch_buffer_blob(BufferBlob* b) { _scratch_buffer_blob = b; }
relocInfo* scratch_locs_memory() { return _scratch_locs_memory; }
void set_scratch_locs_memory(relocInfo* b) { _scratch_locs_memory = b; }
// emit to scratch blob, report resulting size
uint scratch_emit_size(const Node* n);
+ void set_in_scratch_emit_size(bool x) { _in_scratch_emit_size = x; }
+ bool in_scratch_emit_size() const { return _in_scratch_emit_size; }
enum ScratchBufferBlob {
MAX_inst_size = 1024,
MAX_locs_size = 128, // number of relocInfo elements
MAX_const_size = 128,
*** 672,682 ****
// Write out basic block data to code buffer
void Fill_buffer();
// Determine which variable sized branches can be shortened
! void Shorten_branches(Label *labels, int& code_size, int& reloc_size, int& stub_size, int& const_size);
// Compute the size of first NumberOfLoopInstrToAlign instructions
// at the head of a loop.
void compute_loop_first_inst_sizes();
--- 684,694 ----
// Write out basic block data to code buffer
void Fill_buffer();
// Determine which variable sized branches can be shortened
! void Shorten_branches(Label *labels, int& code_size, int& reloc_size, int& stub_size);
// Compute the size of first NumberOfLoopInstrToAlign instructions
// at the head of a loop.
void compute_loop_first_inst_sizes();
src/share/vm/opto/compile.hpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File