equal
deleted
inserted
replaced
767 #endif |
767 #endif |
768 if (PrintBiasedLockingStatistics) { |
768 if (PrintBiasedLockingStatistics) { |
769 Atomic::inc(BiasedLocking::slow_path_entry_count_addr()); |
769 Atomic::inc(BiasedLocking::slow_path_entry_count_addr()); |
770 } |
770 } |
771 Handle h_obj(thread, elem->obj()); |
771 Handle h_obj(thread, elem->obj()); |
772 assert(Universe::heap()->is_in_reserved_or_null(h_obj()), |
772 assert(Universe::heap()->is_in_or_null(h_obj()), |
773 "must be NULL or an object"); |
773 "must be NULL or an object"); |
774 ObjectSynchronizer::enter(h_obj, elem->lock(), CHECK); |
774 ObjectSynchronizer::enter(h_obj, elem->lock(), CHECK); |
775 assert(Universe::heap()->is_in_reserved_or_null(elem->obj()), |
775 assert(Universe::heap()->is_in_or_null(elem->obj()), |
776 "must be NULL or an object"); |
776 "must be NULL or an object"); |
777 #ifdef ASSERT |
777 #ifdef ASSERT |
778 thread->last_frame().interpreter_frame_verify_monitor(elem); |
778 thread->last_frame().interpreter_frame_verify_monitor(elem); |
779 #endif |
779 #endif |
780 JRT_END |
780 JRT_END |
784 JRT_ENTRY_NO_ASYNC(void, InterpreterRuntime::monitorexit(JavaThread* thread, BasicObjectLock* elem)) |
784 JRT_ENTRY_NO_ASYNC(void, InterpreterRuntime::monitorexit(JavaThread* thread, BasicObjectLock* elem)) |
785 #ifdef ASSERT |
785 #ifdef ASSERT |
786 thread->last_frame().interpreter_frame_verify_monitor(elem); |
786 thread->last_frame().interpreter_frame_verify_monitor(elem); |
787 #endif |
787 #endif |
788 Handle h_obj(thread, elem->obj()); |
788 Handle h_obj(thread, elem->obj()); |
789 assert(Universe::heap()->is_in_reserved_or_null(h_obj()), |
789 assert(Universe::heap()->is_in_or_null(h_obj()), |
790 "must be NULL or an object"); |
790 "must be NULL or an object"); |
791 if (elem == NULL || h_obj()->is_unlocked()) { |
791 if (elem == NULL || h_obj()->is_unlocked()) { |
792 THROW(vmSymbols::java_lang_IllegalMonitorStateException()); |
792 THROW(vmSymbols::java_lang_IllegalMonitorStateException()); |
793 } |
793 } |
794 ObjectSynchronizer::exit(h_obj(), elem->lock(), thread); |
794 ObjectSynchronizer::exit(h_obj(), elem->lock(), thread); |
851 methodHandle m (thread, last_frame.method()); |
851 methodHandle m (thread, last_frame.method()); |
852 Bytecode_invoke call(m, last_frame.bci()); |
852 Bytecode_invoke call(m, last_frame.bci()); |
853 Symbol* signature = call.signature(); |
853 Symbol* signature = call.signature(); |
854 receiver = Handle(thread, last_frame.callee_receiver(signature)); |
854 receiver = Handle(thread, last_frame.callee_receiver(signature)); |
855 |
855 |
856 assert(Universe::heap()->is_in_reserved_or_null(receiver()), |
856 assert(Universe::heap()->is_in_or_null(receiver()), |
857 "sanity check"); |
857 "sanity check"); |
858 assert(receiver.is_null() || |
858 assert(receiver.is_null() || |
859 !Universe::heap()->is_in_reserved(receiver->klass()), |
859 !Universe::heap()->is_in(receiver->klass()), |
860 "sanity check"); |
860 "sanity check"); |
861 } |
861 } |
862 |
862 |
863 // resolve method |
863 // resolve method |
864 CallInfo info; |
864 CallInfo info; |