Mercurial > hg > truffle
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"); |