v8/test
Joyee Cheung 4ee68d81b9 [ic] fix handling of existing properties in Define{Keyed|Named}OwnIC
- When the property being defined with DefineKeyedOwnIC or
  DefineNamedOwnIC already exists, we should use the slow path to
  check if the operation is allowed in case the property is
  non-configurable or Object.preventExtensions() has been called on
  the property.
- Since KeyedStoreIC:Store() reuses StoreIC::Store() when the key is a
  name, we should use Runtime::DefineObjectOwnProperty() for
  DefineKeyedOwnIC too.
- When dealing with public fields, Runtime::DefineObjectOwnProperty()
  should use JSReceiver::CreateDataProperty() instead of
  Object::SetProperty() for the specified semantics. This patch also
  adds JSReceiver::AddPrivateField() for it and StoreIC::Store to
  define private fields without triggering traps or checking
  extensibility.
- To emit a more specific error message when redefining properties
  on non-extensible objects, Object::AddDataProperty() now also takes
  a EnforceDefineSemantics enum to distinguish between set and define.
- Drive-by: fix JSReceiver::CheckIfCanDefine() which should check for
  extensibility even if the configurability check passes.

Bug: chromium:1259950, v8:9888
Change-Id: Ib1bc851ffd4b9c3a0e98cac96dafe743c08ee37e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3517934
Reviewed-by: Shu-yu Guo <syg@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Joyee Cheung <joyee@igalia.com>
Cr-Commit-Position: refs/heads/main@{#79603}
2022-03-24 12:36:42 +00:00
..
benchmarks [tests] Skip slow tests on certain configurations 2022-01-31 13:52:22 +00:00
bigint [bigint][test] Better random input generation 2021-09-08 15:39:27 +00:00
cctest [debug] Hold on to promises weakly from the debugger's promise stack. 2022-03-24 08:16:32 +00:00
common [wasm-gc] Merge anyref and externref 2022-03-01 22:12:59 +00:00
debugger [ic] name Set/Define/Store property operations more consistently 2022-03-08 18:48:16 +00:00
debugging [d8][mjsunit][tools] Improve d8 file API 2021-06-01 13:37:57 +00:00
fuzzer [inspector-test] Gracefully handle termination. 2022-03-21 12:36:59 +00:00
fuzzilli Fix unhandled promise rejections in REPRL mode 2020-09-30 13:34:23 +00:00
inspector [maglev] Create test variant 2022-03-23 10:12:52 +00:00
intl [maglev] Create test variant 2022-03-23 10:12:52 +00:00
js-perf-test [test] Add js-perf-test for object destructuring assignment 2022-03-21 13:42:20 +00:00
memory [snapshot] Fix the Memory.json benchmark 2021-04-28 07:54:34 +00:00
message [test] Pretty print object properties on assert failure 2022-03-04 14:30:51 +00:00
mjsunit [ic] fix handling of existing properties in Define{Keyed|Named}OwnIC 2022-03-24 12:36:42 +00:00
mkgrokdump [heap] Add flag for disabling map space 2022-02-18 09:03:07 +00:00
mozilla [test] Clean up Py2 code 2022-03-17 09:12:36 +00:00
test262 [class] fix read-only private references in logical assignments 2022-03-23 16:16:32 +00:00
torque Reland "Reland "[Torque] Generalize Torque literals to larger size"" 2022-02-04 09:40:24 +00:00
unittests Reland "cppgc: Add DCHECK that object start bitmap is safe to use" 2022-03-23 22:58:42 +00:00
wasm-api-tests [test] Clean up Py2 code 2022-03-17 09:12:36 +00:00
wasm-js [wasm] Update spec tests 2022-02-10 13:15:08 +00:00
wasm-spec-tests [wasm] Update spec tests 2022-02-10 13:15:08 +00:00
webkit [test] Disable failing MSVC test 2021-12-01 15:51:59 +00:00
BUILD.gn Reland^2 "[bigint] Karatsuba multiplication" 2021-06-07 11:01:14 +00:00
OWNERS Use relative paths to OWNERS files 2019-08-12 13:52:52 +00:00