comparison src/share/vm/interpreter/interpreterRuntime.cpp @ 1142:4ce7240d622c

6914300: ciEnv should export all well known classes Reviewed-by: kvn, twisti
author never
date Wed, 06 Jan 2010 14:22:39 -0800
parents dd57230ba8fe
children 6deeaebad47a
comparison
equal deleted inserted replaced
1140:1f6d42899c3a 1142:4ce7240d622c
351 // assertions 351 // assertions
352 #ifdef ASSERT 352 #ifdef ASSERT
353 assert(h_exception.not_null(), "NULL exceptions should be handled by athrow"); 353 assert(h_exception.not_null(), "NULL exceptions should be handled by athrow");
354 assert(h_exception->is_oop(), "just checking"); 354 assert(h_exception->is_oop(), "just checking");
355 // Check that exception is a subclass of Throwable, otherwise we have a VerifyError 355 // Check that exception is a subclass of Throwable, otherwise we have a VerifyError
356 if (!(h_exception->is_a(SystemDictionary::throwable_klass()))) { 356 if (!(h_exception->is_a(SystemDictionary::Throwable_klass()))) {
357 if (ExitVMOnVerifyError) vm_exit(-1); 357 if (ExitVMOnVerifyError) vm_exit(-1);
358 ShouldNotReachHere(); 358 ShouldNotReachHere();
359 } 359 }
360 #endif 360 #endif
361 361
583 583
584 assert(!HAS_PENDING_EXCEPTION, "no pending exception"); 584 assert(!HAS_PENDING_EXCEPTION, "no pending exception");
585 Handle exception(thread, thread->vm_result()); 585 Handle exception(thread, thread->vm_result());
586 assert(exception() != NULL, "vm result should be set"); 586 assert(exception() != NULL, "vm result should be set");
587 thread->set_vm_result(NULL); // clear vm result before continuing (may cause memory leaks and assert failures) 587 thread->set_vm_result(NULL); // clear vm result before continuing (may cause memory leaks and assert failures)
588 if (!exception->is_a(SystemDictionary::threaddeath_klass())) { 588 if (!exception->is_a(SystemDictionary::ThreadDeath_klass())) {
589 exception = get_preinitialized_exception( 589 exception = get_preinitialized_exception(
590 SystemDictionary::IllegalMonitorStateException_klass(), 590 SystemDictionary::IllegalMonitorStateException_klass(),
591 CATCH); 591 CATCH);
592 } 592 }
593 thread->set_vm_result(exception()); 593 thread->set_vm_result(exception());
658 if (TraceItables && Verbose) { 658 if (TraceItables && Verbose) {
659 ResourceMark rm(thread); 659 ResourceMark rm(thread);
660 tty->print_cr("Resolving: klass: %s to method: %s", info.resolved_klass()->name()->as_C_string(), info.resolved_method()->name()->as_C_string()); 660 tty->print_cr("Resolving: klass: %s to method: %s", info.resolved_klass()->name()->as_C_string(), info.resolved_method()->name()->as_C_string());
661 } 661 }
662 if (info.resolved_method()->method_holder() == 662 if (info.resolved_method()->method_holder() ==
663 SystemDictionary::object_klass()) { 663 SystemDictionary::Object_klass()) {
664 // NOTE: THIS IS A FIX FOR A CORNER CASE in the JVM spec 664 // NOTE: THIS IS A FIX FOR A CORNER CASE in the JVM spec
665 // (see also cpCacheOop.cpp for details) 665 // (see also cpCacheOop.cpp for details)
666 methodHandle rm = info.resolved_method(); 666 methodHandle rm = info.resolved_method();
667 assert(rm->is_final() || info.has_vtable_index(), 667 assert(rm->is_final() || info.has_vtable_index(),
668 "should have been set already"); 668 "should have been set already");