comparison src/share/vm/code/nmethod.hpp @ 2405:3d58a4983660

7022998: JSR 292 recursive method handle calls inline themselves infinitely Reviewed-by: never, kvn
author twisti
date Mon, 28 Mar 2011 03:58:07 -0700
parents d673ef06fe96
children 0654ee04b214 2aa9ddbb9e60
comparison
equal deleted inserted replaced
2404:b40d4fa697bf 2405:3d58a4983660
227 friend class nmethodLocker; 227 friend class nmethodLocker;
228 228
229 // For native wrappers 229 // For native wrappers
230 nmethod(methodOop method, 230 nmethod(methodOop method,
231 int nmethod_size, 231 int nmethod_size,
232 int compile_id,
232 CodeOffsets* offsets, 233 CodeOffsets* offsets,
233 CodeBuffer *code_buffer, 234 CodeBuffer *code_buffer,
234 int frame_size, 235 int frame_size,
235 ByteSize basic_lock_owner_sp_offset, /* synchronized natives only */ 236 ByteSize basic_lock_owner_sp_offset, /* synchronized natives only */
236 ByteSize basic_lock_sp_offset, /* synchronized natives only */ 237 ByteSize basic_lock_sp_offset, /* synchronized natives only */
297 ImplicitExceptionTable* nul_chk_table, 298 ImplicitExceptionTable* nul_chk_table,
298 AbstractCompiler* compiler, 299 AbstractCompiler* compiler,
299 int comp_level); 300 int comp_level);
300 301
301 static nmethod* new_native_nmethod(methodHandle method, 302 static nmethod* new_native_nmethod(methodHandle method,
303 int compile_id,
302 CodeBuffer *code_buffer, 304 CodeBuffer *code_buffer,
303 int vep_offset, 305 int vep_offset,
304 int frame_complete, 306 int frame_complete,
305 int frame_size, 307 int frame_size,
306 ByteSize receiver_sp_offset, 308 ByteSize receiver_sp_offset,
498 500
499 // implicit exceptions support 501 // implicit exceptions support
500 address continuation_for_implicit_exception(address pc); 502 address continuation_for_implicit_exception(address pc);
501 503
502 // On-stack replacement support 504 // On-stack replacement support
503 int osr_entry_bci() const { assert(_entry_bci != InvocationEntryBci, "wrong kind of nmethod"); return _entry_bci; } 505 int osr_entry_bci() const { assert(is_osr_method(), "wrong kind of nmethod"); return _entry_bci; }
504 address osr_entry() const { assert(_entry_bci != InvocationEntryBci, "wrong kind of nmethod"); return _osr_entry_point; } 506 address osr_entry() const { assert(is_osr_method(), "wrong kind of nmethod"); return _osr_entry_point; }
505 void invalidate_osr_method(); 507 void invalidate_osr_method();
506 nmethod* osr_link() const { return _osr_link; } 508 nmethod* osr_link() const { return _osr_link; }
507 void set_osr_link(nmethod *n) { _osr_link = n; } 509 void set_osr_link(nmethod *n) { _osr_link = n; }
508 510
509 // tells whether frames described by this nmethod can be deoptimized 511 // tells whether frames described by this nmethod can be deoptimized
605 607
606 // verify operations 608 // verify operations
607 void verify(); 609 void verify();
608 void verify_scopes(); 610 void verify_scopes();
609 void verify_interrupt_point(address interrupt_point); 611 void verify_interrupt_point(address interrupt_point);
610
611 // print compilation helper
612 static void print_compilation(outputStream *st, const char *method_name, const char *title,
613 methodOop method, bool is_blocking, int compile_id, int bci, int comp_level);
614 612
615 // printing support 613 // printing support
616 void print() const; 614 void print() const;
617 void print_code(); 615 void print_code();
618 void print_relocations() PRODUCT_RETURN; 616 void print_relocations() PRODUCT_RETURN;
625 void print_nul_chk_table() PRODUCT_RETURN; 623 void print_nul_chk_table() PRODUCT_RETURN;
626 void print_nmethod(bool print_code); 624 void print_nmethod(bool print_code);
627 625
628 // need to re-define this from CodeBlob else the overload hides it 626 // need to re-define this from CodeBlob else the overload hides it
629 virtual void print_on(outputStream* st) const { CodeBlob::print_on(st); } 627 virtual void print_on(outputStream* st) const { CodeBlob::print_on(st); }
630 void print_on(outputStream* st, const char* title) const; 628 void print_on(outputStream* st, const char* msg) const;
631 629
632 // Logging 630 // Logging
633 void log_identity(xmlStream* log) const; 631 void log_identity(xmlStream* log) const;
634 void log_new_nmethod() const; 632 void log_new_nmethod() const;
635 void log_state_change() const; 633 void log_state_change() const;