1. 11 Jul, 2018 1 commit
  2. 10 Jul, 2018 2 commits
  3. 09 Jul, 2018 1 commit
  4. 05 Jul, 2018 1 commit
  5. 04 Jul, 2018 1 commit
  6. 03 Jul, 2018 2 commits
  7. 28 Jun, 2018 1 commit
    • Ross McIlroy's avatar
      [sfi] Remove DebugInfo field in SharedFunctionInfo. · c51bcd17
      Ross McIlroy authored
      Merges DebugInfo field into the function_identifier field, storing the function
      identifier in the DebugInfo. Also moves some debugging_hints bits to the SFI flags,
      and others to the DebugInfo. Finally, changes the logic to store debugger patched
      bytecode array on the SFI instead of the DebugInfo, simplifying the logic in the
      InterpreterEntryTrampoline.
      
      BUG=chromium:818642,chromium:783853
      TBR=hpayer@chromium.org
      
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng
      Change-Id: If440080c0f08fac4fb96f5e18dcc0eb9b86d4821
      Reviewed-on: https://chromium-review.googlesource.com/1115819
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#54081}
      c51bcd17
  8. 20 Jun, 2018 1 commit
  9. 12 Jun, 2018 1 commit
  10. 07 Jun, 2018 1 commit
    • Leszek Swirski's avatar
      Revert "[sfi] Remove SFI function literal id field" · b6888b63
      Leszek Swirski authored
      This reverts commit ceb9c812.
      
      Reason for revert: Tanks compile time
      
      Original change's description:
      > [sfi] Remove SFI function literal id field
      > 
      > SharedFunctionInfos store their original function literal's id. This is
      > also their index in the Script's SFI list.
      > 
      > Since the function literal id is only needed for lazy compilation and live
      > edit, we can calculate it on-the-fly by linear search in the Script SFI list,
      > and save a field on the SFI.
      > 
      > If this regresses compile performance, we could alternatively store the
      > function literal id on the preparsed scope data as future work.
      > 
      > Bug: chromium:818642
      > Change-Id: I5468cea0e115921f1c864d94e567d749a4349882
      > Reviewed-on: https://chromium-review.googlesource.com/1082480
      > Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      > Reviewed-by: Hannes Payer <hpayer@chromium.org>
      > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#53523}
      
      TBR=hpayer@chromium.org,leszeks@chromium.org,verwaest@chromium.org
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: chromium:818642
      Bug: chromium:850417
      Change-Id: If2fd21331b7062532c04004a51e705f7e9d0a151
      Reviewed-on: https://chromium-review.googlesource.com/1090494Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53573}
      b6888b63
  11. 05 Jun, 2018 1 commit
    • Leszek Swirski's avatar
      [sfi] Remove SFI function literal id field · ceb9c812
      Leszek Swirski authored
      SharedFunctionInfos store their original function literal's id. This is
      also their index in the Script's SFI list.
      
      Since the function literal id is only needed for lazy compilation and live
      edit, we can calculate it on-the-fly by linear search in the Script SFI list,
      and save a field on the SFI.
      
      If this regresses compile performance, we could alternatively store the
      function literal id on the preparsed scope data as future work.
      
      Bug: chromium:818642
      Change-Id: I5468cea0e115921f1c864d94e567d749a4349882
      Reviewed-on: https://chromium-review.googlesource.com/1082480
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53523}
      ceb9c812
  12. 30 May, 2018 1 commit
    • Leszek Swirski's avatar
      [sfi] Compress function arg counts to 16 bit · 53d4dfc3
      Leszek Swirski authored
      Compress the parameter count (and function length) stored in
      SharedFunctionInfo to a uint16_t. This limits us to 2^16 - 1 parameters
      per function, minus one for the "don't adapt arguments" sentinel value,
      which is one fewer than Code::kMaxArguments was already. Anyway, 65534
      arguments should be enough for anyone!
      
      This drops SFI size by 4 bytes.
      
      Bug: chromium:818642
      Change-Id: I126bfb24453dcdc5087a104d3a12cf195a56fa9f
      Reviewed-on: https://chromium-review.googlesource.com/1076627
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53447}
      53d4dfc3
  13. 24 May, 2018 1 commit
  14. 17 May, 2018 1 commit
  15. 07 May, 2018 1 commit
    • Michael Starzinger's avatar
      [wasm] Make {WasmExportedFunction} fields easier to reach. · 713e10c6
      Michael Starzinger authored
      This moves the internal fields on {WasmExportedFunction} objects from
      being properties with private symbols to a separate structure instead.
      The new {WasmExportedFunctionData} structure can hang off the underlying
      shared function info which is created for each exported function. This
      reduces the number of transitions, speeds up instantiation, and makes it
      easier to reach them from generated code (in the future).
      
      R=titzer@chromium.org
      BUG=v8:7424
      
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng
      Change-Id: Iaa733b6c9f7bea96246d6680756aa7101669a1a9
      Reviewed-on: https://chromium-review.googlesource.com/1047025
      Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53040}
      713e10c6
  16. 14 Apr, 2018 1 commit
    • Jakob Kummerow's avatar
      [ubsan] Change Address typedef to uintptr_t · 2459046c
      Jakob Kummerow authored
      The "Address" type is V8's general-purpose type for manipulating memory
      addresses. Per the C++ spec, pointer arithmetic and pointer comparisons
      are undefined behavior except within the same array; since we generally
      don't operate within a C++ array, our general-purpose type shouldn't be
      a pointer type.
      
      Bug: v8:3770
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;master.tryserver.blink:linux_trusty_blink_rel
      Change-Id: Ib96016c24a0f18bcdba916dabd83e3f24a1b5779
      Reviewed-on: https://chromium-review.googlesource.com/988657
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52601}
      2459046c
  17. 11 Apr, 2018 1 commit
  18. 10 Apr, 2018 1 commit
    • Matheus Marchini's avatar
      interpreter: make interpreted frames distinguishable in the native stack · ada64b58
      Matheus Marchini authored
      Before Turbofan/Ignition it was possible to use external profilers to
      sample running V8/Node.js processes and generate reports/FlameGraphs
      from that. It's still possible to do so, but non-optimized JavaScript
      functions appear in the stack as InterpreterEntryTrampoline. This commit
      adds a runtime flag which makes interpreted frames visible on the
      process' native stack as distinguishable functions, making the sampled
      data gathered by external profilers such as Linux perf and DTrace more
      useful.
      
      R=bmeurer@google.com, franzih@google.com, jarin@google.com, yangguo@google.com
      
      Bug: v8:7155
      Change-Id: I3dc8876aa3cd9f1b9766624842a7cc354ccca415
      Reviewed-on: https://chromium-review.googlesource.com/959081
      Commit-Queue: Yang Guo <yangguo@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52533}
      ada64b58
  19. 06 Apr, 2018 1 commit
  20. 05 Apr, 2018 3 commits
    • Camillo Bruni's avatar
      [runtime][parser] Store the inferred function name on the ScopeInfo · 54f2aac5
      Camillo Bruni authored
      This is another small step towards detaching the JSFunction from Contexts.
      In order to not break the debugger protocol we need the inferred name on the
      ScopeInfo chain. This CL might increase memory usage slightly, given that the
      inferred name field is duplicated on the ScopeInfo.
      
      Bug: v8:7066, chromium:818642
      Change-Id: I0dd9f18ae69791f774cf835669afa50491f7433b
      Reviewed-on: https://chromium-review.googlesource.com/995792
      Commit-Queue: Camillo Bruni <cbruni@chromium.org>
      Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52415}
      54f2aac5
    • Peter Marshall's avatar
      Reland "[runtime] Remove the construct_stub field of the SFI" · b158bfdc
      Peter Marshall authored
      This is a reland of 63ecddc8
      
      Original change's description:
      > [runtime] Remove the construct_stub field of the SFI
      >
      > Don't dispatch based on the construct_stub field anymore. Rather than
      > read it out and jump to the construct stub, we can switch on the
      > builtin_id.
      >
      > Builtins will always have builtin_id as a Smi, so this signals we need
      > to jump to JSBuiltinsConstructStub. The only exception is for uncompiled
      > functions, which will have kCompileLazy as the builtin_id, but need to
      > jump to the generic stub instead.
      >
      > API function calls will have a FunctionTemplateInfo in the SFI
      > function_data field, and need to go to the builtins stub as well.
      >
      > The final case is everything else, which should go to the generic stub.
      >
      > Bug: v8:7503
      > Change-Id: I14790a5f9784dc0d940bf10a05f5310026e1d482
      > Reviewed-on: https://chromium-review.googlesource.com/980941
      > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
      > Commit-Queue: Peter Marshall <petermarshall@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#52345}
      
      TBR=bmeurer@chromium.org
      
      Bug: v8:7503
      Change-Id: Ie46bfb0af173ad7ac8cbdfeed1865e60f3f413f7
      Reviewed-on: https://chromium-review.googlesource.com/997712Reviewed-by: 's avatarPeter Marshall <petermarshall@chromium.org>
      Commit-Queue: Peter Marshall <petermarshall@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52389}
      b158bfdc
    • Alexey Kozyatinskiy's avatar
      Reland "[debug] introduced runtime side effect check" · 71018812
      Alexey Kozyatinskiy authored
      This is a reland of 7a2c3713
      
      Original change's description:
      > [debug] introduced runtime side effect check
      > 
      > This CL demonstrates minimum valuable addition to existing debug evaluate
      > without side effects mechanism.
      > With this CL user can evaluate expressions like:
      > [a,b] // create any kind of temporary array literals
      > [a,b].reduce((x,y) => x + y, 0); // use reduce method
      > [1,2,3].fill(2); // change temporary arrays
      > 
      > The core idea: any change of the object created during evaluation without
      > side effects is side effect free. As soon as we try to store this temporary
      > object to object existed before evaluation we will terminate execution.
      > 
      > Implementation:
      > - track all objects allocated during evaluation and mark them as temporary,
      > - patch all bytecodes which change objects.
      > 
      > A little more details (including performance analysis): [1].
      > 
      > [1] https://docs.google.com/document/d/10qqAtZADspPnpYa6SEdYRxrddfKIZJIzbLtGpsZQkRo/edit#
      > 
      > Bug: v8:7588
      > Change-Id: I69f7b96e1ebd7ad0022219e8213211c7be72a111
      > Reviewed-on: https://chromium-review.googlesource.com/972615
      > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#52370}
      
      Bug: v8:7588
      Change-Id: Ibc92bf19155f2ddaedae39b0c576b994e84afcf8
      Reviewed-on: https://chromium-review.googlesource.com/996760Reviewed-by: 's avatarAleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52373}
      71018812
  21. 04 Apr, 2018 4 commits
    • Aleksey Kozyatinskiy's avatar
      Revert "[debug] introduced runtime side effect check" · 539a2443
      Aleksey Kozyatinskiy authored
      This reverts commit 7a2c3713.
      
      Reason for revert: msan is broken
      
      Original change's description:
      > [debug] introduced runtime side effect check
      > 
      > This CL demonstrates minimum valuable addition to existing debug evaluate
      > without side effects mechanism.
      > With this CL user can evaluate expressions like:
      > [a,b] // create any kind of temporary array literals
      > [a,b].reduce((x,y) => x + y, 0); // use reduce method
      > [1,2,3].fill(2); // change temporary arrays
      > 
      > The core idea: any change of the object created during evaluation without
      > side effects is side effect free. As soon as we try to store this temporary
      > object to object existed before evaluation we will terminate execution.
      > 
      > Implementation:
      > - track all objects allocated during evaluation and mark them as temporary,
      > - patch all bytecodes which change objects.
      > 
      > A little more details (including performance analysis): [1].
      > 
      > [1] https://docs.google.com/document/d/10qqAtZADspPnpYa6SEdYRxrddfKIZJIzbLtGpsZQkRo/edit#
      > 
      > Bug: v8:7588
      > Change-Id: I69f7b96e1ebd7ad0022219e8213211c7be72a111
      > Reviewed-on: https://chromium-review.googlesource.com/972615
      > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#52370}
      
      TBR=ulan@chromium.org,rmcilroy@chromium.org,yangguo@chromium.org,kozyatinskiy@chromium.org,leszeks@chromium.org
      
      Change-Id: Ied1739c6308b13a4981189e0999f5912316cf456
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:7588
      Reviewed-on: https://chromium-review.googlesource.com/996135Reviewed-by: 's avatarAleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52371}
      539a2443
    • Alexey Kozyatinskiy's avatar
      [debug] introduced runtime side effect check · 7a2c3713
      Alexey Kozyatinskiy authored
      This CL demonstrates minimum valuable addition to existing debug evaluate
      without side effects mechanism.
      With this CL user can evaluate expressions like:
      [a,b] // create any kind of temporary array literals
      [a,b].reduce((x,y) => x + y, 0); // use reduce method
      [1,2,3].fill(2); // change temporary arrays
      
      The core idea: any change of the object created during evaluation without
      side effects is side effect free. As soon as we try to store this temporary
      object to object existed before evaluation we will terminate execution.
      
      Implementation:
      - track all objects allocated during evaluation and mark them as temporary,
      - patch all bytecodes which change objects.
      
      A little more details (including performance analysis): [1].
      
      [1] https://docs.google.com/document/d/10qqAtZADspPnpYa6SEdYRxrddfKIZJIzbLtGpsZQkRo/edit#
      
      Bug: v8:7588
      Change-Id: I69f7b96e1ebd7ad0022219e8213211c7be72a111
      Reviewed-on: https://chromium-review.googlesource.com/972615
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52370}
      7a2c3713
    • Michael Achenbach's avatar
      Revert "[runtime] Remove the construct_stub field of the SFI" · f49a1a67
      Michael Achenbach authored
      This reverts commit 63ecddc8.
      
      Reason for revert:
      https://build.chromium.org/p/client.v8/builders/V8%20Linux64%20-%20internal%20snapshot/builds/14773
      
      Original change's description:
      > [runtime] Remove the construct_stub field of the SFI
      > 
      > Don't dispatch based on the construct_stub field anymore. Rather than
      > read it out and jump to the construct stub, we can switch on the
      > builtin_id.
      > 
      > Builtins will always have builtin_id as a Smi, so this signals we need
      > to jump to JSBuiltinsConstructStub. The only exception is for uncompiled
      > functions, which will have kCompileLazy as the builtin_id, but need to
      > jump to the generic stub instead.
      > 
      > API function calls will have a FunctionTemplateInfo in the SFI
      > function_data field, and need to go to the builtins stub as well.
      > 
      > The final case is everything else, which should go to the generic stub.
      > 
      > Bug: v8:7503
      > Change-Id: I14790a5f9784dc0d940bf10a05f5310026e1d482
      > Reviewed-on: https://chromium-review.googlesource.com/980941
      > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
      > Commit-Queue: Peter Marshall <petermarshall@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#52345}
      
      TBR=petermarshall@chromium.org,leszeks@chromium.org,bmeurer@chromium.org
      
      Change-Id: I2031913ab5a12018ad932f920792aa1f6faa5e22
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:7503
      Reviewed-on: https://chromium-review.googlesource.com/995293Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52346}
      f49a1a67
    • Peter Marshall's avatar
      [runtime] Remove the construct_stub field of the SFI · 63ecddc8
      Peter Marshall authored
      Don't dispatch based on the construct_stub field anymore. Rather than
      read it out and jump to the construct stub, we can switch on the
      builtin_id.
      
      Builtins will always have builtin_id as a Smi, so this signals we need
      to jump to JSBuiltinsConstructStub. The only exception is for uncompiled
      functions, which will have kCompileLazy as the builtin_id, but need to
      jump to the generic stub instead.
      
      API function calls will have a FunctionTemplateInfo in the SFI
      function_data field, and need to go to the builtins stub as well.
      
      The final case is everything else, which should go to the generic stub.
      
      Bug: v8:7503
      Change-Id: I14790a5f9784dc0d940bf10a05f5310026e1d482
      Reviewed-on: https://chromium-review.googlesource.com/980941Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Commit-Queue: Peter Marshall <petermarshall@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52345}
      63ecddc8
  22. 27 Mar, 2018 1 commit
  23. 22 Mar, 2018 4 commits
  24. 20 Mar, 2018 2 commits
  25. 16 Mar, 2018 2 commits
  26. 09 Mar, 2018 2 commits
  27. 07 Mar, 2018 1 commit