v8/test/debugger/debug
Joyee Cheung 0d1ffe30f8 [ic] name Set/Define/Store property operations more consistently
For background and reasoning, see
https://docs.google.com/document/d/1jvSEvXFHRkxg4JX-j6ho3nRqAF8vZI2Ai7RI8AY54gM/edit
This is the first step towards pulling the DefineNamedOwn operation out
of StoreIC.

Summary of the renamed identifiers:

Bytecodes:

- StaNamedProperty -> SetNamedProperty: calls StoreIC and emitted for
  normal named property sets like obj.x = 1.
- StaNamedOwnProperty -> DefineNamedOwnProperty: calls
  DefineNamedOwnIC (previously StoreOwnIC), and emitted for
  initialization of named properties in object literals and named
  public class fields.
- StaKeyedProperty -> SetKeyedProperty: calls KeyedStoreIC and emitted
  for keyed property sets like obj[x] = 1.
- StaKeyedPropertyAsDefine -> DefineKeyedOwnProperty: calls
  DefineKeyedOwnIC (previously KeyedDefineOwnIC) and emitted for
  initialization of private class fields and computed public class
  fields.
- StaDataPropertyInLiteral -> DefineKeyedOwnPropertyInLiteral: calls
  DefineKeyedOwnPropertyInLiteral runtime function (previously
  DefineDataPropertyInLiteral) and emitted for initialization of keyed
  properties in object literals and static class initializers. (note
  that previously the StoreDataPropertyInLiteral runtime function name
  was taken by object spreads and array literal creation instead)
- LdaKeyedProperty -> GetKeyedProperty, LdaNamedProperty ->
  GetNamedProperty, LdaNamedPropertyFromSuper ->
  GetNamedPropertyFromSuper: we drop the Sta prefix for the property
  store operations since the accumulator use is implicit and to make
  the wording more natural, for symmetry the Lda prefix for the
  property load operations is also dropped.

opcodes:

- (JS)StoreNamed -> (JS)SetNamedProperty: implements set semantics for
  named properties, compiled from SetNamedProperty (previously
  StaNamedProperty) and lowers to StoreIC or Runtime::kSetNamedProperty
- (JS)StoreNamedOwn -> (JS)DefineNamedOwnProperty: implements define
  semantics for initializing named own properties in object literal and
  public class fields, compiled from DefineNamedOwnProperty (previously
  StaNamedOwnProperty) and lowers to DefineNamedOwnIC
  (previously StoreOwnIC)
- (JS)StoreProperty -> (JS)SetKeyedProperty: implements set semantics
  for keyed properties, only compiled from SetKeyedProperty(previously
  StaKeyedProperty) and lowers to KeyedStoreIC
- (JS)DefineProperty -> (JS)DefineKeyedOwnProperty: implements define
  semantics for initialization of private class fields and computed
  public class fields, compiled from DefineKeyedOwnProperty (previously
  StaKeyedPropertyAsDefine) and calls DefineKeyedOwnIC (previously
  KeyedDefineOwnIC).
- (JS)StoreDataPropertyInLiteral ->
  (JS)DefineKeyedOwnPropertyInLiteral: implements define semantics for
  initialization of keyed properties in object literals and static
  class initializers, compiled from DefineKeyedOwnPropertyInLiteral
  (previously StaDataPropertyInLiteral) and calls the
  DefineKeyedOwnPropertyInLiteral runtime function (previously
  DefineDataPropertyInLiteral).

Runtime:
- DefineDataPropertyInLiteral -> DefineKeyedOwnPropertyInLiteral:
  following the bytecode/opcodes change, this is used by
  DefineKeyedOwnPropertyInLiteral (previously StaDataPropertyInLiteral)
  for object and class literal initialization.
- StoreDataPropertyInLiteral -> DefineKeyedOwnPropertyInLiteral_Simple:
  it's just a simplified version of DefineDataPropertyInLiteral that
  does not update feedback or perform function name configuration.
  This is used by object spread and array literal creation. Since we
  are renaming DefineDataPropertyInLiteral to
  DefineKeyedOwnPropertyInLiteral, rename this simplified version with
  a `_Simple` suffix. We can consider merging it into
  DefineKeyedOwnPropertyInLiteral in the future. See
  https://docs.google.com/document/d/1jvSEvXFHRkxg4JX-j6ho3nRqAF8vZI2Ai7RI8AY54gM/edit?disco=AAAAQQIz6mU
- Other changes following the bytecode/IR changes

IC:

