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