- 05 May, 2017 1 commit
-
-
jgruber authored
This CL migrates the CPP builtin to CSA with fast paths for strings that can be unpacked to direct one-byte strings. Short strings are handled directly in CSA, others need to call into C for conversion. Microbenchmarks for "abcd".toLowerCase() show speedups of 2.5x. BUG=v8:6353,v8:6344 Review-Url: https://codereview.chromium.org/2859203002 Cr-Commit-Position: refs/heads/master@{#45141}
-
- 25 Apr, 2017 1 commit
-
-
Hitoshi Yoshida authored
Bug:chromium:617892 Change-Id: I9993191fb632ca49f020e8073e7e409c86932a29 Reviewed-on: https://chromium-review.googlesource.com/485202 Commit-Queue: Hitoshi Yoshida <peria@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#44827}
-
- 19 Apr, 2017 1 commit
-
-
jgruber authored
The StringIndexOf fast path used to be very narrow, only allowing one-byte single-char search strings (and a one-byte subject string). This changes the CSA fast path to call into our internal SearchString C++ function instead (after attempting to unpack both Strings), and can handle strings of arbitrary length and encoding. The only remaining runtime call is when either string needs to be flattened. BUG= Review-Url: https://codereview.chromium.org/2814373002 Cr-Commit-Position: refs/heads/master@{#44718}
-
- 13 Apr, 2017 1 commit
-
-
jkummerow authored
Taking the slow runtime path for every non-internalized string key can be avoided by doing optimistic string table lookups: if there is a matching entry, use that; if there isn't, then no existing object has a property with that name. The hashing/internalizing logic is in C++ and called directly. Review-Url: https://codereview.chromium.org/2811333002 Cr-Commit-Position: refs/heads/master@{#44650}
-
- 04 Apr, 2017 1 commit
-
-
vchigrin authored
This removes kDeoptTableSerializeEntryCount heuristic constant. Review-Url: https://codereview.chromium.org/2790573002 Cr-Commit-Position: refs/heads/master@{#44379}
-
- 31 Mar, 2017 2 commits
-
-
Peter Marshall authored
The last CL https://chromium-review.googlesource.com/c/456707/ caused some pretty heavy performance regressions. After experimenting, it seems the easiest and most straight-forward way to copy the elements into the new typed array is to do it in JS. Adds a fast path for typed arrays, where the source typed array has the same elements kind, in which case we can just copy the backing store using memcpy. This CL also removes regression test 319120 which is from a pwn2own vulnerability. The old code path enforced a maximum byte_length that was too low, which this change removes. The length property of the typed array must be a Smi, but the byte_length, which can be up to 8x larger than length for a Float64Array, can be a heap number. We can also re-use some of the logic from ConstructByLength when deciding whether to allocate the buffer on- or off-heap, so that is factored out into InitializeBasedOnLength. We can also re-use the DoInitialize helper instead of calling into the runtime, meaning we can remove InitializeFromArrayLike. BUG=v8:5977,chromium:705503,chromium:705394 Change-Id: I63372652091d4bdf3a9491acef9b4e3ac793a755 Reviewed-on: https://chromium-review.googlesource.com/459621Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#44301}
-
jgruber authored
The dotAll flag changes behavior of the dot '.' character to match every possible single character instead of excluding certain line terminators. The implementation is staged behind --harmony-regexp-dotall. Spec proposal: https://github.com/mathiasbynens/es-regexp-dotall-flag BUG=v8:6172 Review-Url: https://codereview.chromium.org/2780173002 Cr-Commit-Position: refs/heads/master@{#44295}
-
- 07 Mar, 2017 1 commit
-
-
jkummerow authored
This requires serialized data to track the number of API-provided external references separately. And it flushes out a case of serialized data corruption (stored "length" field too large) that we didn't handle without crashing. BUG=v8:6055 Review-Url: https://codereview.chromium.org/2736923002 Cr-Commit-Position: refs/heads/master@{#43649}
-
- 02 Mar, 2017 1 commit
-
-
Peter Marshall authored
Turbofan is a lot slower than Crankshaft at constructing TypedArrays, because we always go to the C++ builtin. Port the builtin to CSA to improve performance, and to clean up the implementation, which is split across multiple files and pieces at the moment. This CL increases the performance with --future to roughly the same as with crankshaft. BUG=v8:5977 Change-Id: Id0d91a4592de41a3a308846d79bd44a608931762 Reviewed-on: https://chromium-review.googlesource.com/448537Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Commit-Queue: Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#43548}
-
- 01 Mar, 2017 2 commits
-
-
Peter Marshall authored
This reverts commit b23b2c10. Reason for revert: Makes Linux debug bot sad Original change's description: > [builtins] Port TypedArrayInitialize to CodeStubAssembler. > > Turbofan is a lot slower than Crankshaft at constructing TypedArrays, > because we always go to the C++ builtin. Port the builtin to CSA > to improve performance, and to clean up the implementation, which is > split across multiple files and pieces at the moment. > > This CL increases the performance with --future to roughly the same > as with crankshaft. > > BUG=v8:5977 > > Change-Id: I5a4c4b544a735a56290b85bf33c2f3718df7e2b8 > Reviewed-on: https://chromium-review.googlesource.com/445717 > Commit-Queue: Peter Marshall <petermarshall@chromium.org> > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Reviewed-by: Camillo Bruni <cbruni@chromium.org> > Cr-Commit-Position: refs/heads/master@{#43518} TBR=cbruni@chromium.org,petermarshall@chromium.org,bmeurer@chromium.org,v8-reviews@googlegroups.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:5977 Change-Id: I5d5bc8b4677a405c716d78e688af80ae9c737b4a Reviewed-on: https://chromium-review.googlesource.com/448558Reviewed-by:
Peter Marshall <petermarshall@chromium.org> Commit-Queue: Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#43520}
-
Peter Marshall authored
Turbofan is a lot slower than Crankshaft at constructing TypedArrays, because we always go to the C++ builtin. Port the builtin to CSA to improve performance, and to clean up the implementation, which is split across multiple files and pieces at the moment. This CL increases the performance with --future to roughly the same as with crankshaft. BUG=v8:5977 Change-Id: I5a4c4b544a735a56290b85bf33c2f3718df7e2b8 Reviewed-on: https://chromium-review.googlesource.com/445717 Commit-Queue: Peter Marshall <petermarshall@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#43518}
-
- 23 Feb, 2017 1 commit
-
-
Marja Hölttä authored
BUG=v8:5294 Change-Id: If45f25aae8de526027b7851cb4efe0ccf4a7c4b1 Reviewed-on: https://chromium-review.googlesource.com/444226 Commit-Queue: Marja Hölttä <marja@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#43388}
-
- 20 Feb, 2017 1 commit
-
-
yangguo authored
Due to link-time optimizations functions with same code can be folded into one, resulting in duplicate references. R=jochen@chromium.org, peria@chromium.org BUG=chromium:617892 Review-Url: https://codereview.chromium.org/2707903002 Cr-Commit-Position: refs/heads/master@{#43317}
-
- 27 Jan, 2017 1 commit
-
-
yangguo authored
Previously, when restarting a frame, we would rewrite all frames between the debugger activation and the frame to restart to squash them, and replace the return address with that of a builtin to leave that rewritten frame, and restart the function by calling it. We now simply remember the frame to drop to, and upon returning from the debugger, we check whether to drop the frame, load the new FP, and restart the function. R=jgruber@chromium.org, mstarzinger@chromium.org BUG=v8:5587 Review-Url: https://codereview.chromium.org/2636913002 Cr-Commit-Position: refs/heads/master@{#42725}
-
- 25 Jan, 2017 1 commit
-
-
kozyatinskiy authored
- kDebugPromiseCreated(task, parent_task) This event occurs when promise is created (PromiseHookType::Init). V8Debugger uses this event to maintain task -> parent task map. - kDebugEnqueueAsyncFunction(task) This event occurs when first internal promise for async function is created. V8Debugger collects stack trace at this point. - kDebugEnqueuePromiseResolve(task), This event occurs when Promise fulfills with resolved status. V8Debugger collects stack trace at this point. - kDebugEnqueuePromiseReject(task), This event occurs when Promise fulfills with rejected status. V8Debugger collects stack trace at this point. - kDebugPromiseCollected, This event occurs when Promise is collected and no other chained callbacks can be added. V8Debugger removes information about async task for this promise. - kDebugWillHandle, This event occurs when chained promise function (either resolve or reject handler) is called. V8Debugger installs parent promise's stack (based on task -> parent_task map) as current if available or current promise's scheduled stack otherwise. - kDebugDidHandle, This event occurs after chained promise function has finished. V8Debugger restores asynchronous call chain to previous one. With this change all instrumentation calls are related to current promise (before WillHandle and DidHandle were related to next async task). Before V8Debugger supported only the following: - asyncTaskScheduled(task1) - asyncTaskStarted(task1) - asyncTaskFinished(task1) Now V8Debugger supports the following: - asyncTaskScheduled(parent_task) .. - asyncTaskCreated(task, parent_task), - asyncTaskStarted(task), uses parent_task scheduled stack - asyncTaskScheduled(task) - asyncTaskFinished(task) Additionally: WillHandle and DidHandle were migrated to PromiseHook API. More details: https://docs.google.com/document/d/1u19N45f1gSF7M39mGsycJEK3IPyJgIXCBnWyiPeuJFE BUG=v8:5738 R=dgozman@chromium.org,gsathya@chromium.org,yangguo@chromium.org Review-Url: https://codereview.chromium.org/2650803003 Cr-Commit-Position: refs/heads/master@{#42644}
-
- 12 Jan, 2017 1 commit
-
-
yangguo authored
R=jgruber@chromium.org, mstarzinger@chromium.org BUG=v8:5821 Review-Url: https://codereview.chromium.org/2622863003 Cr-Commit-Position: refs/heads/master@{#42270}
-
- 16 Dec, 2016 2 commits
-
-
gsathya authored
This adds kInit, kResolve, kBefore and kAfter lifecycle hooks to promises. This also exposes an API to set the PromiseHook. BUG=v8:4643 Review-Url: https://codereview.chromium.org/2575313002 Cr-Commit-Position: refs/heads/master@{#41775}
-
cbruni authored
Many websites use simple calls to String.prototype.indexOf with either a one character ASCII needle or needles bigger than the search string. This CL adds a TFJ builtin for these simple cases, giving up to factor 5 speedup. Drive-by-fix: Add default Object type to Arguments.at BUG= Review-Url: https://codereview.chromium.org/2539093002 Cr-Commit-Position: refs/heads/master@{#41760}
-
- 15 Dec, 2016 1 commit
-
-
ahaas authored
Some instructions in WebAssembly trap for some inputs, which means that the execution is terminated and (at least at the moment) a JavaScript exception is thrown. Examples for traps are out-of-bounds memory accesses, or integer divisions by zero. Without the TrapIf and TrapUnless operators trap check in WebAssembly introduces 5 TurboFan nodes (branch, if_true, if_false, trap-reason constant, trap-position constant), in addition to the trap condition itself. Additionally, each WebAssembly function has four TurboFan nodes (merge, effect_phi, 2 phis) whose number of inputs is linear to the number of trap checks in the function. Especially for functions with high numbers of trap checks we observe a significant slowdown in compilation time, down to 0.22 MiB/s in the sqlite benchmark instead of the average of 3 MiB/s in other benchmarks. By introducing a TrapIf common operator only a single node is necessary per trap check, in addition to the trap condition. Also the nodes which are shared between trap checks (merge, effect_phi, 2 phis) would disappear. First measurements suggest a speedup of 30-50% on average. This CL only implements TrapIf and TrapUnless on x64. The implementation is also hidden behind the --wasm-trap-if flag. Please take a special look at how the source position is transfered from the instruction selector to the code generator, and at the context that is used for the runtime call. R=titzer@chromium.org Review-Url: https://codereview.chromium.org/2562393002 Cr-Commit-Position: refs/heads/master@{#41720}
-
- 09 Dec, 2016 1 commit
-
-
gsathya authored
This will be used in CSA to check if any promisehook is set. -- Adds a is_promisehook_enabled_ field to the isolate and helper methods. -- Adds this field to the ExternalReference table. -- Adds a helper method to access this from CSA Note -- this patch doesn't actually add the ability to attach the hook yet. BUG=v8:4643 Review-Url: https://codereview.chromium.org/2566483002 Cr-Commit-Position: refs/heads/master@{#41607}
-
- 08 Dec, 2016 1 commit
-
-
yangguo authored
R=jochen@chromium.org BUG=chromium:617892 Review-Url: https://codereview.chromium.org/2561783002 Cr-Commit-Position: refs/heads/master@{#41587}
-
- 15 Nov, 2016 3 commits
-
-
yangguo authored
R=peria@chromium.org, vogelheim@chromium.org BUG=chromium:617892 NOPRESUBMIT=true Review-Url: https://codereview.chromium.org/2495213003 Cr-Commit-Position: refs/heads/master@{#40981}
-
machenbach authored
Revert of [serializer] print use count of external references. (patchset #2 id:20001 of https://codereview.chromium.org/2495213003/ ) Reason for revert: Breaks https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20vtunejit/builds/14690 compile Original issue's description: > [serializer] print use count of external references. > > R=peria@chromium.org, vogelheim@chromium.org > BUG=chromium:617892 > NOPRESUBMIT=true TBR=peria@chromium.org,vogelheim@chromium.org,yangguo@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=chromium:617892 Review-Url: https://codereview.chromium.org/2498163003 Cr-Commit-Position: refs/heads/master@{#40980}
-
yangguo authored
R=peria@chromium.org, vogelheim@chromium.org BUG=chromium:617892 NOPRESUBMIT=true Review-Url: https://codereview.chromium.org/2495213003 Cr-Commit-Position: refs/heads/master@{#40979}
-
- 14 Nov, 2016 1 commit
-
-
yangguo authored
Changes include: - Adding V8_EXPORT macro for SnapshotCreator - Removing outdated DCHECKs. - Allow nullptr as external reference. This required a... - Refactoring of hashmaps used by the serializer. - Remove external references for counters. These are not used anywhere for isolates that are being serialized. - Put template infos into the partial snapshot cache. - Remove unnecessary presubmit check for external references. mksnapshot crashes if external references are missing. R=jochen@chromium.org, vogelheim@chromium.org BUG=chromium:617892 Review-Url: https://codereview.chromium.org/2490783004 Cr-Commit-Position: refs/heads/master@{#40949}
-
- 17 Oct, 2016 1 commit
-
-
jkummerow authored
RIP, handwritten KeyedLoadICStub, handwritten KeyedLoadIC_Megamorphic, and hydrogenized KeyedLoadGeneric! Review-Url: https://codereview.chromium.org/2424433002 Cr-Commit-Position: refs/heads/master@{#40354}
-
- 23 Sep, 2016 1 commit
-
-
ishell authored
According to new store IC calling convention the value, slot and vector are passed on the stack and there's no need in trying to preserve values or respective registers in store handlers. Nice bonus: we also don't need virtual registers anymore. BUG=v8:5407 Review-Url: https://codereview.chromium.org/2357323003 Cr-Commit-Position: refs/heads/master@{#39672}
-
- 21 Jul, 2016 1 commit
-
-
weiliang.lin authored
BUG= Review-Url: https://codereview.chromium.org/2161513002 Cr-Commit-Position: refs/heads/master@{#37937}
-
- 20 Jul, 2016 1 commit
-
-
ahaas authored
This CL more or less reverts commit https://codereview.chromium.org/2107733002/ The use of the MathPow code stub that was introduced by that commit caused problems on arm64, and the MathPow code stub was also an obstacle in the implementation of parallel code generation. In addition this CL turns on the mjsunit/wasm/embenchen tests for arm64 which were turned off because of problems with MathPow on arm64. R=titzer@chromium.org, bradnelson@chromium.org Review-Url: https://codereview.chromium.org/2166793002 Cr-Commit-Position: refs/heads/master@{#37911}
-
- 18 Jul, 2016 1 commit
-
-
yangguo authored
R=bmeurer@chromium.org BUG=v8:5197 Review-Url: https://codereview.chromium.org/2155633002 Cr-Commit-Position: refs/heads/master@{#37820}
-
- 14 Jul, 2016 1 commit
-
-
yangguo authored
Now builtins are sorted by use, not implementation. R=bmeurer@chromium.org BUG=v8:5197 Review-Url: https://codereview.chromium.org/2145413002 Cr-Commit-Position: refs/heads/master@{#37761}
-
- 13 Jul, 2016 1 commit
-
-
ishell authored
After this CL we can avoid using Code::flags in hash computations for megamorphic stub caches and therefore the unused ICState field can be finally removed from flags. BUG=chromium:618701 Review-Url: https://codereview.chromium.org/2123983004 Cr-Commit-Position: refs/heads/master@{#37708}
-
- 01 Jul, 2016 1 commit
-
-
bmeurer authored
Import fdlibm versions of acos, acosh, asin and asinh, which are more precise and produce the same result across platforms (we were using libm versions for asin and acos so far, where both speed and precision depended on the operating system so far). Introduce appropriate TurboFan operators for these functions and use them both for inlining and for the generic builtin. Also migrate the Math.imul and Math.fround builtins to TurboFan builtins to ensure that their behavior is always exactly the same as the inlined TurboFan version (i.e. C++ truncation semantics for double to float don't necessarily meet the JavaScript semantics). For completeness, also migrate Math.sign, which can even get some nice love in TurboFan. Drive-by-fix: Some alpha-sorting on the Math related functions, and cleanup the list of Math intrinsics that we have to export via the native context currently. BUG=v8:3266,v8:3496,v8:3509,v8:3952,v8:5169,v8:5170,v8:5171,v8:5172 TBR=rossberg@chromium.org R=franzih@chromium.org Review-Url: https://codereview.chromium.org/2116753002 Cr-Commit-Position: refs/heads/master@{#37476}
-
- 30 Jun, 2016 2 commits
-
-
mvstanton authored
BUG=v8:5086 Review-Url: https://codereview.chromium.org/2083573002 Cr-Commit-Position: refs/heads/master@{#37424}
-
jgruber authored
Prior to this commit, calls to C++ builtins created standard exit frames, which are skipped when constructing JS stack traces. In order to show these calls on traces, we introduce a new builtin exit frame type. Builtin exit frames contain target and new.target on the stack and are not skipped during stack trace construction. BUG=v8:4815 R=bmeurer@chromium.org, yangguo@chromium.org CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel;tryserver.v8:v8_linux_nosnap_dbg Committed: https://crrev.com/3c60c6b105f39344f93a8407f41534e5e60cf19a Review-Url: https://codereview.chromium.org/2090723005 Cr-Original-Commit-Position: refs/heads/master@{#37384} Cr-Commit-Position: refs/heads/master@{#37416}
-
- 29 Jun, 2016 3 commits
-
-
bmeurer authored
Revert of [builtins] New frame type for exits to C++ builtins (patchset #5 id:80001 of https://codereview.chromium.org/2090723005/ ) Reason for revert: Looks like this breaks on nosnap: http://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap%20-%20debug/builds/7626 Original issue's description: > [builtins] New frame type for exits to C++ builtins > > Prior to this commit, calls to C++ builtins created standard exit > frames, which are skipped when constructing JS stack traces. In order to > show these calls on traces, we introduce a new builtin exit frame type. > > Builtin exit frames contain target and new.target on the stack and are > not skipped during stack trace construction. > > BUG=v8:4815 > R=bmeurer@chromium.org, yangguo@chromium.org > CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel > > Committed: https://crrev.com/3c60c6b105f39344f93a8407f41534e5e60cf19a > Cr-Commit-Position: refs/heads/master@{#37384} TBR=yangguo@chromium.org,jgruber@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4815 Review-Url: https://codereview.chromium.org/2106113002 Cr-Commit-Position: refs/heads/master@{#37394}
-
jgruber authored
Prior to this commit, calls to C++ builtins created standard exit frames, which are skipped when constructing JS stack traces. In order to show these calls on traces, we introduce a new builtin exit frame type. Builtin exit frames contain target and new.target on the stack and are not skipped during stack trace construction. BUG=v8:4815 R=bmeurer@chromium.org, yangguo@chromium.org CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel Review-Url: https://codereview.chromium.org/2090723005 Cr-Commit-Position: refs/heads/master@{#37384}
-
ahaas authored
R=bmeurer@chromium.org BUG=v8:5086,v8:5157 Review-Url: https://codereview.chromium.org/2107733002 Cr-Commit-Position: refs/heads/master@{#37375}
-
- 28 Jun, 2016 1 commit
-
-
bmeurer authored
Introduce a new machine operator Float64Pow that for now is backed by the existing MathPowStub to start the unification of Math.pow, and at the same time address the main performance issue that TurboFan still has with the imaging-darkroom benchmark in Kraken. Also migrate the Math.pow builtin itself to a TurboFan builtin and remove a few hundred lines of hand-written platform code for special handling of the fullcodegen Math.pow version. BUG=v8:3599,v8:5086,v8:5157 Review-Url: https://codereview.chromium.org/2103733003 Cr-Commit-Position: refs/heads/master@{#37323}
-
- 20 Jun, 2016 1 commit
-
-
yangguo authored
R=jochen@chromium.org, vogelheim@chromium.org BUG=chromium:617892 Review-Url: https://codereview.chromium.org/2066993004 Cr-Commit-Position: refs/heads/master@{#37109}
-