Mercurial > hg > graal-jvmci-8
comparison src/share/vm/runtime/task.cpp @ 14392:b5c8a61d7fa0
Merge
author | kvn |
---|---|
date | Fri, 21 Jun 2013 15:56:24 -0700 |
parents | f2110083203d |
children | 606acabe7b5c |
comparison
equal
deleted
inserted
replaced
14391:d2907f74462e | 14392:b5c8a61d7fa0 |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 1997, 2013, 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. |
112 | 112 |
113 PeriodicTask::~PeriodicTask() { | 113 PeriodicTask::~PeriodicTask() { |
114 disenroll(); | 114 disenroll(); |
115 } | 115 } |
116 | 116 |
117 /* enroll could be called from a JavaThread, so we have to check for | |
118 * safepoint when taking the lock to avoid deadlocking */ | |
117 void PeriodicTask::enroll() { | 119 void PeriodicTask::enroll() { |
118 MutexLockerEx ml(PeriodicTask_lock->owned_by_self() ? | 120 MutexLockerEx ml(PeriodicTask_lock->owned_by_self() ? |
119 NULL : PeriodicTask_lock, Mutex::_no_safepoint_check_flag); | 121 NULL : PeriodicTask_lock); |
120 | 122 |
121 if (_num_tasks == PeriodicTask::max_tasks) { | 123 if (_num_tasks == PeriodicTask::max_tasks) { |
122 fatal("Overflow in PeriodicTask table"); | 124 fatal("Overflow in PeriodicTask table"); |
123 } | 125 } |
124 _tasks[_num_tasks++] = this; | 126 _tasks[_num_tasks++] = this; |
129 } else { | 131 } else { |
130 WatcherThread::start(); | 132 WatcherThread::start(); |
131 } | 133 } |
132 } | 134 } |
133 | 135 |
136 /* disenroll could be called from a JavaThread, so we have to check for | |
137 * safepoint when taking the lock to avoid deadlocking */ | |
134 void PeriodicTask::disenroll() { | 138 void PeriodicTask::disenroll() { |
135 MutexLockerEx ml(PeriodicTask_lock->owned_by_self() ? | 139 MutexLockerEx ml(PeriodicTask_lock->owned_by_self() ? |
136 NULL : PeriodicTask_lock, Mutex::_no_safepoint_check_flag); | 140 NULL : PeriodicTask_lock); |
137 | 141 |
138 int index; | 142 int index; |
139 for(index = 0; index < _num_tasks && _tasks[index] != this; index++) | 143 for(index = 0; index < _num_tasks && _tasks[index] != this; index++) |
140 ; | 144 ; |
141 | 145 |