Chromium Code Reviews| Index: src/runtime.cc |
| diff --git a/src/runtime.cc b/src/runtime.cc |
| index 548d30fac3dd36eed5dfcfd8aff69b516bc33cec..e5ec7733f06ca69e8eb4e49c2736af51e6ad0dfd 100644 |
| --- a/src/runtime.cc |
| +++ b/src/runtime.cc |
| @@ -8859,13 +8859,25 @@ static ObjectPair LoadContextSlotHelper(Arguments args, |
| Handle<Object> receiver = isolate->factory()->the_hole_value(); |
| Object* value = Context::cast(*holder)->get(index); |
| // Check for uninitialized bindings. |
| - if (binding_flags == MUTABLE_CHECK_INITIALIZED && value->IsTheHole()) { |
| - Handle<Object> reference_error = |
| - isolate->factory()->NewReferenceError("not_defined", |
| - HandleVector(&name, 1)); |
| - return MakePair(isolate->Throw(*reference_error), NULL); |
| - } else { |
| - return MakePair(Unhole(isolate->heap(), value, attributes), *receiver); |
| + switch (binding_flags) { |
| + case MUTABLE_CHECK_INITIALIZED: |
| + case IMMUTABLE_CHECK_INITIALIZED_HARMONY: |
| + if (value->IsTheHole()) { |
| + Handle<Object> reference_error = |
| + isolate->factory()->NewReferenceError("not_defined", |
| + HandleVector(&name, 1)); |
| + return MakePair(isolate->Throw(*reference_error), NULL); |
| + } |
| + // FALLTHROUGH |
| + case MUTABLE_IS_INITIALIZED: |
| + case IMMUTABLE_IS_INITIALIZED: |
| + case IMMUTABLE_IS_INITIALIZED_HARMONY: |
| + ASSERT(!value->IsTheHole()); |
| + return MakePair(value, *receiver); |
| + case IMMUTABLE_CHECK_INITIALIZED: |
| + return MakePair(Unhole(isolate->heap(), value, attributes), *receiver); |
| + case MISSING_BINDING: |
| + UNREACHABLE(); |
|
fschneider
2011/10/24 12:58:13
Not sure, but you may have to return something her
Steven
2011/10/24 14:05:18
Done.
|
| } |
| } |