Mercurial > hg > truffle
comparison src/share/vm/runtime/sweeper.hpp @ 1644:2a47bd84841f
6965184: possible races in make_not_entrant_or_zombie
Reviewed-by: kvn
author | never |
---|---|
date | Thu, 08 Jul 2010 14:29:44 -0700 |
parents | ff38d05ea86f |
children | f95d63e2154a |
comparison
equal
deleted
inserted
replaced
1635:a693e51ac197 | 1644:2a47bd84841f |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 1997, 2010, 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. |
29 | 29 |
30 class NMethodSweeper : public AllStatic { | 30 class NMethodSweeper : public AllStatic { |
31 static long _traversals; // Stack traversal count | 31 static long _traversals; // Stack traversal count |
32 static nmethod* _current; // Current nmethod | 32 static nmethod* _current; // Current nmethod |
33 static int _seen; // Nof. nmethod we have currently processed in current pass of CodeCache | 33 static int _seen; // Nof. nmethod we have currently processed in current pass of CodeCache |
34 static int _invocations; // No. of invocations left until we are completed with this pass | 34 |
35 static volatile int _invocations; // No. of invocations left until we are completed with this pass | |
36 static volatile int _sweep_started; // Flag to control conc sweeper | |
35 | 37 |
36 static bool _rescan; // Indicates that we should do a full rescan of the | 38 static bool _rescan; // Indicates that we should do a full rescan of the |
37 // of the code cache looking for work to do. | 39 // of the code cache looking for work to do. |
38 static bool _do_sweep; // Flag to skip the conc sweep if no stack scan happened | 40 static bool _do_sweep; // Flag to skip the conc sweep if no stack scan happened |
39 static jint _sweep_started; // Flag to control conc sweeper | |
40 static int _locked_seen; // Number of locked nmethods encountered during the scan | 41 static int _locked_seen; // Number of locked nmethods encountered during the scan |
41 static int _not_entrant_seen_on_stack; // Number of not entrant nmethod were are still on stack | 42 static int _not_entrant_seen_on_stack; // Number of not entrant nmethod were are still on stack |
42 | 43 |
43 static bool _was_full; // remember if we did emergency unloading | 44 static bool _was_full; // remember if we did emergency unloading |
44 static jint _advise_to_sweep; // flag to indicate code cache getting full | 45 static jint _advise_to_sweep; // flag to indicate code cache getting full |
45 static jlong _last_was_full; // timestamp of last emergency unloading | 46 static jlong _last_was_full; // timestamp of last emergency unloading |
46 static uint _highest_marked; // highest compile id dumped at last emergency unloading | 47 static uint _highest_marked; // highest compile id dumped at last emergency unloading |
47 static long _was_full_traversal; // trav number at last emergency unloading | 48 static long _was_full_traversal; // trav number at last emergency unloading |
48 | 49 |
49 static void process_nmethod(nmethod *nm); | 50 static void process_nmethod(nmethod *nm); |
51 | |
52 static void log_sweep(const char* msg, const char* format = NULL, ...); | |
53 | |
50 public: | 54 public: |
51 static long traversal_count() { return _traversals; } | 55 static long traversal_count() { return _traversals; } |
52 | 56 |
53 static void scan_stacks(); // Invoked at the end of each safepoint | 57 static void scan_stacks(); // Invoked at the end of each safepoint |
54 static void sweep_code_cache(); // Concurrent part of sweep job | 58 static void sweep_code_cache(); // Concurrent part of sweep job |