| Index: runtime/vm/compiler.cc
|
| ===================================================================
|
| --- runtime/vm/compiler.cc (revision 28280)
|
| +++ runtime/vm/compiler.cc (working copy)
|
| @@ -857,6 +857,7 @@
|
| ASSERT(cls.IsDynamicClass());
|
| return error.raw();
|
| }
|
| + // Compile all the regular functions.
|
| for (int i = 0; i < functions.Length(); i++) {
|
| func ^= functions.At(i);
|
| ASSERT(!func.IsNull());
|
| @@ -869,6 +870,22 @@
|
| }
|
| }
|
| }
|
| + // Inner functions get added to the closures array. As part of compilation
|
| + // more closures can be added to the end of the array. Compile all the
|
| + // closures until we have reached the end of the "worklist".
|
| + GrowableObjectArray& closures =
|
| + GrowableObjectArray::Handle(cls.closures());
|
| + if (!closures.IsNull()) {
|
| + for (int i = 0; i < closures.Length(); i++) {
|
| + func ^= closures.At(i);
|
| + if (!func.HasCode()) {
|
| + error = CompileFunction(func);
|
| + if (!error.IsNull()) {
|
| + return error.raw();
|
| + }
|
| + }
|
| + }
|
| + }
|
| return error.raw();
|
| }
|
|
|
|
|