Skip to content

Commit ce7f9f0

Browse files
committed
Merge pull request scala#4018 from retronym/ticket/8774-concurrent-modification
Don't remove elements from a map during iteration.
2 parents a52db7f + c048e19 commit ce7f9f0

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,14 @@ abstract class GenASM extends SubComponent with BytecodeWriters with GenJVMASM {
104104
if (settings.debug)
105105
inform("[running phase " + name + " on icode]")
106106

107-
if (settings.Xdce)
108-
for ((sym, cls) <- icodes.classes if inliner.isClosureClass(sym) && !deadCode.liveClosures(sym)) {
107+
if (settings.Xdce) {
108+
val classes = icodes.classes.keys.toList // copy to avoid mutating the map while iterating
109+
for (sym <- classes if inliner.isClosureClass(sym) && !deadCode.liveClosures(sym)) {
109110
log(s"Optimizer eliminated ${sym.fullNameString}")
110111
deadCode.elidedClosures += sym
111112
icodes.classes -= sym
112113
}
114+
}
113115

114116
// For predictably ordered error messages.
115117
var sortedClasses = classes.values.toList sortBy (_.symbol.fullName)

0 commit comments

Comments
 (0)