Mercurial > hg > graal-jvmci-8
comparison src/share/vm/graal/graalRuntime.cpp @ 16628:d3fec84757ed
improved generated sources up-to-date check by using SHA1 digests
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Thu, 31 Jul 2014 13:42:56 +0200 |
parents | a7d9b88ecd68 |
children | 58622d6b1097 |
comparison
equal
deleted
inserted
replaced
16627:68deb37eed70 | 16628:d3fec84757ed |
---|---|
661 JavaValue result(T_OBJECT); | 661 JavaValue result(T_OBJECT); |
662 JavaCalls::call_static(&result, klass, makeInstance, sig, CHECK_NULL); | 662 JavaCalls::call_static(&result, klass, makeInstance, sig, CHECK_NULL); |
663 return JNIHandles::make_local((oop) result.get_jobject()); | 663 return JNIHandles::make_local((oop) result.get_jobject()); |
664 JVM_END | 664 JVM_END |
665 | 665 |
666 void GraalRuntime::check_generated_sources_sha1(TRAPS) { | |
667 TempNewSymbol name = SymbolTable::new_symbol("GeneratedSourcesSha1", CHECK_ABORT); | |
668 KlassHandle klass = load_required_class(name); | |
669 fieldDescriptor fd; | |
670 if (!InstanceKlass::cast(klass())->find_field(vmSymbols::value_name(), vmSymbols::string_signature(), true, &fd)) { | |
671 THROW_MSG(vmSymbols::java_lang_NoSuchFieldError(), "GeneratedSourcesSha1.value"); | |
672 } | |
673 | |
674 Symbol* value = java_lang_String::as_symbol(klass->java_mirror()->obj_field(fd.offset()), CHECK); | |
675 if (!value->equals(_generated_sources_sha1)) { | |
676 char buf[200]; | |
677 jio_snprintf(buf, sizeof(buf), "Generated sources SHA1 check failed (%s != %s) - need to rebuild the VM", value->as_C_string(), _generated_sources_sha1); | |
678 THROW_MSG(vmSymbols::java_lang_InternalError(), buf); | |
679 } | |
680 } | |
681 | |
666 Handle GraalRuntime::get_HotSpotGraalRuntime() { | 682 Handle GraalRuntime::get_HotSpotGraalRuntime() { |
667 if (JNIHandles::resolve(_HotSpotGraalRuntime_instance) == NULL) { | 683 if (JNIHandles::resolve(_HotSpotGraalRuntime_instance) == NULL) { |
668 Thread* THREAD = Thread::current(); | 684 Thread* THREAD = Thread::current(); |
685 check_generated_sources_sha1(CHECK_ABORT_(Handle())); | |
669 TempNewSymbol name = SymbolTable::new_symbol("com/oracle/graal/hotspot/HotSpotGraalRuntime", CHECK_ABORT_(Handle())); | 686 TempNewSymbol name = SymbolTable::new_symbol("com/oracle/graal/hotspot/HotSpotGraalRuntime", CHECK_ABORT_(Handle())); |
670 KlassHandle klass = load_required_class(name); | 687 KlassHandle klass = load_required_class(name); |
671 TempNewSymbol runtime = SymbolTable::new_symbol("runtime", CHECK_ABORT_(Handle())); | 688 TempNewSymbol runtime = SymbolTable::new_symbol("runtime", CHECK_ABORT_(Handle())); |
672 TempNewSymbol sig = SymbolTable::new_symbol("()Lcom/oracle/graal/hotspot/HotSpotGraalRuntime;", CHECK_ABORT_(Handle())); | 689 TempNewSymbol sig = SymbolTable::new_symbol("()Lcom/oracle/graal/hotspot/HotSpotGraalRuntime;", CHECK_ABORT_(Handle())); |
673 JavaValue result(T_OBJECT); | 690 JavaValue result(T_OBJECT); |