| Index: src/objects.cc
 | 
| diff --git a/src/objects.cc b/src/objects.cc
 | 
| index f3d492955bfab448238de125ab7e519fc497085c..12b206cce9fb863d23bc9e611126ea5c0a1cb70f 100644
 | 
| --- a/src/objects.cc
 | 
| +++ b/src/objects.cc
 | 
| @@ -4209,15 +4209,6 @@ Maybe<bool> Object::SetPropertyInternal(LookupIterator* it,
 | 
|      if (done) break;
 | 
|    }
 | 
|  
 | 
| -  // If the receiver is the JSGlobalObject, the store was contextual. In case
 | 
| -  // the property did not exist yet on the global object itself, we have to
 | 
| -  // throw a reference error in strict mode.  In sloppy mode, we continue.
 | 
| -  if (it->GetReceiver()->IsJSGlobalObject() && is_strict(language_mode)) {
 | 
| -    it->isolate()->Throw(*it->isolate()->factory()->NewReferenceError(
 | 
| -        MessageTemplate::kNotDefined, it->name()));
 | 
| -    return Nothing<bool>();
 | 
| -  }
 | 
| -
 | 
|    *found = false;
 | 
|    return Nothing<bool>();
 | 
|  }
 | 
| @@ -4230,6 +4221,16 @@ Maybe<bool> Object::SetProperty(LookupIterator* it, Handle<Object> value,
 | 
|    Maybe<bool> result =
 | 
|        SetPropertyInternal(it, value, language_mode, store_mode, &found);
 | 
|    if (found) return result;
 | 
| +
 | 
| +  // If the receiver is the JSGlobalObject, the store was contextual. In case
 | 
| +  // the property did not exist yet on the global object itself, we have to
 | 
| +  // throw a reference error in strict mode.  In sloppy mode, we continue.
 | 
| +  if (is_strict(language_mode) && it->GetReceiver()->IsJSGlobalObject()) {
 | 
| +    it->isolate()->Throw(*it->isolate()->factory()->NewReferenceError(
 | 
| +        MessageTemplate::kNotDefined, it->name()));
 | 
| +    return Nothing<bool>();
 | 
| +  }
 | 
| +
 | 
|    ShouldThrow should_throw =
 | 
|        is_sloppy(language_mode) ? DONT_THROW : THROW_ON_ERROR;
 | 
|    return AddDataProperty(it, value, NONE, should_throw, store_mode);
 | 
| 
 |