8029003: setField in ScriptObject is incorrect for non extensible objects

Reviewed-by: lagergren, jlaskey
This commit is contained in:
Athijegannathan Sundararajan 2014-01-07 18:14:18 +05:30
parent ab0a342a89
commit a26dd7a41b

View File

@ -1888,7 +1888,9 @@ public abstract class ScriptObject extends PropertyListenerManager implements Pr
final ScriptObject obj = (ScriptObject)self;
final boolean isStrict = NashornCallSiteDescriptor.isStrict(desc);
if (!obj.isExtensible()) {
throw typeError("object.non.extensible", desc.getNameToken(2), ScriptRuntime.safeToString(obj));
if (isStrict) {
throw typeError("object.non.extensible", desc.getNameToken(2), ScriptRuntime.safeToString(obj));
}
} else if (obj.compareAndSetMap(oldMap, newMap)) {
setter.invokeExact(self, value);
} else {