954 CodeBuffer* code_buffer,
955 int frame_words,
956 OopMapSet* oop_map_set,
957 ExceptionHandlerTable* handler_table,
958 ImplicitExceptionTable* inc_table,
959 AbstractCompiler* compiler,
960 bool has_unsafe_access,
961 bool has_wide_vectors,
962 DirectiveSet* directives,
963 RTMState rtm_state) {
964 VM_ENTRY_MARK;
965 nmethod* nm = NULL;
966 {
967 // To prevent compile queue updates.
968 MutexLocker locker(MethodCompileQueue_lock, THREAD);
969
970 // Prevent SystemDictionary::add_to_hierarchy from running
971 // and invalidating our dependencies until we install this method.
972 // No safepoints are allowed. Otherwise, class redefinition can occur in between.
973 MutexLocker ml(Compile_lock);
974 No_Safepoint_Verifier nsv;
975
976 // Change in Jvmti state may invalidate compilation.
977 if (!failing() && jvmti_state_changed()) {
978 record_failure("Jvmti state change invalidated dependencies");
979 }
980
981 // Change in DTrace flags may invalidate compilation.
982 if (!failing() &&
983 ( (!dtrace_extended_probes() && ExtendedDTraceProbes) ||
984 (!dtrace_method_probes() && DTraceMethodProbes) ||
985 (!dtrace_alloc_probes() && DTraceAllocProbes) )) {
986 record_failure("DTrace flags change invalidated dependencies");
987 }
988
989 if (!failing()) {
990 if (log() != NULL) {
991 // Log the dependencies which this compilation declares.
992 dependencies()->log_all_dependencies();
993 }
994
|
954 CodeBuffer* code_buffer,
955 int frame_words,
956 OopMapSet* oop_map_set,
957 ExceptionHandlerTable* handler_table,
958 ImplicitExceptionTable* inc_table,
959 AbstractCompiler* compiler,
960 bool has_unsafe_access,
961 bool has_wide_vectors,
962 DirectiveSet* directives,
963 RTMState rtm_state) {
964 VM_ENTRY_MARK;
965 nmethod* nm = NULL;
966 {
967 // To prevent compile queue updates.
968 MutexLocker locker(MethodCompileQueue_lock, THREAD);
969
970 // Prevent SystemDictionary::add_to_hierarchy from running
971 // and invalidating our dependencies until we install this method.
972 // No safepoints are allowed. Otherwise, class redefinition can occur in between.
973 MutexLocker ml(Compile_lock);
974 NoSafepointVerifier nsv;
975
976 // Change in Jvmti state may invalidate compilation.
977 if (!failing() && jvmti_state_changed()) {
978 record_failure("Jvmti state change invalidated dependencies");
979 }
980
981 // Change in DTrace flags may invalidate compilation.
982 if (!failing() &&
983 ( (!dtrace_extended_probes() && ExtendedDTraceProbes) ||
984 (!dtrace_method_probes() && DTraceMethodProbes) ||
985 (!dtrace_alloc_probes() && DTraceAllocProbes) )) {
986 record_failure("DTrace flags change invalidated dependencies");
987 }
988
989 if (!failing()) {
990 if (log() != NULL) {
991 // Log the dependencies which this compilation declares.
992 dependencies()->log_all_dependencies();
993 }
994
|