1480 }
1481 {
1482 Label L;
1483 __ testl(rax, JVM_ACC_ABSTRACT);
1484 __ jcc(Assembler::zero, L);
1485 __ stop("tried to execute abstract method in interpreter");
1486 __ bind(L);
1487 }
1488 #endif
1489
1490 // Since at this point in the method invocation the exception
1491 // handler would try to exit the monitor of synchronized methods
1492 // which hasn't been entered yet, we set the thread local variable
1493 // _do_not_unlock_if_synchronized to true. The remove_activation
1494 // will check this flag.
1495
1496 const Address do_not_unlock_if_synchronized(r15_thread,
1497 in_bytes(JavaThread::do_not_unlock_if_synchronized_offset()));
1498 __ movbool(do_not_unlock_if_synchronized, true);
1499
1500 // increment invocation count & check for overflow
1501 Label invocation_counter_overflow;
1502 Label profile_method;
1503 Label profile_method_continue;
1504 if (inc_counter) {
1505 generate_counter_incr(&invocation_counter_overflow,
1506 &profile_method,
1507 &profile_method_continue);
1508 if (ProfileInterpreter) {
1509 __ bind(profile_method_continue);
1510 }
1511 }
1512
1513 Label continue_after_compile;
1514 __ bind(continue_after_compile);
1515
1516 // check for synchronized interpreted methods
1517 bang_stack_shadow_pages(false);
1518
1519 // reset the _do_not_unlock_if_synchronized flag
|
1480 }
1481 {
1482 Label L;
1483 __ testl(rax, JVM_ACC_ABSTRACT);
1484 __ jcc(Assembler::zero, L);
1485 __ stop("tried to execute abstract method in interpreter");
1486 __ bind(L);
1487 }
1488 #endif
1489
1490 // Since at this point in the method invocation the exception
1491 // handler would try to exit the monitor of synchronized methods
1492 // which hasn't been entered yet, we set the thread local variable
1493 // _do_not_unlock_if_synchronized to true. The remove_activation
1494 // will check this flag.
1495
1496 const Address do_not_unlock_if_synchronized(r15_thread,
1497 in_bytes(JavaThread::do_not_unlock_if_synchronized_offset()));
1498 __ movbool(do_not_unlock_if_synchronized, true);
1499
1500 __ profile_parameters_type(rax, rcx, rdx);
1501 // increment invocation count & check for overflow
1502 Label invocation_counter_overflow;
1503 Label profile_method;
1504 Label profile_method_continue;
1505 if (inc_counter) {
1506 generate_counter_incr(&invocation_counter_overflow,
1507 &profile_method,
1508 &profile_method_continue);
1509 if (ProfileInterpreter) {
1510 __ bind(profile_method_continue);
1511 }
1512 }
1513
1514 Label continue_after_compile;
1515 __ bind(continue_after_compile);
1516
1517 // check for synchronized interpreted methods
1518 bang_stack_shadow_pages(false);
1519
1520 // reset the _do_not_unlock_if_synchronized flag
|