# HG changeset patch # User Tomas Lindquist Olsen # Date 1239922460 -7200 # Node ID fc579f389f9a3e65a63e1f2f813da42860290ced # Parent f295e51d2dd0b9d87fc2d25e332de2923121fa5f !ClassInfo instances were not mutable, this is necessary for .classinfo based locking to work. !ModuleInfo generation was commented out as well. diff -r f295e51d2dd0 -r fc579f389f9a gen/toobj.cpp --- a/gen/toobj.cpp Fri Apr 17 00:36:21 2009 +0200 +++ b/gen/toobj.cpp Fri Apr 17 00:54:20 2009 +0200 @@ -146,7 +146,7 @@ sir->emitFunctionBodies(); // generate ModuleInfo - //genmoduleinfo(); + genmoduleinfo(); // emit usedArray if (!ir.usedArray.empty()) diff -r f295e51d2dd0 -r fc579f389f9a ir/irclass.cpp --- a/ir/irclass.cpp Fri Apr 17 00:36:21 2009 +0200 +++ b/ir/irclass.cpp Fri Apr 17 00:54:20 2009 +0200 @@ -66,8 +66,9 @@ IrTypeClass* tc = cinfo->type->irtype->isClass(); assert(tc && "invalid ClassInfo type"); + // classinfos cannot be constants since they're used a locks for synchronized classInfo = new llvm::GlobalVariable( - tc->getPA().get(), true, _linkage, NULL, initname, gIR->module); + tc->getPA().get(), false, _linkage, NULL, initname, gIR->module); return classInfo; }