- StoreOwn -> DefineNamedOwn: used for initialization of named
  properties in object literals and named public class fields.
  - StoreOwnIC -> DefineNamedOwnIC
  - StoreMode::kStoreOwn -> StoreMode::kDefineNamedOwn
  - StoreICMode::kStoreOwn -> StoreICMode::kDefineNamedOwn
  - IsStoreOwn() -> IsDefineNamedOwn()
- DefineOwn -> DefineKeyedOwn: IsDefineOwnIC() was already just
  IsDefineKeyedOwnIC(), and IsAnyDefineOwn() includes both named and
  keyed defines so we don't need an extra generic predicate.
  - StoreMode::kDefineOwn -> StoreMode::kDefineKeyedOwn
  - StoreICMode::kDefineOwn -> StoreICMode::kDefineKeyedOwn
  - IsDefineOwn() -> IsDefineKeyedOwn()
  - IsDefineOwnIC() -> IsDefineKeyedOwnIC()
  - Removing IsKeyedDefineOwnIC() as its now a duplicate of
    IsDefineKeyedOwnIC()
- KeyedDefineOwnIC -> DefineKeyedOwnIC,
  KeyedDefineOwnGenericGenerator() -> DefineKeyedOwnGenericGenerator:
  make the ordering of terms more consistent
- IsAnyStoreOwn() -> IsAnyDefineOwn(): this includes the renamed and
  DefineNamedOwn and DefineKeyedOwn. Also is_any_store_own() is
  removed since it's just a duplicate of this.
- IsKeyedStoreOwn() -> IsDefineNamedOwn(): it's unclear where the
  "keyed" part came from, but it's only used when DefineNamedOwnIC
  (previously StoreOwnIC) reuses KeyedStoreIC, so rename it accordingly

Interpreter & compiler:
- BytecodeArrayBuilder: following bytecode changes
    - StoreNamedProperty -> SetNamedProperty
  - StoreNamedOwnProperty -> DefineNamedOwnProperty
  - StoreKeyedProperty -> SetKeyedProperty
  - DefineKeyedProperty -> DefineKeyedOwnProperty
  - StoreDataPropertyInLiteral -> DefineKeyedOwnPropertyInLiteral
- FeedbackSlotKind:
  - kDefineOwnKeyed -> kDefineKeyedOwn: make the ordering of terms more
    consistent
  - kStoreOwnNamed -> kDefineNamedOwn: following the IC change
  - kStoreNamed{Sloppy|Strict} -> kSetNamed{Sloppy|Strict}: only
    used in StoreIC for set semantics
  - kStoreKeyed{Sloppy|Strict} -> kSetKeyed{Sloppy|Strict}: only used
    in KeyedStoreIC for set semantics
  - kStoreDataPropertyInLiteral -> kDefineKeyedOwnPropertyInLiteral:
    following the IC change
- BytecodeGraphBuilder
  - StoreMode::kNormal, kOwn -> NamedStoreMode::kSet, kDefineOwn: this
    is only used by BytecodeGraphBuilder::BuildNamedStore() to tell the
    difference between SetNamedProperty and DefineNamedOwnProperty
    operations.

Not changed:

- StoreIC and KeyedStoreIC currently contain mixed logic for both Set
  and Define operations, and the paths are controlled by feedback. The
  plan is to refactor the hierarchy like this:
  ```
  - StoreIC
    - DefineNamedOwnIC
    - SetNamedIC (there could also be a NamedStoreIC if that's helpful)
    - KeyedStoreIC
      - SetKeyedIC
      - DefineKeyedOwnIC
      - DefineKeyedOwnICLiteral (could be merged into DefineKeyedOwnIC)
      - StoreInArrayLiteralIC
    - ...
  ```
  StoreIC and KeyedStoreIC would then contain helpers shared by their
  subclasses, therefore it still makes sense to keep the word "Store"
  in their names since they would be generic base classes for both set
  and define operations.
- The Lda and Sta prefixes of bytecodes not involving object properties
  (e.g. Ldar, Star, LdaZero) are kept, since this patch focuses on
  property operations, and distinction between Set and Define might be
  less relevant or nonexistent for bytecodes not involving object
  properties. We could consider rename some of them in future patches
  if that's helpful though.

