- 18 Oct, 2016 1 commit
-
-
caitp authored
Implements the variations of CreateArrayIterator() in TFJ builtins (ArrayPrototypeValues, ArrayPrototypeEntries and ArrayPrototypeKeys), and provides two new Object types with numerous maps which identify certain behaviours, which will be useful for inlining. Removes src/js/array-iterator.js entirely Also adds support for printing Symbol literals inserted by the Parser during desugaring when FLAG_print_builtin_ast is set to true. BUG=v8:5388 R=bmeurer@chromium.org, cbruni@chromium.org TBR=ulan@chromium.org Review-Url: https://codereview.chromium.org/2405253006 Cr-Commit-Position: refs/heads/master@{#40373}
-
- 14 Oct, 2016 1 commit
-
-
jgruber authored
Now that all accesses to the last match info are in C++ and TF code, we can finally turn the last match info into a FixedArray. Similar to the ArrayList, it uses its first field to store its length and grows dynamically in amortized O(1) time. Unlike previously, this means that the last match info pointer stored on the context can actually change (in case the FixedArray needs to grow). BUG=v8:5339 Review-Url: https://codereview.chromium.org/2415103002 Cr-Commit-Position: refs/heads/master@{#40308}
-
- 13 Oct, 2016 4 commits
-
-
rossberg authored
R=ahaas@chromium.org, titzer@chromium.org BUG=v8:5507 Review-Url: https://codereview.chromium.org/2421453002 Cr-Commit-Position: refs/heads/master@{#40280}
-
jgruber authored
This ports RegExpInitialize, IsRegExp, InternalMatch and InternalReplace to C++ / TurboFan. InternalMatch is in TurboFan because it calls RegExpExecStub and needs to construct a RegExpResult (which are, respectively, a PlatformStub and a CodeStubAssembler function). Except for LastMatchInfo (and GetSubstitution, which could be moved to string.js anytime), regexp.js is now completely empty. BUG=v8:5339 Review-Url: https://codereview.chromium.org/2409513003 Cr-Commit-Position: refs/heads/master@{#40277}
-
neis authored
As part of this, introduce a new JSObject for iterating over the elements of a FixedArray. R=adamk@chromium.org,bmeurer@chromium.org TBR=ulan@chromium.org BUG=v8:1569 Review-Url: https://codereview.chromium.org/2407423002 Cr-Commit-Position: refs/heads/master@{#40265}
-
jgruber authored
This moves the implementation of @@replace from regexp.js to builtins-regexp.cc (the TurboFan fast path) and runtime-regexp.cc (slow path). The fast path handles all cases in which the regexp itself is an unmodified JSRegExp instance, the given 'replace' argument is not callable and does not contain any '$' characters (i.e. we are doing a string replacement). BUG=v8:5339 Review-Url: https://codereview.chromium.org/2398423002 Cr-Commit-Position: refs/heads/master@{#40253}
-
- 12 Oct, 2016 1 commit
-
-
gsathya authored
This patch results in a 11% improvement over 5 runs in the bluebird benchmark. BUG=v8:5343,v8:5046 TBR=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/2406343002 Cr-Commit-Position: refs/heads/master@{#40239}
-
- 11 Oct, 2016 1 commit
-
-
yangguo authored
R=bmeurer@chromium.org BUG=v8:5049, v8:5086 Review-Url: https://codereview.chromium.org/2402363002 Cr-Commit-Position: refs/heads/master@{#40149}
-
- 10 Oct, 2016 1 commit
-
-
jgruber authored
This CL ports RegExp.prototype.test, RegExp.prototype.match and RegExp.prototype.search to C++. Performance regressions are expected but should be improved in an upcoming CL. BUG=v8:5339 Review-Url: https://codereview.chromium.org/2394713003 Cr-Commit-Position: refs/heads/master@{#40122}
-
- 07 Oct, 2016 1 commit
-
-
neis authored
This implements namespace imports (import * as foo from "bar"), except for the @@iterator property on namespace objects (to be done later). R=adamk@chromium.org BUG=v8:1569 Review-Url: https://codereview.chromium.org/2388153003 Cr-Commit-Position: refs/heads/master@{#40096}
-
- 30 Sep, 2016 3 commits
-
-
neis authored
Before evaluating a module, all variables declared at the top-level in _any_ of the modules in the dependency graph must be initialized. This is observable because a module A can access a variable imported from module B (e.g. a function) at a point when module B's body hasn't been evaluated yet. We achieve this by implementing modules internally as generators with two states (not initialized, initialized). R=adamk@chromium.org BUG=v8:1569 CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_win_dbg Committed: https://crrev.com/f4dfb6fbe1cdd9a0f287a1a9c496e1f69f6f5d20 Committed: https://crrev.com/8c52a411583e870bd5ed100864caa58f491c5d88 Review-Url: https://codereview.chromium.org/2375793002 Cr-Original-Original-Commit-Position: refs/heads/master@{#39871} Cr-Original-Commit-Position: refs/heads/master@{#39892} Cr-Commit-Position: refs/heads/master@{#39900}
-
jgruber authored
This ports RegExp.prototype.exec to a TurboFan builtin. LastMatchInfo is now stored on the context in order to be able to access it from the stub. Unmodified RegExp instances go through a fast path of accessing the lastIndex property as an in-object field, while modified instances call into runtime for lastIndex loads and stores. Octane/regexp shows slight improvements (between 0 and 5%) with this CL. BUG=v8:5339 Review-Url: https://codereview.chromium.org/2375953002 Cr-Commit-Position: refs/heads/master@{#39899}
-
bmeurer authored
Revert of Reland: [modules] Properly initialize declared variables. (patchset #6 id:100001 of https://codereview.chromium.org/2375793002/ ) Reason for revert: Speculative revert for christmas tree Original issue's description: > Reland: [modules] Properly initialize declared variables. > > Before evaluating a module, all variables declared at the top-level > in _any_ of the modules in the dependency graph must be initialized. > This is observable because a module A can access a variable imported > from module B (e.g. a function) at a point when module B's body hasn't > been evaluated yet. > > We achieve this by implementing modules internally as generators with > two states (not initialized, initialized). > > R=adamk@chromium.org > BUG=v8:1569 > CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_win_dbg > > Committed: https://crrev.com/f4dfb6fbe1cdd9a0f287a1a9c496e1f69f6f5d20 > Committed: https://crrev.com/8c52a411583e870bd5ed100864caa58f491c5d88 > Cr-Original-Commit-Position: refs/heads/master@{#39871} > Cr-Commit-Position: refs/heads/master@{#39892} TBR=adamk@chromium.org,mstarzinger@chromium.org,machenbach@chromium.org,neis@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:1569 Review-Url: https://codereview.chromium.org/2387593002 Cr-Commit-Position: refs/heads/master@{#39896}
-
- 29 Sep, 2016 3 commits
-
-
neis authored
Before evaluating a module, all variables declared at the top-level in _any_ of the modules in the dependency graph must be initialized. This is observable because a module A can access a variable imported from module B (e.g. a function) at a point when module B's body hasn't been evaluated yet. We achieve this by implementing modules internally as generators with two states (not initialized, initialized). R=adamk@chromium.org BUG=v8:1569 CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_win_dbg Committed: https://crrev.com/f4dfb6fbe1cdd9a0f287a1a9c496e1f69f6f5d20 Review-Url: https://codereview.chromium.org/2375793002 Cr-Original-Commit-Position: refs/heads/master@{#39871} Cr-Commit-Position: refs/heads/master@{#39892}
-
machenbach authored
Revert of [modules] Properly initialize declared variables. (patchset #5 id:80001 of https://codereview.chromium.org/2375793002/ ) Reason for revert: Suspect for causing win64 debug problems: https://build.chromium.org/p/client.v8/builders/V8%20Win64%20-%20debug/builds/12646 Original issue's description: > [modules] Properly initialize declared variables. > > Before evaluating a module, all variables declared at the top-level > in _any_ of the modules in the dependency graph must be initialized. > This is observable because a module A can access a variable imported > from module B (e.g. a function) at a point when module B's body hasn't > been evaluated yet. > > We achieve this by implementing modules internally as generators with > two states (not initialized, initialized). > > R=adamk@chromium.org > BUG=v8:1569 > > Committed: https://crrev.com/f4dfb6fbe1cdd9a0f287a1a9c496e1f69f6f5d20 > Cr-Commit-Position: refs/heads/master@{#39871} TBR=adamk@chromium.org,mstarzinger@chromium.org,neis@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:1569 Review-Url: https://codereview.chromium.org/2379063002 Cr-Commit-Position: refs/heads/master@{#39873}
-
neis authored
Before evaluating a module, all variables declared at the top-level in _any_ of the modules in the dependency graph must be initialized. This is observable because a module A can access a variable imported from module B (e.g. a function) at a point when module B's body hasn't been evaluated yet. We achieve this by implementing modules internally as generators with two states (not initialized, initialized). R=adamk@chromium.org BUG=v8:1569 Review-Url: https://codereview.chromium.org/2375793002 Cr-Commit-Position: refs/heads/master@{#39871}
-
- 26 Sep, 2016 1 commit
-
-
jgruber authored
V8 is collecting a growing amount of fuzzers, all of which take substantial space on the bots and in chromium build archives. This CL improves that situation by allowing component (shared library) builds for almost all fuzzers. The parser fuzzer is handled as an exception since it would require exporting a large number of additional functions. A component build results in about a 50-100x improvement in file size for each fuzzer (~50M-100M to around 1.1M). BUG=chromium:648864 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_chromium_compile_dbg_ng;master.tryserver.chromium.android:android_clang_dbg_recipe Review-Url: https://codereview.chromium.org/2360983002 Cr-Commit-Position: refs/heads/master@{#39709}
-
- 23 Sep, 2016 1 commit
-
-
littledan authored
This patch tracks the stack of async functions differently from other Promise async stack tracking. With this patch, the stack trace of a callstack of async functions should look similarly to the call stack if all of the functions were synchronous. An example can be found in the updated test expectations: https://codereview.chromium.org/2362923002 . The new stack traces are implemented using existing mechanisms in the inspector. The inspector has two ways to save async stack traces: recurring and non-recurring stacks. An example of a non-recurring stack is setTimeout, and a recurring one is saved for setInterval. Recurring stacks are deleted only when a special "cancel" function is called, rather than being deleted after being used the first time. Previous Promise async stack tracking always used non-recurring stacks. For async functions, this patch saves a recurring stack. The top frame of the stack is duplicated, as the resuming function contains a similar frame; the devtools frontend is responsible for removing or marking this frame, which it can do based on seeing the [async function] line which follows it. The second frame will instead be provided by the resuming execution context. The recurring stack is saved when the async function is entered, and it is deleted from a finally block. The id of the stack is saved in the outer Promise being constructed by the async function. When an intermediate throwaway Promise will be triggered as a reaction, it will be identified as such based on its debugging metadata, and the corresponding async function's recurring stack will be used. BUG=v8:4483 Review-Url: https://codereview.chromium.org/2357423002 Cr-Commit-Position: refs/heads/master@{#39695}
-
- 21 Sep, 2016 2 commits
-
-
caitp authored
BUG=v8:5388 R=bmeurer@chromium.org, adamk@chromium.org TBR=hpayer@chromium.org Review-Url: https://codereview.chromium.org/2348493003 Cr-Commit-Position: refs/heads/master@{#39598}
-
ahaas authored
Set up Wasm Table and Memory constructors This only provides skeletons so far: the constructors work, but the types are not wired up with the import/export mechanism yet; methods are still nops. Also, fix errors generated from Wasm to be proper Error/TypeError instances instead of just strings. I took over this CL from rossberg@chromium.org. The original CL is https://codereview.chromium.org/2342623002 R=titzer@chromium.org, rossberg@chromium.org Review-Url: https://codereview.chromium.org/2350643003 Cr-Commit-Position: refs/heads/master@{#39588}
-
- 16 Sep, 2016 1 commit
-
-
neis authored
Rename JSModule to Module and make it a Struct rather than a JSObject. We will later add a separate JSModuleNamespace object to implement the 'import * as foo' syntax. BUG=v8:1569 Review-Url: https://codereview.chromium.org/2345823002 Cr-Commit-Position: refs/heads/master@{#39477}
-
- 13 Sep, 2016 1 commit
-
-
littledan authored
Handle some examples of the "asynchronous case" by marking await expressions as either caught or uncaught; in the caught case, this marks the Promise passed in as having a catch predicted. The marking is done in AST numbering, which chooses between two different runtime function calls based on catch prediction. BUG=v8:5167 Review-Url: https://codereview.chromium.org/2276243002 Cr-Commit-Position: refs/heads/master@{#39394}
-
- 12 Sep, 2016 4 commits
-
-
neis authored
This adds partial support of exports to the runtime system and to the interpreter. It introduces a new HeapObject JSModule that maps each of the module's export names to a Cell containing the exported value. Several aspects of this implementation are subject to change in follow-up CLs. BUG=v8:1569 Committed: https://crrev.com/241a0412eed919395a2e163b30b9b66071ce5c17 Review-Url: https://codereview.chromium.org/2302783002 Cr-Original-Commit-Position: refs/heads/master@{#39341} Cr-Commit-Position: refs/heads/master@{#39352}
-
rmcilroy authored
Rework Runtime::FunctionForName to take a c-string instead of a v8::String so that the parser can parse native syntax runtime calls without doing on-the-fly internalization. Also adds a c-string variant of IntrinsicIndexForName for the same reasons. BUG=v8:5215,chromium:634953 Review-Url: https://codereview.chromium.org/2324803002 Cr-Commit-Position: refs/heads/master@{#39346}
-
neis authored
Revert of [modules] Basic support of exports (patchset #10 id:180001 of https://codereview.chromium.org/2302783002/ ) Reason for revert: Failures related to deopt. Original issue's description: > [modules] Basic support of exports > > This adds partial support of exports to the runtime system and > to the interpreter. It introduces a new HeapObject JSModule that > maps each of the module's export names to a Cell containing the > exported value. > > Several aspects of this implementation are subject to change in > follow-up CLs. > > BUG=v8:1569 > > Committed: https://crrev.com/241a0412eed919395a2e163b30b9b66071ce5c17 > Cr-Commit-Position: refs/heads/master@{#39341} TBR=adamk@chromium.org,rmcilroy@chromium.org,ulan@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:1569 Review-Url: https://codereview.chromium.org/2328283002 Cr-Commit-Position: refs/heads/master@{#39345}
-
neis authored
This adds partial support of exports to the runtime system and to the interpreter. It introduces a new HeapObject JSModule that maps each of the module's export names to a Cell containing the exported value. Several aspects of this implementation are subject to change in follow-up CLs. BUG=v8:1569 Review-Url: https://codereview.chromium.org/2302783002 Cr-Commit-Position: refs/heads/master@{#39341}
-
- 02 Sep, 2016 1 commit
-
-
neis authored
R=jochen BUG= NOTRY=true NOTREECHECKS=true Review-Url: https://codereview.chromium.org/2303113004 Cr-Commit-Position: refs/heads/master@{#39134}
-
- 01 Sep, 2016 1 commit
-
-
jochen authored
The plan is to also use it for With and Catch scopes, so all kinds of contexts have a pointer back to their ScopeInfo R=neis@chromium.org,marja@chromium.org BUG=v8:5215 Review-Url: https://codereview.chromium.org/2301913002 Cr-Commit-Position: refs/heads/master@{#39092}
-
- 29 Aug, 2016 1 commit
-
-
verwaest authored
This additionally gets rid of old approach to global shortcuts. BUG=v8:5209 Review-Url: https://codereview.chromium.org/2287173002 Cr-Commit-Position: refs/heads/master@{#38980}
-
- 26 Aug, 2016 1 commit
-
-
littledan authored
As part of the work to implement catch prediction for async functions, the resulting Promise that is the output of the function needs to be available earlier for a couple reasons: - To be able to do %DebugPushPromise/%DebugPopPromise over the body of the async function - To be able to pass the resulting promise into AsyncFunctionAwait in order to set up the dependency chains This patch creates the Promise earlier and pushes it onto the debug stack; a later patch will set up the dependency chain. Although the debug stack is set up, it's not anticipated that this will change the catch prediction helpfully yet, as everything will still likely be predicted as 'caught' for now, as before. R=caitp@igalia.com,yangguo@chromium.org CC=neis@chromium.org,gsathya@chromium.org BUG=v8:5167 Review-Url: https://codereview.chromium.org/2233923003 Cr-Commit-Position: refs/heads/master@{#38957}
-
- 22 Aug, 2016 1 commit
-
-
littledan authored
This flag was shipped on in 52, so it's due for removal. The patch includes removing the deprecated and unused-in-Blink API Promise::Chain, and many test updates. R=adamk@chromium.org BUG=v8:4633 Review-Url: https://codereview.chromium.org/2267033002 Cr-Commit-Position: refs/heads/master@{#38804}
-
- 10 Aug, 2016 1 commit
-
-
jgruber authored
BUG= Review-Url: https://codereview.chromium.org/2224973002 Cr-Commit-Position: refs/heads/master@{#38529}
-
- 09 Aug, 2016 1 commit
-
-
jgruber authored
These were the final remnants of error code written in JavaScript. BUG= Review-Url: https://codereview.chromium.org/2222893002 Cr-Commit-Position: refs/heads/master@{#38475}
-
- 03 Aug, 2016 1 commit
-
-
jgruber authored
BUG= Review-Url: https://codereview.chromium.org/2206573002 Cr-Commit-Position: refs/heads/master@{#38289}
-
- 02 Aug, 2016 2 commits
-
-
adamk authored
They may have once been different, but they're now redundant with each other. This simplifies both Context::Lookup and its callers. Review-Url: https://codereview.chromium.org/2200303002 Cr-Commit-Position: refs/heads/master@{#38261}
-
adamk authored
This was being allowed due to the use of BindingFlags instead of VariableMode to determine whether a looked-up binding was lexical. Because function declarations are hoisted, they never need hole checks, and so were being miscategorized as non-lexical. This patch augments Context::Lookup with a VariableMode out param, which allows this check to determine precisely whether the binding is lexical. BUG=v8:4454, v8:5256 Review-Url: https://codereview.chromium.org/2206483004 Cr-Commit-Position: refs/heads/master@{#38260}
-
- 01 Aug, 2016 3 commits
-
-
jgruber authored
BUG= Review-Url: https://codereview.chromium.org/2194883002 Cr-Commit-Position: refs/heads/master@{#38215}
-
cbruni authored
BUG=chromium:630217 Review-Url: https://codereview.chromium.org/2196533003 Cr-Commit-Position: refs/heads/master@{#38213}
-
jgruber authored
BUG= Review-Url: https://codereview.chromium.org/2191293002 Cr-Commit-Position: refs/heads/master@{#38212}
-
- 29 Jul, 2016 1 commit
-
-
neis authored
R=bmeurer@chromium.org BUG= Review-Url: https://codereview.chromium.org/2197493003 Cr-Commit-Position: refs/heads/master@{#38163}
-