569 static address SC_3;
570 static address SC_4;
571 static address PI_4;
572 static address P_1;
573 static address P_3;
574 static address P_2;
575
576 void generate_libm_stubs();
577
578 #ifdef COMPILER2
579 void generate_string_indexof(address *fnptrs);
580 #endif
581
582 address generate_cont_thaw(const char* label, Continuation::thaw_kind kind);
583 address generate_cont_thaw();
584
585 // TODO: will probably need multiple return barriers depending on return type
586 address generate_cont_returnBarrier();
587 address generate_cont_returnBarrier_exception();
588
589 // Continuation point for throwing of implicit exceptions that are
590 // not handled in the current activation. Fabricates an exception
591 // oop and initiates normal exception dispatching in this
592 // frame. Since we need to preserve callee-saved values (currently
593 // only for C2, but done for C1 as well) we need a callee-saved oop
594 // map and therefore have to make these stubs into RuntimeStubs
595 // rather than BufferBlobs. If the compiler needs all registers to
596 // be preserved between the fault point and the exception handler
597 // then it must assume responsibility for that in
598 // AbstractCompiler::continuation_for_implicit_null_exception or
599 // continuation_for_implicit_division_by_zero_exception. All other
600 // implicit exceptions (e.g., NullPointerException or
601 // AbstractMethodError on entry) are either at call sites or
602 // otherwise assume that stack unwinding will be initiated, so
603 // caller saved registers were assumed volatile in the compiler.
604 address generate_throw_exception(const char* name,
605 address runtime_entry,
606 Register arg1 = noreg,
607 Register arg2 = noreg);
608
|
569 static address SC_3;
570 static address SC_4;
571 static address PI_4;
572 static address P_1;
573 static address P_3;
574 static address P_2;
575
576 void generate_libm_stubs();
577
578 #ifdef COMPILER2
579 void generate_string_indexof(address *fnptrs);
580 #endif
581
582 address generate_cont_thaw(const char* label, Continuation::thaw_kind kind);
583 address generate_cont_thaw();
584
585 // TODO: will probably need multiple return barriers depending on return type
586 address generate_cont_returnBarrier();
587 address generate_cont_returnBarrier_exception();
588
589 address generate_cont_preempt_stub();
590 address generate_cont_resume_monitor_operation();
591
592 // Continuation point for throwing of implicit exceptions that are
593 // not handled in the current activation. Fabricates an exception
594 // oop and initiates normal exception dispatching in this
595 // frame. Since we need to preserve callee-saved values (currently
596 // only for C2, but done for C1 as well) we need a callee-saved oop
597 // map and therefore have to make these stubs into RuntimeStubs
598 // rather than BufferBlobs. If the compiler needs all registers to
599 // be preserved between the fault point and the exception handler
600 // then it must assume responsibility for that in
601 // AbstractCompiler::continuation_for_implicit_null_exception or
602 // continuation_for_implicit_division_by_zero_exception. All other
603 // implicit exceptions (e.g., NullPointerException or
604 // AbstractMethodError on entry) are either at call sites or
605 // otherwise assume that stack unwinding will be initiated, so
606 // caller saved registers were assumed volatile in the compiler.
607 address generate_throw_exception(const char* name,
608 address runtime_entry,
609 Register arg1 = noreg,
610 Register arg2 = noreg);
611
|