putDirect has ambiguous semantics, clean these up a bit. putDirect generally behaves a bit like a fast defineOwnProperty, but one that always creates the property, with no checking to validate the put it permitted. It also encompasses two slightly different behaviors. (1) a fast form of put for JSActivation, which doesn't have to handle searching the prototype chain, getter/setter properties, or the magic __proto__ value. Break this out as a new method, 'putOwnDataProperty'. (2) the version of putDirect on JSValue will also check for overwriting ReadOnly values, in strict mode. This is, however, not so smart on a few level, since it is only called from op_put_by_id with direct set, which is only used with an object as the base, and is only used to put new properties onto objects.
Created attachment 122344 [details] Part 1
Landed pt 1 in r104886.
Created attachment 122360 [details] Part 2
Comment on attachment 122360 [details] Part 2 View in context: https://bugs.webkit.org/attachment.cgi?id=122360&action=review > Source/JavaScriptCore/runtime/JSObject.h:81 > + PutModePut, > + DefineOwnProperty, I refuse the inconsistency. DefineOwnProperty should be, PutModeDefineOwnProperty!
Part 2 landed in r104899
Created attachment 124505 [details] Part 3 - merge op_put_getter & op_put_setter.
Fixed in r106255