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]
Landed pt 1 in r104886.
Created attachment 122360 [details]
Comment on attachment 122360 [details]
View in context: https://bugs.webkit.org/attachment.cgi?id=122360&action=review
> + 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