Ensure a type-error is thrown when trying to assign to a readonly property on the...
authorverwaest@chromium.org <verwaest@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 23 Jan 2013 17:27:25 +0000 (17:27 +0000)
committerverwaest@chromium.org <verwaest@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 23 Jan 2013 17:27:25 +0000 (17:27 +0000)
Review URL: https://chromiumcodereview.appspot.com/11953056

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13485 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/ic.cc

index 5e8e0e0..49b3377 100644 (file)
--- a/src/ic.cc
+++ b/src/ic.cc
@@ -1463,7 +1463,9 @@ MaybeObject* StoreIC::Store(State state,
     if (FLAG_use_ic) {
       UpdateStoreCaches(&lookup, state, strict_mode, receiver, name, value);
     }
-  } else if (strict_mode == kStrictMode && IsUndeclaredGlobal(object)) {
+  } else if (strict_mode == kStrictMode &&
+             !(lookup.IsProperty() && lookup.IsReadOnly()) &&
+             IsUndeclaredGlobal(object)) {
     // Strict mode doesn't allow setting non-existent global property.
     return ReferenceError("not_defined", name);
   }