Fixes threading issue in DependencyChecker

This commit is contained in:
konsoletyper 2014-01-10 15:30:41 +04:00
parent 2214433d6c
commit ca29e10aeb
2 changed files with 9 additions and 7 deletions

View File

@ -106,7 +106,9 @@ public class DependencyChecker {
}
void schedule(final Runnable runnable) {
activeTaskCount.incrementAndGet();
synchronized (activeTaskMonitor) {
activeTaskCount.incrementAndGet();
}
try {
executor.execute(new Runnable() {
@Override public void run() {
@ -117,8 +119,8 @@ public class DependencyChecker {
exceptionOccured.compareAndSet(null, e);
executor.shutdownNow();
}
if (activeTaskCount.decrementAndGet() == 0) {
synchronized (activeTaskMonitor) {
synchronized (activeTaskMonitor) {
if (activeTaskCount.decrementAndGet() == 0) {
activeTaskMonitor.notifyAll();
}
}
@ -131,11 +133,11 @@ public class DependencyChecker {
public void checkDependencies() {
while (true) {
if (activeTaskCount.get() == 0 || exceptionOccured.get() != null) {
break;
}
try {
synchronized (activeTaskMonitor) {
if (activeTaskCount.get() == 0 || exceptionOccured.get() != null) {
break;
}
activeTaskMonitor.wait();
}
} catch (InterruptedException e) {

View File

@ -252,7 +252,7 @@ class ClassRefsRenamer implements InstructionVisitor {
@Override
public void visit(InvokeInstruction insn) {
String className = classNameMapper.map(insn.getMethod().getClassName());
String className = classNameMapper.map(insn.getMethod().getClassName());
ValueType[] signature = insn.getMethod().getSignature();
for (int i = 0; i < signature.length; ++i) {
signature[i] = rename(signature[i]);