1 /* |
1 /* |
2 * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
46 #include "runtime/sweeper.hpp" |
46 #include "runtime/sweeper.hpp" |
47 #include "utilities/resourceHash.hpp" |
47 #include "utilities/resourceHash.hpp" |
48 #include "utilities/dtrace.hpp" |
48 #include "utilities/dtrace.hpp" |
49 #include "utilities/events.hpp" |
49 #include "utilities/events.hpp" |
50 #include "utilities/xmlstream.hpp" |
50 #include "utilities/xmlstream.hpp" |
|
51 #include "logging/log.hpp" |
51 #ifdef TARGET_ARCH_x86 |
52 #ifdef TARGET_ARCH_x86 |
52 # include "nativeInst_x86.hpp" |
53 # include "nativeInst_x86.hpp" |
53 #endif |
54 #endif |
54 #ifdef TARGET_ARCH_sparc |
55 #ifdef TARGET_ARCH_sparc |
55 # include "nativeInst_sparc.hpp" |
56 # include "nativeInst_sparc.hpp" |
1308 assert(is_alive != NULL, "Should be non-NULL"); |
1309 assert(is_alive != NULL, "Should be non-NULL"); |
1309 // A non-NULL is_alive closure indicates that this is being called during GC. |
1310 // A non-NULL is_alive closure indicates that this is being called during GC. |
1310 flush_dependencies(is_alive); |
1311 flush_dependencies(is_alive); |
1311 |
1312 |
1312 // Break cycle between nmethod & method |
1313 // Break cycle between nmethod & method |
1313 if (TraceClassUnloading && WizardMode) { |
1314 if (log_is_enabled(Trace, classunload)) { |
1314 tty->print_cr("[Class unloading: Making nmethod " INTPTR_FORMAT |
1315 outputStream* log = LogHandle(classunload)::trace_stream(); |
1315 " unloadable], Method*(" INTPTR_FORMAT |
1316 log->print_cr("making nmethod " INTPTR_FORMAT |
|
1317 " unloadable, Method*(" INTPTR_FORMAT |
1316 "), cause(" INTPTR_FORMAT ")", |
1318 "), cause(" INTPTR_FORMAT ")", |
1317 p2i(this), p2i(_method), p2i(cause)); |
1319 p2i(this), p2i(_method), p2i(cause)); |
1318 if (!Universe::heap()->is_gc_active()) |
1320 if (!Universe::heap()->is_gc_active()) |
1319 cause->klass()->print(); |
1321 cause->klass()->print_on(log); |
1320 } |
1322 } |
1321 // Unlink the osr method, so we do not look this up again |
1323 // Unlink the osr method, so we do not look this up again |
1322 if (is_osr_method()) { |
1324 if (is_osr_method()) { |
1323 invalidate_osr_method(); |
1325 invalidate_osr_method(); |
1324 } |
1326 } |