1. 21 Aug, 2018 1 commit
  2. 13 Aug, 2018 1 commit
  3. 07 Aug, 2018 1 commit
  4. 06 Aug, 2018 3 commits
  5. 23 Jul, 2018 1 commit
  6. 06 Jul, 2018 1 commit
    • jgruber's avatar
      [builtins] Reduce inlining in RegExp builtins · fce2a142
      jgruber authored
      RegExp builtins were the first to be ported to CSA roughly two years
      ago. Back then, we weren't really aware of issues surrounding code
      size and CSA inlining, and thus some of these builtins were bigger
      than they should be.
      
      This CL adds a few new helper builtins and removes inlined calls to
      SubString, RegExpExecInternal, and StringAdd. It significantly
      reduces the size of affected builtins. Minor performance regressions
      due to call overhead are expected.
      
      Before:
      TFS Builtin, RegExpReplace, 20008
      TFS Builtin, RegExpSplit, 17340
      TFS Builtin, RegExpMatchFast, 17064
      TFJ Builtin, RegExpStringIteratorPrototypeNext, 12862
      
      After:
      TFS Builtin, RegExpReplace, 5067
      TFS Builtin, RegExpSplit, 6329
      TFS Builtin, RegExpMatchFast, 8164
      TFJ Builtin, RegExpStringIteratorPrototypeNext, 6652
      
      Bug: v8:5737
      Change-Id: I1c077a084da85bb73c0c5adb7118b941f488e0ec
      Reviewed-on: https://chromium-review.googlesource.com/1127796Reviewed-by: 's avatarPeter Marshall <petermarshall@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#54293}
      fce2a142
  7. 18 Jun, 2018 1 commit
  8. 11 Jun, 2018 1 commit
    • Sigurd Schneider's avatar
      [turbofan] Add inlining for RegExp#test · 394d53d1
      Sigurd Schneider authored
      This CL adds a TFS stub for RegExp#test and moves several checks to
      the JSCallReducer. In particular, the JSCallReducer checks that
       - property {exec} on the regexp is still the original exec
       - property {lastIndex} on the regexp is a non-negative smi
      The stub does not repeat these checks in release mode.
      
      This effectively means that if the regexp is known, we can perform these
      checks at compile time, and get away with a map dependency.
      
      Bug: v8:7779, v8:7200
      
      Change-Id: I0c6d711d4f1d2f6f325a1c02855b0e1b62e014c8
      Reviewed-on: https://chromium-review.googlesource.com/1074654
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53630}
      394d53d1
  9. 06 Jun, 2018 1 commit
  10. 17 May, 2018 1 commit
  11. 16 May, 2018 1 commit
  12. 27 Apr, 2018 1 commit
  13. 25 Apr, 2018 1 commit
    • Andreas Haas's avatar
      Reland: [refactoring] Remove the isolate from signatures of ExternalReferences · 2a3c2c73
      Andreas Haas authored
      I missed one required change which was hidden behind an #if. The fix is in
      the diff between Patch 1 and Patch 3.
      
      Original message:
      In this CL I remove the isolate from signatures of ExternalReference
      accessor functions where the isolate is not used. The uses of the
      isolate were already removed in previous CLs.
      
      Changes:
      * I split the ExternalReference list in external-reference.h into
      those which need the isolate for initialization and those which do not.
      
      * I removed the public constructors and replaced them by
        ExternalReference::Create(). The reason is to separate external
        creation more clearly from internal creation, because externally
        created ExternalReferences sometimes need redirection, whereas
        internally created ExternalReferences are just stored as they are.
        In addition, by removing the isolate from the signature of the
        public constructors, they suddenly exactly matched the interal
        constructor.
      
      * Replace all uses of the public constructors with
        ExternalReference::Create().
      
      * Remove the isolate from all call sites where necessary.
      
      
      This is a step towards making WebAssembly compilation independent of
      the isolate.
      
      R=mstarzinger@chromium.org
      
      Bug: v8:7570
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Change-Id: I750c162f5d58ed32e866722b0db920f8b9bd8057
      Reviewed-on: https://chromium-review.googlesource.com/1026673Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52777}
      2a3c2c73
  14. 24 Apr, 2018 2 commits
    • Andreas Haas's avatar
      Revert "[refactoring] Remove the isolate from signatures of ExternalReferences" · 7bfed2ad
      Andreas Haas authored
      This reverts commit 44ea425a.
      
      Reason for revert: https://ci.chromium.org/buildbot/client.v8.ports/V8%20Arm%20-%20debug%20builder/13575
      
      Original change's description:
      > [refactoring] Remove the isolate from signatures of ExternalReferences
      > 
      > In this CL I remove the isolate from signatures of ExternalReference
      > accessor functions where the isolate is not used. The uses of the
      > isolate were already removed in previous CLs.
      > 
      > Changes:
      > * I split the ExternalReference list in external-reference.h into
      > those which need the isolate for initialization and those which do not.
      > 
      > * I removed the public constructors and replaced them by
      >   ExternalReference::Create(). The reason is to separate external
      >   creation more clearly from internal creation, because externally
      >   created ExternalReferences sometimes need redirection, whereas
      >   internally created ExternalReferences are just stored as they are.
      >   In addition, by removing the isolate from the signature of the
      >   public constructors, they suddenly exactly matched the interal
      >   constructor.
      > 
      > * Replace all uses of the public constructors with
      >   ExternalReference::Create().
      > 
      > * Remove the isolate from all call sites where necessary.
      > 
      > 
      > This is a step towards making WebAssembly compilation independent of
      > the isolate.
      > 
      > Bug: v8:7570
      > R=​mstarzinger@chromium.org
      > 
      > Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      > Change-Id: I14f511fc6acc50ab2d6a6641299f5ddbeabef0da
      > Reviewed-on: https://chromium-review.googlesource.com/1018982
      > Commit-Queue: Andreas Haas <ahaas@chromium.org>
      > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#52768}
      
      TBR=mstarzinger@chromium.org,ahaas@chromium.org
      
      Change-Id: I7c0d8d420f815cede23d550dee8942ac4d7791cc
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:7570
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/1026570Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52769}
      7bfed2ad
    • Andreas Haas's avatar
      [refactoring] Remove the isolate from signatures of ExternalReferences · 44ea425a
      Andreas Haas authored
      In this CL I remove the isolate from signatures of ExternalReference
      accessor functions where the isolate is not used. The uses of the
      isolate were already removed in previous CLs.
      
      Changes:
      * I split the ExternalReference list in external-reference.h into
      those which need the isolate for initialization and those which do not.
      
      * I removed the public constructors and replaced them by
        ExternalReference::Create(). The reason is to separate external
        creation more clearly from internal creation, because externally
        created ExternalReferences sometimes need redirection, whereas
        internally created ExternalReferences are just stored as they are.
        In addition, by removing the isolate from the signature of the
        public constructors, they suddenly exactly matched the interal
        constructor.
      
      * Replace all uses of the public constructors with
        ExternalReference::Create().
      
      * Remove the isolate from all call sites where necessary.
      
      
      This is a step towards making WebAssembly compilation independent of
      the isolate.
      
      Bug: v8:7570
      R=mstarzinger@chromium.org
      
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Change-Id: I14f511fc6acc50ab2d6a6641299f5ddbeabef0da
      Reviewed-on: https://chromium-review.googlesource.com/1018982
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52768}
      44ea425a
  15. 12 Apr, 2018 2 commits
    • peterwmwong's avatar
      [builtins] Add fast paths to String.p.matchAll · ae4529f9
      peterwmwong authored
      Add fast paths when RegExp and RegExp result are fast wherever possible.
      
      As shown below, this CL improves the performance of calling S.p.matchAll and
      iterating over matches.
      
      Before:
      
      StringMatchAllBuiltinRegExpIteratorCreation-Strings(Score): 5002
      StringMatchAllBuiltinStringIteratorCreation-Strings(Score): 13798
      StringMatchAllBuiltinString-Strings(Score): 197
      StringMatchAllManualString-Strings(Score): 454
      StringMatchAllBuiltinRegExp-Strings(Score): 193
      StringMatchAllManualRegExp-Strings(Score): 453
      StringMatchAllBuiltinZeroWidth-Strings(Score): 97.2
      StringMatchAllBuiltinZeroWidthUnicode-Strings(Score): 95.9
      
      After:
      
      StringMatchAllBuiltinRegExpIteratorCreation-Strings(Score): 15437
      StringMatchAllBuiltinStringIteratorCreation-Strings(Score): 16708
      StringMatchAllBuiltinString-Strings(Score): 392
      StringMatchAllManualString-Strings(Score): 452
      StringMatchAllBuiltinRegExp-Strings(Score): 394
      StringMatchAllManualRegExp-Strings(Score): 484
      StringMatchAllBuiltinZeroWidth-Strings(Score): 409
      StringMatchAllBuiltinZeroWidthUnicode-Strings(Score): 413
      
      Bug: v8:6890
      Change-Id: I6fcc1003a471314cf412aac456d42286b2926810
      Reviewed-on: https://chromium-review.googlesource.com/1005400
      Commit-Queue: Peter Wong <peter.wm.wong@gmail.com>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52581}
      ae4529f9
    • peterwmwong's avatar
      [builtins] Fix missing ToString in RegExp.p.match · 7bdbe77a
      peterwmwong authored
      It is not safe to assume the first match is a string just
      because the RegExp result is fast.
      
      Bug: chromium:831943
      Change-Id: Idd40f8b75312f0be54f45f626dc017339033abc6
      Reviewed-on: https://chromium-review.googlesource.com/1009325Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Peter Wong <peter.wm.wong@gmail.com>
      Cr-Commit-Position: refs/heads/master@{#52578}
      7bdbe77a
  16. 09 Apr, 2018 1 commit
  17. 06 Apr, 2018 3 commits
    • Peter Marshall's avatar
      [cleanup] Add CSA types to SpeciesConstructor and GetSuperConstructor · 1f7d80cd
      Peter Marshall authored
      Also changed the order of params so that context comes first to be more
      consistent with other CSA helpers.
      
      Change-Id: Ibf602dc7f3a148bed7fc0f93cc3dbc714febd786
      Reviewed-on: https://chromium-review.googlesource.com/999513Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Commit-Queue: Peter Marshall <petermarshall@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52441}
      1f7d80cd
    • Michael Achenbach's avatar
      Revert "[cleanup] Refactor the Factory" · 503e07c3
      Michael Achenbach authored
      This reverts commit f9a2e24b.
      
      Reason for revert: gc stress failures not all fixed by follow up.
      
      Original change's description:
      > [cleanup] Refactor the Factory
      > 
      > There is no good reason to have the meat of most objects' initialization
      > logic in heap.cc, all wrapped by the CALL_HEAP_FUNCTION macro. Instead,
      > this CL changes the protocol between Heap and Factory to be AllocateRaw,
      > and all object initialization work after (possibly retried) successful
      > raw allocation happens in the Factory.
      > 
      > This saves about 20KB of binary size on x64.
      > 
      > Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      > Change-Id: Icbfdc4266d7be8b48d2fe085f03411743dc6a0ca
      > Reviewed-on: https://chromium-review.googlesource.com/959533
      > Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      > Reviewed-by: Hannes Payer <hpayer@chromium.org>
      > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#52416}
      
      TBR=jkummerow@chromium.org,yangguo@chromium.org,mstarzinger@chromium.org,hpayer@chromium.org
      
      Change-Id: Idbbc53478742f3e9525eee83342afc6aedae122f
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/999414Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52420}
      503e07c3
    • Jakob Kummerow's avatar
      [cleanup] Refactor the Factory · f9a2e24b
      Jakob Kummerow authored
      There is no good reason to have the meat of most objects' initialization
      logic in heap.cc, all wrapped by the CALL_HEAP_FUNCTION macro. Instead,
      this CL changes the protocol between Heap and Factory to be AllocateRaw,
      and all object initialization work after (possibly retried) successful
      raw allocation happens in the Factory.
      
      This saves about 20KB of binary size on x64.
      
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Change-Id: Icbfdc4266d7be8b48d2fe085f03411743dc6a0ca
      Reviewed-on: https://chromium-review.googlesource.com/959533
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52416}
      f9a2e24b
  18. 05 Apr, 2018 1 commit
  19. 28 Mar, 2018 1 commit
  20. 27 Mar, 2018 1 commit
  21. 23 Mar, 2018 3 commits
  22. 26 Feb, 2018 1 commit
  23. 23 Feb, 2018 2 commits
  24. 13 Feb, 2018 1 commit
    • Sigurd Schneider's avatar
      Reland "[cleanup] Harden the SubString CSA/Runtime implementations." · bb282636
      Sigurd Schneider authored
      This is a reland of 6d5b54df82e27a82811a836dcdbbfe26829f0e6d
      Original change's description:
      > [cleanup] Harden the SubString CSA/Runtime implementations.
      >
      > Remove the self-healing for invalid parameters in the
      > CodeStubAssembler::SubString helper and the %SubString runtime function,
      > which is used as a fallback for the CodeStubAssembler implementation.
      > All call sites must do appropriate parameter validation anyways now that
      > the self-hosted JavaScript builtins using these helpers are gone, and we
      > have proper contracts with the uses.
      >
      > Also remove the context parameter from the CodeStubAssembler::SubString
      > method, which is unnecessary, since this can no longer throw an
      > exception.
      >
      > Bug: v8:5269, v8:6936, v8:7109, v8:7137
      > Change-Id: I19d93bad5f41faa0561c4561a48f78fcba99a549
      > Reviewed-on: https://chromium-review.googlesource.com/795720
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#49702}
      
      Bug: v8:5269, v8:6936, v8:7109, v8:7137
      Change-Id: I5e84998a2dd3990d7981505b401ffc770e0b7ac5
      Reviewed-on: https://chromium-review.googlesource.com/913130Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51265}
      bb282636
  25. 09 Feb, 2018 1 commit
  26. 08 Feb, 2018 1 commit
  27. 07 Feb, 2018 1 commit
  28. 06 Feb, 2018 1 commit
    • Peter Marshall's avatar
      [csa] Move the GrowableFixedArray into its own file. · 71ea148e
      Peter Marshall authored
      We want to be able to use this from other builtins as well, so move it
      to somewhere common.
      
      Also adds typing and cleans up the coding style to match newer CSA code
      a bit more. GrowableFixedArray is now a subclass of CodeStubAssembler
      to make things easier and cleaner. The growing strategy has also been
      slightly changed so that empty arrays can be produced.
      
      Change-Id: I20cbd1069d489a6875804736d3e5abab80d0f777
      Reviewed-on: https://chromium-review.googlesource.com/901324Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Peter Marshall <petermarshall@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51107}
      71ea148e
  29. 17 Jan, 2018 1 commit
  30. 12 Jan, 2018 2 commits