- 28 Jan, 2016 1 commit
-
-
mstarzinger authored
This adds debug code to the interpreter entry trampoline to ensure that the called bytecode handler will never return, but instead tear down the frame with a proper exit trampoline eventually. R=rmcilroy@chromium.org Review URL: https://codereview.chromium.org/1642063002 Cr-Commit-Position: refs/heads/master@{#33585}
-
- 22 Jan, 2016 1 commit
-
-
bmeurer authored
R=jarin@chromium.org BUG=v8:3650 LOG=n Review URL: https://codereview.chromium.org/1621583002 Cr-Commit-Position: refs/heads/master@{#33453}
-
- 19 Jan, 2016 1 commit
-
-
nikolaos authored
After 1564083002, spread expressions are desugared and should not survive in the AST after parsing. This patch removes dead code related to this. It also eliminates the kSpread bailout reason and the concat_iterable_to_array_builtin. R=bmeurer@chromium.org BUG= Review URL: https://codereview.chromium.org/1592713002 Cr-Commit-Position: refs/heads/master@{#33385}
-
- 27 Dec, 2015 2 commits
-
-
bmeurer authored
According to the ES2015 specification, bound functions are exotic objects, and thus don't need to be implemented as JSFunctions. So we introduce a new JSBoundFunction type to represent bound functions and make them optimizable. This already improves the performance of calling or constructing bound functions by 10-100x depending on the use case because we avoid the crazy dance between JavaScript and C++ that was implemented in v8natives.js previously. There's still room for improvement in the performance of actually creating bound functions, which is also relevant in practice, but we already have a plan how to accomplish that later. The mips/mips64 ports were contributed by akos.palfi@imgtec.com. CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel BUG=chromium:535408, chromium:571299, v8:4629 LOG=n Committed: https://crrev.com/ca8623eaa468cba65a5adafcdfb4615966f43ce2 Cr-Commit-Position: refs/heads/master@{#33042} Review URL: https://codereview.chromium.org/1542963002 Cr-Commit-Position: refs/heads/master@{#33044}
-
bmeurer authored
Revert of [runtime] Introduce dedicated JSBoundFunction to represent bound functions. (patchset #14 id:260001 of https://codereview.chromium.org/1542963002/ ) Reason for revert: Breaks arm64 sim nosnap: https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20nosnap%20-%20debug/builds/805/steps/Check/logs/function-bind Original issue's description: > [runtime] Introduce dedicated JSBoundFunction to represent bound functions. > > According to the ES2015 specification, bound functions are exotic > objects, and thus don't need to be implemented as JSFunctions. So > we introduce a new JSBoundFunction type to represent bound functions > and make them optimizable. This already improves the performance of > calling or constructing bound functions by 10-100x depending on the > use case because we avoid the crazy dance between JavaScript and C++ > that was implemented in v8natives.js previously. > > There's still room for improvement in the performance of actually > creating bound functions, which is also relevant in practice, but > we already have a plan how to accomplish that later. > > The mips/mips64 ports were contributed by akos.palfi@imgtec.com. > > CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel > BUG=chromium:535408, chromium:571299, v8:4629 > LOG=n > > Committed: https://crrev.com/ca8623eaa468cba65a5adafcdfb4615966f43ce2 > Cr-Commit-Position: refs/heads/master@{#33042} TBR=cbruni@chromium.org,hpayer@chromium.org,yangguo@chromium.org,akos.palfi@imgtec.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=chromium:535408, chromium:571299, v8:4629 Review URL: https://codereview.chromium.org/1552473002 Cr-Commit-Position: refs/heads/master@{#33043}
-
- 26 Dec, 2015 1 commit
-
-
bmeurer authored
According to the ES2015 specification, bound functions are exotic objects, and thus don't need to be implemented as JSFunctions. So we introduce a new JSBoundFunction type to represent bound functions and make them optimizable. This already improves the performance of calling or constructing bound functions by 10-100x depending on the use case because we avoid the crazy dance between JavaScript and C++ that was implemented in v8natives.js previously. There's still room for improvement in the performance of actually creating bound functions, which is also relevant in practice, but we already have a plan how to accomplish that later. The mips/mips64 ports were contributed by akos.palfi@imgtec.com. CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel BUG=chromium:535408, chromium:571299, v8:4629 LOG=n Review URL: https://codereview.chromium.org/1542963002 Cr-Commit-Position: refs/heads/master@{#33042}
-
- 23 Dec, 2015 1 commit
-
-
mvstanton authored
We'll be able to optimize rest parameters in TurboFan similarly to the arguments array. This CL restores the previous behavior, and a follow-on will enable TurboFan optimization. (TBR for rossberg since we discussed the revert beforehand. The only changes are a few lines related to tests and rebasing.) TBR=rossberg@chromium.org BUG= Review URL: https://codereview.chromium.org/1537683002 Cr-Commit-Position: refs/heads/master@{#33024}
-
- 07 Dec, 2015 1 commit
-
-
caitpotter88 authored
BUG=v8:811 LOG=N R=adamk@chromium.org Review URL: https://codereview.chromium.org/1504553003 Cr-Commit-Position: refs/heads/master@{#32663}
-
- 04 Dec, 2015 1 commit
-
-
caitpotter88 authored
Attempt #<really big number> Parses, and lazily rewrites Destructuring Assignment expressions. The rewriting strategy involves inserting a placeholder RewritableAssignmentExpression into the AST, whose content expression can be completely rewritten at a later time. Lazy rewriting ensures that errors do not occur due to eagerly rewriting nodes which form part of a binding pattern, thus breaking the meaning of the pattern --- or by eagerly rewriting ambiguous constructs that are not immediately known BUG=v8:811 LOG=Y R=adamk@chromium.org, bmeurer@chromium.org, rossberg@chromium.org Review URL: https://codereview.chromium.org/1309813007 Cr-Commit-Position: refs/heads/master@{#32623}
-
- 01 Dec, 2015 1 commit
-
-
jkummerow authored
The fix is to bail out of compilation in that case. BUG=chromium:551287 LOG=n R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1483373002 Cr-Commit-Position: refs/heads/master@{#32454}
-
- 05 Nov, 2015 1 commit
-
-
verwaest authored
Depends on https://codereview.chromium.org/1407373007/ After that CL, all receiver conversion is handled by the call builtin. BUG= Review URL: https://codereview.chromium.org/1414883011 Cr-Commit-Position: refs/heads/master@{#31826}
-
- 21 Oct, 2015 1 commit
-
-
caitpotter88 authored
Adds an implementation of "do expression" parsing (https://webcache.googleusercontent.com/search?q=cache:MIGALjqPDNgJ:wiki.ecmascript.org/doku.php%3Fid%3Dstrawman:do_expressions+&cd=1&hl=en&ct=clnk&gl=us). This feature provides a way to evaluate a block of statements within an expression context, producing the resulting completion value. This is very helpful for implementing certain language features via desugaring. BUG=v8:4488 LOG=N R=adamk@chromium.org, bmeurer@chromium.org, rossberg@chromium.org, wingo@igalia.com Review URL: https://codereview.chromium.org/1399893002 Cr-Commit-Position: refs/heads/master@{#31428}
-
- 19 Oct, 2015 1 commit
-
-
rmcilroy authored
Adds support for throwing exceptions. Adds the bytecode Throw. BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1410863002 Cr-Commit-Position: refs/heads/master@{#31366}
-
- 07 Oct, 2015 1 commit
-
-
mstarzinger authored
This removes stale strings from the bailout-reason.h file that are no longer being used and hence only eat up space in the binary. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1391973002 Cr-Commit-Position: refs/heads/master@{#31161}
-
- 02 Oct, 2015 3 commits
-
-
rmcilroy authored
Adds support for calling runtime functions from the interpreter. Adds the CallRuntime bytecode which takes a Runtime::FunctionId of the function to call and the arguments in sequential registers. Adds a InterpreterCEntry builtin to enable the interpreter to enter C++ code based on the functionId. Also renames Builtin::PushArgsAndCall to Builtin::InterpreterPushArgsAndCall and groups all the interpreter builtins together. BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1362383002 Cr-Commit-Position: refs/heads/master@{#31089}
-
rmcilroy authored
Revert of [Interpreter] Add CallRuntime support to the interpreter. (patchset #8 id:220001 of https://codereview.chromium.org/1362383002/ ) Reason for revert: Now breaking arm32 debug bot (worked locally even with --debug-code, so I'll need to figure out what's different on the bot) Original issue's description: > [Interpreter] Add CallRuntime support to the interpreter. > > Adds support for calling runtime functions from the interpreter. Adds the > CallRuntime bytecode which takes a Runtime::FunctionId of the function to call > and the arguments in sequential registers. Adds a InterpreterCEntry builtin > to enable the interpreter to enter C++ code based on the functionId. > > Also renames Builtin::PushArgsAndCall to Builtin::InterpreterPushArgsAndCall > and groups all the interpreter builtins together. > > BUG=v8:4280 > LOG=N > TBR=bmeurer@chromium.org,oth@chromium.org,mstarzinger@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4280 Review URL: https://codereview.chromium.org/1379933003 Cr-Commit-Position: refs/heads/master@{#31078}
-
rmcilroy authored
Adds support for calling runtime functions from the interpreter. Adds the CallRuntime bytecode which takes a Runtime::FunctionId of the function to call and the arguments in sequential registers. Adds a InterpreterCEntry builtin to enable the interpreter to enter C++ code based on the functionId. Also renames Builtin::PushArgsAndCall to Builtin::InterpreterPushArgsAndCall and groups all the interpreter builtins together. BUG=v8:4280 LOG=N Committed: https://crrev.com/40e8424b744f8b6e3e1d93e20f23487419911dfc Cr-Commit-Position: refs/heads/master@{#31064} Review URL: https://codereview.chromium.org/1362383002 Cr-Commit-Position: refs/heads/master@{#31076}
-
- 08 Sep, 2015 3 commits
-
-
bmeurer authored
The new Call and CallFunction builtins supersede the current CallFunctionStub (and CallIC magic) and will be the single bottleneck for all calling, including the currently special Function.prototype.call and Function.prototype.apply builtins, which had handwritten (and not fully compliant) versions of CallFunctionStub, and also the CallIC(s), which where also slightly different. This also reduces the overhead for API function calls, which is still unnecessary high, but let's do that step-by-step. This also fixes a bunch of cases where the implicit ToObject for sloppy receivers was done in the wrong context (in the caller context instead of the callee context), which basically meant that we allowed cross context access to %ObjectPrototype%. MIPS and MIPS64 ports contributed by akos.palfi@imgtec.com. R=mstarzinger@chromium.org, jarin@chromium.org, mvstanton@chromium.org CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_layout_dbg,v8_linux_nosnap_dbg BUG=v8:4413 LOG=n Committed: https://crrev.com/ef268a83be4dead004047c25b702319ea4be7277 Cr-Commit-Position: refs/heads/master@{#30627} Review URL: https://codereview.chromium.org/1311013008 Cr-Commit-Position: refs/heads/master@{#30629}
-
bmeurer authored
Revert of [builtins] Unify the various versions of [[Call]] with a Call builtin. (patchset #10 id:260001 of https://codereview.chromium.org/1311013008/ ) Reason for revert: Breaks nosnap, needs investigation Original issue's description: > [builtins] Unify the various versions of [[Call]] with a Call builtin. > > The new Call and CallFunction builtins supersede the current > CallFunctionStub (and CallIC magic) and will be the single bottleneck > for all calling, including the currently special Function.prototype.call > and Function.prototype.apply builtins, which had handwritten (and > not fully compliant) versions of CallFunctionStub, and also the > CallIC(s), which where also slightly different. > > This also reduces the overhead for API function calls, which is still > unnecessary high, but let's do that step-by-step. > > This also fixes a bunch of cases where the implicit ToObject for > sloppy receivers was done in the wrong context (in the caller > context instead of the callee context), which basically meant > that we allowed cross context access to %ObjectPrototype%. > > MIPS and MIPS64 ports contributed by akos.palfi@imgtec.com. > > R=mstarzinger@chromium.org, jarin@chromium.org, mvstanton@chromium.org > CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_layout_dbg > BUG=v8:4413 > LOG=n > > Committed: https://crrev.com/ef268a83be4dead004047c25b702319ea4be7277 > Cr-Commit-Position: refs/heads/master@{#30627} TBR=rmcilroy@chromium.org,jarin@chromium.org,mstarzinger@chromium.org,mvstanton@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4413 Review URL: https://codereview.chromium.org/1328963004 Cr-Commit-Position: refs/heads/master@{#30628}
-
bmeurer authored
The new Call and CallFunction builtins supersede the current CallFunctionStub (and CallIC magic) and will be the single bottleneck for all calling, including the currently special Function.prototype.call and Function.prototype.apply builtins, which had handwritten (and not fully compliant) versions of CallFunctionStub, and also the CallIC(s), which where also slightly different. This also reduces the overhead for API function calls, which is still unnecessary high, but let's do that step-by-step. This also fixes a bunch of cases where the implicit ToObject for sloppy receivers was done in the wrong context (in the caller context instead of the callee context), which basically meant that we allowed cross context access to %ObjectPrototype%. MIPS and MIPS64 ports contributed by akos.palfi@imgtec.com. R=mstarzinger@chromium.org, jarin@chromium.org, mvstanton@chromium.org CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_layout_dbg BUG=v8:4413 LOG=n Review URL: https://codereview.chromium.org/1311013008 Cr-Commit-Position: refs/heads/master@{#30627}
-
- 02 Sep, 2015 1 commit
-
-
caitpotter88 authored
Kills the kRestParameter bailout/disabled optimization, and fixes lazily parsed arrow functions with rest parameters. Supercedes https://crrev.com/1235153006/ BUG=chromium:508074, v8:2160, v8:2700 LOG=N R=rossberg@chromium.org, adamk@chromium.org, wingo@igalia.com Review URL: https://codereview.chromium.org/1272673003 Cr-Commit-Position: refs/heads/master@{#30550}
-
- 25 Aug, 2015 1 commit
-
-
bmeurer authored
The previous hack with HInstanceOfKnownGlobal was not only slower, but also very brittle and required a lot of weird hacks to support it. And what's even more important it wasn't even correct (because a map check on the lhs is never enough for instanceof). The new implementation provides a sane runtime implementation for InstanceOf plus a fast case in the InstanceOfStub, combined with a proper specialization in the case of a known global in CrankShaft, which does only the prototype chain walk (coupled with a code dependency on the known global). As a drive-by-fix: Also fix the incorrect Object.prototype.isPrototypeOf implementation. BUG=v8:4376 LOG=y Review URL: https://codereview.chromium.org/1304633002 Cr-Commit-Position: refs/heads/master@{#30342}
-
- 03 Aug, 2015 1 commit
-
-
yangguo authored
There is only one use case for it: String.prototype.search converts a string argument into a RegExp. The cache is used to avoid repeating that conversion. However, this does not make the added complexity worthwhile. Review URL: https://codereview.chromium.org/1267493006 Cr-Commit-Position: refs/heads/master@{#29985}
-
- 30 Jul, 2015 1 commit
-
-
rmcilroy authored
Adds interpreter entry and exit trampoline builtins. Also implements the Return bytecode handler and fixes a few bugs in InterpreterAssembler highlighted by running on other architectures. MIPS and MIPS64 port contributed by Paul Lind (paul.lind@imgtec.com) BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1245133002 Cr-Commit-Position: refs/heads/master@{#29929}
-
- 20 Jul, 2015 1 commit
-
-
yangguo authored
Prior to this patch, we enter a global debug mode whenever a break point is set. By entering this mode, all code is deoptimized and activated frames are recompiled and redirected to newly compiled debug code. After this patch, we only deoptimize/redirect for functions we want to debug. Trigger for this is Debug::EnsureDebugInfo, and having DebugInfo object attached to the SFI prevents optimization/inlining. The result is that we can have optimized code for functions without break points alongside functions that do have break points, which are not optimized. R=mstarzinger@chromium.org, ulan@chromium.org BUG=v8:4132 LOG=Y Review URL: https://codereview.chromium.org/1233073005 Cr-Commit-Position: refs/heads/master@{#29758}
-
- 13 Jul, 2015 2 commits
-
-
mstarzinger authored
This also adds a script to the tools directory that allows to grep for unused bailout reasons. For now the script needs to be run manually. R=mvstanton@chromium.org Review URL: https://codereview.chromium.org/1237623003 Cr-Commit-Position: refs/heads/master@{#29609}
-
mstarzinger authored
Note that there are currently no objects that require a pre-allocated properties backing store, all such slots are in-object properties from the begining. Hence {unused + pre_allocated - inobject == 0} holds. R=verwaest@chromium.org Review URL: https://codereview.chromium.org/1226203011 Cr-Commit-Position: refs/heads/master@{#29590}
-
- 03 Jun, 2015 1 commit
-
-
bmeurer authored
Previously the %_DateField intrinsic would also check the object and throw an exception if you happen to pass something that is not a valid JSDate, which (a) violates our policy for instrinsics and (b) is hard to optimize in TurboFan (even Crankshaft has a hard time, but there we will never inline the relevant builtins, so it doesn't show up). The throwing part is now a separate intrinsics %_ThrowIfNotADate that throws an exception in full codegen and deoptimizes in Crankshaft, which means the code for the current use cases is roughly the same (modulo some register renamings/gap moves). R=jkummerow@chromium.org Review URL: https://codereview.chromium.org/1167813003 Cr-Commit-Position: refs/heads/master@{#28782}
-
- 21 May, 2015 1 commit
-
-
arv authored
This allows you to put iterables into your array literals and the will get spread into the array. let x = [0, ...range(1, 3)]; // [0, 1, 2] This is done by treating the array literal up to the first spread element as usual, including using a boiler plate array, and then appending the remaining expressions and rest expressions. BUG=v8:3018 LOG=N Review URL: https://codereview.chromium.org/1125183008 Cr-Commit-Position: refs/heads/master@{#28534}
-
- 30 Apr, 2015 1 commit
-
-
adamk authored
BUG=v8:1569 LOG=n Review URL: https://codereview.chromium.org/1106383008 Cr-Commit-Position: refs/heads/master@{#28179}
-
- 27 Apr, 2015 1 commit
-
-
titzer authored
R=mstarzinger@chromium.org BUG= Review URL: https://codereview.chromium.org/1105133002 Cr-Commit-Position: refs/heads/master@{#28083}
-
- 16 Apr, 2015 1 commit
-
-
verwaest authored
BUG=chromium:476592 LOG=n Review URL: https://codereview.chromium.org/1086333002 Cr-Commit-Position: refs/heads/master@{#27898}
-
- 15 Apr, 2015 1 commit
-
-
adamk authored
This reverts commit 8c98cc07 because it causes flaky failures in the dromaeo.jslibeventprototype benchmark on Linux/Windows and consistent failures on Android. Also reverts the followup "Remove kForInStatementIsNotFastCase bailout reason" (commit ba24e676) to avoid breaking the build. BUG=chromium:476592 TBR=verwaest@chromium.org LOG=y Review URL: https://codereview.chromium.org/1066663005 Cr-Commit-Position: refs/heads/master@{#27859}
-
- 13 Apr, 2015 1 commit
-
-
verwaest authored
BUG= Review URL: https://codereview.chromium.org/1081803002 Cr-Commit-Position: refs/heads/master@{#27783}
-
- 07 Apr, 2015 1 commit
-
-
mstarzinger authored
This enables eager optimization of top-level code with TurboFan and extends test coverage by triggering it with the --always-opt flag. Script contexts are now also properly allocated in TurboFan. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1053063003 Cr-Commit-Position: refs/heads/master@{#27633}
-
- 11 Mar, 2015 1 commit
-
-
svenpanne authored
This recovers the performance loss for some ancient benchmarks. Added some comments/UNIMPLEMENTED on the way. BUG=v8:3947 LOG=n Review URL: https://codereview.chromium.org/996153002 Cr-Commit-Position: refs/heads/master@{#27131}
-
- 10 Mar, 2015 1 commit
-
-
svenpanne authored
Doing a runtime call should always be better than totally giving up (unless we have fullcode-only intrinsics, which we'll probably never have). BUG=v8:3947 LOG=n Review URL: https://codereview.chromium.org/997543002 Cr-Commit-Position: refs/heads/master@{#27110}
-
- 27 Feb, 2015 1 commit
-
-
bmeurer authored
Review URL: https://codereview.chromium.org/926553004 Cr-Commit-Position: refs/heads/master@{#26907}
-
- 14 Feb, 2015 1 commit
-
-
caitpotter88 authored
LOG=Y BUG=v8:2159 R=dslomov@chromium.org, arv@chromium.org, marja@chromium.org Review URL: https://codereview.chromium.org/816913003 Cr-Commit-Position: refs/heads/master@{#26645}
-
- 29 Jan, 2015 1 commit
-
-
titzer authored
R=jarin@chromium.org BUG= Review URL: https://codereview.chromium.org/877553007 Cr-Commit-Position: refs/heads/master@{#26318}
-