ladybird/Userland/Libraries/LibJS/Bytecode
Timothy Flynn 22fdcfbc50 LibJS: Include identifier information in nullish property write access
When a PutById / PutByValue bytecode operation results in accessing a
nullish object, we now include the name of the property and the object
being accessed in the exception message (if available). This should make
it easier to debug live websites.

For example, the following errors would all previously produce a generic
error message of "ToObject on null or undefined":

  > foo = null
  > foo.bar = 1
  Uncaught exception:
  [TypeError] Cannot access property "bar" on null object "foo"
      at <unknown>

  > foo = { bar: undefined }
  > foo.bar.baz = 1
  Uncaught exception:
  [TypeError] Cannot access property "baz" on undefined object "foo.bar"
      at <unknown>

Note we certainly don't capture all possible nullish property write
accesses here. This just covers cases I've seen most on live websites;
we can cover more cases as they arise.
2024-03-29 21:57:19 +01:00
..
ASTCodegen.cpp LibJS: Include identifier information in nullish property write access 2024-03-29 21:57:19 +01:00
BasicBlock.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
BasicBlock.h Revert "LibJS/Bytecode: Bring back the bytecode optimization pipeline" 2024-03-06 08:39:29 +01:00
Builtins.cpp LibJS: Introduce Builtins 2023-11-17 19:06:25 +01:00
Builtins.h LibJS/JIT: Add builtin for Math.exp() 2023-11-24 12:49:15 +01:00
CodeGenerationError.cpp LibJS: Add to_string definitions to CodeGenerationError and ParserError 2023-02-17 09:14:23 -05:00
CodeGenerationError.h LibJS: Remove unused CodeGenerationError::to_deprecated_string 2023-02-17 09:14:23 -05:00
CommonImplementations.h LibJS: Include identifier information in nullish property write access 2024-03-29 21:57:19 +01:00
Executable.cpp LibJS/Bytecode: Make primitive strings be constants 2024-03-03 22:27:44 +01:00
Executable.h LibJS: Include identifier information in nullish property read access 2024-03-29 21:57:19 +01:00
Generator.cpp LibJS: Include identifier information in nullish property read access 2024-03-29 21:57:19 +01:00
Generator.h LibJS: Include identifier information in nullish property read access 2024-03-29 21:57:19 +01:00
IdentifierTable.cpp LibJS: Don't worry about deduplicating bytecode string tables 2023-10-04 20:10:12 +02:00
IdentifierTable.h AK+Everywhere: Rename FlyString to DeprecatedFlyString 2023-01-09 23:00:24 +00:00
Instruction.cpp Revert "LibJS/Bytecode: Bring back the bytecode optimization pipeline" 2024-03-06 08:39:29 +01:00
Instruction.h Revert "LibJS/Bytecode: Bring back the bytecode optimization pipeline" 2024-03-06 08:39:29 +01:00
Interpreter.cpp LibJS: Include identifier information in nullish property write access 2024-03-29 21:57:19 +01:00
Interpreter.h Revert "LibJS/Bytecode: Bring back the bytecode optimization pipeline" 2024-03-06 08:39:29 +01:00
Label.h Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
Op.h LibJS: Include identifier information in nullish property write access 2024-03-29 21:57:19 +01:00
Operand.h LibJS/Bytecode: Add Bytecode::Operand 2024-02-19 21:45:27 +01:00
RegexTable.cpp LibJS/Bytecode: Don't reparse regular expressions on instantiation 2023-07-13 13:30:49 +02:00
RegexTable.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Register.h LibJS: Stash thrown exception in a register before executing finalizer 2023-11-03 20:27:45 +01:00
StringTable.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
StringTable.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30