Mercurial > hg > graal-jvmci-8
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; |