Bug: v8:12548
Change-Id: Ia36997b02f59a87da3247f20e0560a7eb13077f3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3481475
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Reviewed-by: Shu-yu Guo <syg@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Joyee Cheung <joyee@igalia.com>
Cr-Commit-Position: refs/heads/main@{#79409}
2022-03-08 18:48:16 +00:00
..
compiler Revert "[turbofan] Making OSR concurrent" 2022-02-21 14:02:43 +00:00
es6 Reland "Reland "Reland "Improve error messages for property access on null/undefined""" 2021-07-08 14:31:27 +00:00
es8 [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
harmony [debugger] materialize scope values in TDZ as undefined. 2020-06-15 10:09:58 +00:00
ignition [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
regress Revert "[turbofan] Making OSR concurrent" 2022-02-21 14:02:43 +00:00
side-effect [ic] name Set/Define/Store property operations more consistently 2022-03-08 18:48:16 +00:00
wasm [d8][mjsunit][tools] Improve d8 file API 2021-06-01 13:37:57 +00:00
debug-allscopes-on-debugger.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-backtrace.js [tests] Fix assertFalse(exception) anti-pattern 2018-03-21 10:59:46 +00:00
debug-bigint.js Remove always-true --harmony-bigint runtime flag 2018-10-01 11:31:13 +00:00
debug-break-class-fields.js Reland "[class] implement reparsing of class instance member initializers" 2022-01-24 16:24:35 +00:00
debug-break-inline.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
debug-break-microtask.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-break-native.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-break-return.js [debug] removed most debugger js 2018-06-03 06:02:59 +00:00
debug-breakpoints.js [debug-wrapper] Further extend the debug wrapper 2016-11-16 08:34:44 +00:00
debug-clearbreakpoint.js [tests] Fix assertFalse(exception) anti-pattern 2018-03-21 10:59:46 +00:00
debug-compile-event.js [tests] Fix assertFalse(exception) anti-pattern 2018-03-21 10:59:46 +00:00
debug-compile-optimized.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
debug-conditional-breakpoints.js [debug-wrapper] Migrate more tests 2016-11-22 12:44:18 +00:00
debug-constructor.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-enable-disable-breakpoints.js [debug-wrapper] Further extend the debug wrapper 2016-11-16 08:34:44 +00:00
debug-eval-scope.js [debug] Add Eval scope type to inspector protocol 2016-11-23 07:30:23 +00:00
debug-evaluate-arguments.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
debug-evaluate-bool-constructor.js [tests] Fix assertFalse(exception) anti-pattern 2018-03-21 10:59:46 +00:00
debug-evaluate-closure.js [debugger] remove debugger statement support from FCG/CS. 2017-02-22 08:45:09 +00:00
debug-evaluate-dead-function-fails.js [parser] Allow declaring variables without a proxy 2019-01-25 09:10:59 +00:00
debug-evaluate-declaration.js [debug-wrapper] Conditional breaks, locals, evaluate, scopes 2016-11-11 12:08:34 +00:00
debug-evaluate-function-var.js Reland "[debugger] Expose reference to the function in debug-evaluate" 2019-06-27 06:09:22 +00:00
debug-evaluate-local-repl-hole.js Introduce REPL mode 2019-11-06 09:17:04 +00:00
debug-evaluate-locals-capturing.js Reland "[Compiler] Remove CompileDebugCode and EnsureBytecode and replace with Compile" 2017-08-17 13:21:44 +00:00
debug-evaluate-locals-optimized-double.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
debug-evaluate-locals-optimized.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
debug-evaluate-locals.js [tests] Fix assertFalse(exception) anti-pattern 2018-03-21 10:59:46 +00:00
debug-evaluate-modify-catch-block-scope.js [parser] Allow declaring variables without a proxy 2019-01-25 09:10:59 +00:00
debug-evaluate-modify-this.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-evaluate-nested-let.js Use --opt instead of --crankshaft in tests. 2017-04-28 14:20:39 +00:00
debug-evaluate-repl-mode-await.js Reland "Implement top-level await for REPL mode" 2019-12-06 10:13:00 +00:00
debug-evaluate-repl-mode-optimized.js Adding support for const redeclaration on REPL mode. 2021-05-11 16:47:04 +00:00
debug-evaluate-repl-mode.js Adding support for const redeclaration on REPL mode. 2021-05-11 16:47:04 +00:00
debug-evaluate-shadowed-context-2.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-evaluate-shadowed-context-3.js Change debug-evaluate from a whitelist to a blacklist approach 2019-09-11 07:52:45 +00:00
debug-evaluate-shadowed-context.js [debug-wrapper] Migrate more tests 2016-11-22 12:44:18 +00:00
debug-evaluate-with.js [tests] Fix assertFalse(exception) anti-pattern 2018-03-21 10:59:46 +00:00
debug-evaluate.js [tests] Fix assertFalse(exception) anti-pattern 2018-03-21 10:59:46 +00:00
debug-event-listener.js [debug-wrapper] Add caught/uncaught to exception pauses 2016-11-10 09:05:29 +00:00
debug-exceptions.js [debug-wrapper] Add caught/uncaught to exception pauses 2016-11-10 09:05:29 +00:00
debug-function-scopes.js [debug-wrapper] Migrate more tests 2016-11-22 12:44:18 +00:00
debug-generator-break-on-stack.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-generator-break.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-liveedit-1.js [debug] migrate all liveedit tests to use LiveEdit::PatchScript 2018-06-21 15:34:16 +00:00
debug-liveedit-2.js [debug] migrate all liveedit tests to use LiveEdit::PatchScript 2018-06-21 15:34:16 +00:00
debug-liveedit-3.js [debug] migrate all liveedit tests to use LiveEdit::PatchScript 2018-06-21 15:34:16 +00:00
debug-liveedit-4.js [debug] migrate all liveedit tests to use LiveEdit::PatchScript 2018-06-21 15:34:16 +00:00
debug-liveedit-arrow-function-at-start.js [liveedit] Fix patching functions with start position zero 2018-07-18 16:20:22 +00:00
debug-liveedit-check-stack.js [debug] Disallow LiveEdit of active frames. 2021-04-28 13:00:19 +00:00
debug-liveedit-compile-error.js [debug] migrate all liveedit tests to use LiveEdit::PatchScript 2018-06-21 15:34:16 +00:00
debug-liveedit-inline.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
debug-liveedit-literals.js [debug] migrate all liveedit tests to use LiveEdit::PatchScript 2018-06-21 15:34:16 +00:00
debug-liveedit-newsource.js [debug] migrate all liveedit tests to use LiveEdit::PatchScript 2018-06-21 15:34:16 +00:00
debug-liveedit-patch-positions-replace.js [test] Fixes a spelling typo 2020-04-06 18:16:55 +00:00
debug-liveedit-recursion.js [debug] Disallow LiveEdit of active frames. 2021-04-28 13:00:19 +00:00
debug-materialized.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
debug-modules-set-variable-value.mjs [test] Remove module pragma in favor of .mjs 2019-06-27 13:25:48 +00:00
debug-multiple-breakpoints.js [debug-wrapper] Migrate more tests 2016-11-22 12:44:18 +00:00
debug-multiple-var-decl.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-negative-break-points.js [debug-wrapper] Migrate more tests 2016-11-22 12:44:18 +00:00
debug-optimize.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
debug-print.js [elements] Rename FAST elements kinds 2017-06-30 13:31:44 +00:00
debug-receiver.js Fix common misspellings 2017-08-02 09:35:28 +00:00
debug-return-value.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-scopes-suspended-generators.js [turbofan] Only save live registers on suspend 2018-02-07 18:07:30 +00:00
debug-scopes.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
debug-set-variable-value.js [debugger] remove debugger statement support from FCG/CS. 2017-02-22 08:45:09 +00:00
debug-stack-check-position.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-step-2.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-step-3.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-step-4.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-step-end-of-script.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-step-into-json.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-step-into-valueof.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-step-microtask.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-step-stub-callfunction.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-step-turbofan.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-step.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-stepin-accessor-ic.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-stepin-accessor.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-stepin-builtin-callback-opt.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-stepin-builtin-callback.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-stepin-builtin.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-stepin-call-function-stub.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-stepin-construct-call.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-stepin-constructor.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-stepin-foreach.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-stepin-function-call.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-stepin-property-function-call.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-stepnext-do-while.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-stepout-recursive-function.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-stepout-scope-part1.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-stepout-scope-part2.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-stepout-scope-part3.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-stepout-scope-part4.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-stepout-scope-part5.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-stepout-scope-part6.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-stepout-scope-part7.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-stepout-scope-part8.js [debug][cleanup] Use consistent StepInto and StepOver naming. 2021-06-01 11:26:57 +00:00
debug-stepout-to-builtin.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
deserialize-script-id.js [debug] retire ScriptWrapper 2018-07-05 21:33:03 +00:00
for-in-opt.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
function-source.js [debug-wrapper] clearAllBreakPoints and several scripts functions 2016-11-17 09:34:18 +00:00
lazy-deopt-then-flush-bytecode.js [sparkplug] Add support to flush only baseline code 2021-08-04 08:22:18 +00:00
regress-3225.js [parser] Allow declaring variables without a proxy 2019-01-25 09:10:59 +00:00
regress-5207.js [ignition/turbo] Perform liveness analysis on the bytecodes 2016-11-29 12:27:15 +00:00