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