- 17 Oct, 2016 4 commits
-
-
heimbuef authored
This adds more useful information to the v8-heap-stats tool. BUG=v8:5489 Review-Url: https://codereview.chromium.org/2394213003 Cr-Commit-Position: refs/heads/master@{#40361}
-
mstarzinger authored
This makes optimization of all class constructors (i.e. both base and derived) go through TurboFan. Note some class constructors containing Harmony language features (e.g. super constructor calls or accesses to the new.target value) were already going through TurboFan before. R=bmeurer@chromium.org BUG=v8:5458 Review-Url: https://codereview.chromium.org/2397723002 Cr-Commit-Position: refs/heads/master@{#40342}
-
bmeurer authored
In order to optimize super constructor calls with ES6 classes, we need some feedback for both the JSCallConstruct and the resulting JSCreate nodes in TurboFan. Both already optimize perfectly when the see nodes with JSFunction constants, so utilizing the existing CallIC machinery here, enables us to optimize the super constructor calls right now w/o a lot of effort. Note that there are probably better ways to track this information, for example we could do some tracking on the constructor functions; this will however require serious changes in TurboFan and the runtime, and would block progress on more important tasks. R=mythria@chromium.org BUG=v8:5517 Review-Url: https://codereview.chromium.org/2419423002 Cr-Commit-Position: refs/heads/master@{#40337}
-
neis authored
Also hide some implementation details behind abstract predicates and clean up the heap verifier functions. R=adamk@chromium.org BUG=v8:1569 Review-Url: https://codereview.chromium.org/2407183002 Cr-Commit-Position: refs/heads/master@{#40336}
-
- 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 3 commits
-
-
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}
-
- 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 4 commits
-
-
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}
-
jgruber authored
BUG= Committed: https://crrev.com/7db0ecdec3cf330766575cb7973b983f3f1e3020 Review-Url: https://codereview.chromium.org/2381843002 Cr-Original-Commit-Position: refs/heads/master@{#40080} Cr-Commit-Position: refs/heads/master@{#40087}
-
jgruber authored
This reverts commit 7db0ecde. Manual revert since automatic revert is too large for the web interface. BUG= TBR=bmeurer@chromium.org,mstarzinger@chromium.org,yangguo@chromium.org,ahaas@chromium.org NOPRESUBMIT=true NOTREECHECKS=true Review-Url: https://codereview.chromium.org/2396353002 Cr-Commit-Position: refs/heads/master@{#40082}
-
jgruber authored
BUG= Review-Url: https://codereview.chromium.org/2381843002 Cr-Commit-Position: refs/heads/master@{#40080}
-
- 05 Oct, 2016 5 commits
-
-
leszeks authored
Adds string type feedback to Ignition's AddWithFeedback code stub, for now only adding a special case for when both lhs and rhs are strings. This improves octane's splay by >100%. BUG=v8:5400 Committed: https://crrev.com/fb4ae2239d37adaf0321165034050316914de708 Committed: https://crrev.com/bf1a94f1b269914856a8c8763fd282367f066c67 Review-Url: https://codereview.chromium.org/2392533002 Cr-Original-Original-Commit-Position: refs/heads/master@{#39987} Cr-Original-Commit-Position: refs/heads/master@{#39996} Cr-Commit-Position: refs/heads/master@{#40015}
-
leszeks authored
Revert of [interpreter] Add string type feedback to add (patchset #3 id:40001 of https://codereview.chromium.org/2392533002/ ) Reason for revert: Broke the tree again, for no obvious reason :/ Original issue's description: > [interpreter] Add string type feedback to add > > Adds string type feedback to Ignition's AddWithFeedback code stub, for now only > adding a special case for when both lhs and rhs are strings. This improves > octane's splay by >100%. > > BUG=v8:5400 > > Committed: https://crrev.com/fb4ae2239d37adaf0321165034050316914de708 > Committed: https://crrev.com/bf1a94f1b269914856a8c8763fd282367f066c67 > Cr-Original-Commit-Position: refs/heads/master@{#39987} > Cr-Commit-Position: refs/heads/master@{#39996} TBR=rmcilroy@chromium.org,mythria@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:5400 Review-Url: https://codereview.chromium.org/2393193002 Cr-Commit-Position: refs/heads/master@{#40000}
-
leszeks authored
Adds string type feedback to Ignition's AddWithFeedback code stub, for now only adding a special case for when both lhs and rhs are strings. This improves octane's splay by >100%. BUG=v8:5400 Committed: https://crrev.com/fb4ae2239d37adaf0321165034050316914de708 Review-Url: https://codereview.chromium.org/2392533002 Cr-Original-Commit-Position: refs/heads/master@{#39987} Cr-Commit-Position: refs/heads/master@{#39996}
-
machenbach authored
Revert of [interpreter] Add string type feedback to add (patchset #3 id:40001 of https://codereview.chromium.org/2392533002/ ) Reason for revert: Fails unittests on win32 debug: https://build.chromium.org/p/client.v8/builders/V8%20Win32%20-%20debug/builds/5026 Original issue's description: > [interpreter] Add string type feedback to add > > Adds string type feedback to Ignition's AddWithFeedback code stub, for now only > adding a special case for when both lhs and rhs are strings. This improves > octane's splay by >100%. > > BUG=v8:5400 > > Committed: https://crrev.com/fb4ae2239d37adaf0321165034050316914de708 > Cr-Commit-Position: refs/heads/master@{#39987} TBR=rmcilroy@chromium.org,mythria@chromium.org,leszeks@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:5400 Review-Url: https://codereview.chromium.org/2395743004 Cr-Commit-Position: refs/heads/master@{#39991}
-
leszeks authored
Adds string type feedback to Ignition's AddWithFeedback code stub, for now only adding a special case for when both lhs and rhs are strings. This improves octane's splay by >100%. BUG=v8:5400 Review-Url: https://codereview.chromium.org/2392533002 Cr-Commit-Position: refs/heads/master@{#39987}
-
- 04 Oct, 2016 2 commits
-
-
neis authored
R=rmcilroy@chromium.org BUG= Review-Url: https://codereview.chromium.org/2393453003 Cr-Commit-Position: refs/heads/master@{#39963}
-
neis authored
This removes the execute_ flag, which was always the negation of top_level_. R=rmcilroy@chromium.org BUG= Review-Url: https://codereview.chromium.org/2390163003 Cr-Commit-Position: refs/heads/master@{#39961}
-
- 30 Sep, 2016 4 commits
-
-
rmcilroy authored
Review-Url: https://codereview.chromium.org/2385653002 Cr-Commit-Position: refs/heads/master@{#39911}
-
rmcilroy authored
There are only a few occasions where we allocate a register in an outer expression allocation scope, which makes the costly free-list approach of the BytecodeRegisterAllocator unecessary. This CL replaces all occurrences with moves to the accumulator and stores to a register allocated in the correct scope. By doing this, we can simplify the BytecodeRegisterAllocator to be a simple bump-pointer allocator with registers released in the same order as allocated. The following changes are also made: - Make BytecodeRegisterOptimizer able to use registers which have been unallocated, but not yet reused - Remove RegisterExpressionResultScope and rename AccumulatorExpressionResultScope to ValueExpressionResultScope - Introduce RegisterList to represent consecutive register allocations, and use this for operands to call bytecodes. By avoiding the free-list handling, this gives another couple of percent on CodeLoad. BUG=v8:4280 Review-Url: https://codereview.chromium.org/2369873002 Cr-Commit-Position: refs/heads/master@{#39905}
-
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}
-
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 3 commits
-
-
adamk authored
Use an unordered_map<Module, unordered_set<String>> to keep track of visited Module/ExportName pairs during ResolveExport. This required adding a Hash() method to Module, which is accomplished by allocating a Symbol and storing it in the SharedFunctionInfo::name slot, then delegating the hash to that Symbol. Also added a helper method Module::shared() to easily get ahold of the SharedFunctionInfo and call it in the appropriate places instead of re-doing the ternary operator. BUG=v8:1569 Review-Url: https://codereview.chromium.org/2367623004 Cr-Commit-Position: refs/heads/master@{#39743}
-
bmeurer authored
Revert of [compiler] Properly guard the speculative optimizations for instanceof. (patchset #3 id:40001 of https://codereview.chromium.org/2370693002/ ) Reason for revert: Tanks EarleyBoyer. Original issue's description: > [compiler] Properly guard the speculative optimizations for instanceof. > > Add a general feedback slot for instanceof similar to what we already have > for for-in, which basically has a fast (indicated by the uninitialized > sentinel) and a slow (indicated by the megamorphic sentinel) mode. Now > we can only take the fast path when the feedback slot says it hasn't > seen any funky inputs and nothing funky appeared in the prototype chain. > In the TurboFan code we also deoptimize whenever we see a funky object > (i.e. a proxy or an object that requires access checks) in the prototype > chain (similar to what Crankshaft already did). > > Drive-by-fix: Also make Crankshaft respect the mode and therefore > address the deopt loop in Crankshaft around instanceof. > > We might want to introduce an InstanceOfIC mechanism at some point and > track the map of the right-hand side. > > BUG=v8:5267 > R=mvstanton@chromium.org > > Committed: https://crrev.com/a0484bc6116ebc2b855de87d862945e2ae07169b > Cr-Commit-Position: refs/heads/master@{#39718} TBR=mvstanton@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:5267 Review-Url: https://codereview.chromium.org/2365223003 Cr-Commit-Position: refs/heads/master@{#39736}
-
bmeurer authored
Add a general feedback slot for instanceof similar to what we already have for for-in, which basically has a fast (indicated by the uninitialized sentinel) and a slow (indicated by the megamorphic sentinel) mode. Now we can only take the fast path when the feedback slot says it hasn't seen any funky inputs and nothing funky appeared in the prototype chain. In the TurboFan code we also deoptimize whenever we see a funky object (i.e. a proxy or an object that requires access checks) in the prototype chain (similar to what Crankshaft already did). Drive-by-fix: Also make Crankshaft respect the mode and therefore address the deopt loop in Crankshaft around instanceof. We might want to introduce an InstanceOfIC mechanism at some point and track the map of the right-hand side. BUG=v8:5267 R=mvstanton@chromium.org Review-Url: https://codereview.chromium.org/2370693002 Cr-Commit-Position: refs/heads/master@{#39718}
-
- 23 Sep, 2016 2 commits
-
-
verwaest authored
Remove ARGUMENTS_VARIABLE and fix crankshaft to properly detect the arguments object and keep it alive when inlining .apply BUG= Review-Url: https://codereview.chromium.org/2367483003 Cr-Commit-Position: refs/heads/master@{#39670}
-
Benedikt Meurer authored
R=epertoso@chromium.org Review URL: https://codereview.chromium.org/2360233004 . Cr-Commit-Position: refs/heads/master@{#39658}
-
- 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}
-
- 20 Sep, 2016 4 commits
-
-
klaasb authored
The CreateArrayLiteral bytecode handler now directly inlines the FastCloneShallowArrayStub. BUG=v8:4280 Review-Url: https://codereview.chromium.org/2341743003 Cr-Commit-Position: refs/heads/master@{#39562}
-
mvstanton authored
Full code uses patching ICs for this feedback, and the interpreter uses the type feedback vector. It's a good idea to code the vector slots appropriately as ICs so that the runtime profiler can better gauge if the function is ready for tiering up from Ignition to TurboFan. As is, the feedback is stored in "general" slots which can't be characterized by the runtime profiler into feedback states. This CL addresses that problem. Note that it's also important to carefully exclude these slots from the profiler's consideration when determining if you want to optimize from Full code. BUG= Review-Url: https://codereview.chromium.org/2342853002 Cr-Commit-Position: refs/heads/master@{#39555}
-
klaasb authored
Refactors CodeStubAssembler::AllocateJSArray to share code. BUG=chromium:608675 Review-Url: https://codereview.chromium.org/2304573004 Cr-Commit-Position: refs/heads/master@{#39550}
-
leszeks authored
Adds a fast path for loading DYNAMIC_GLOBAL variables, which are lookup variables that can be globally loaded, without calling the runtime, as long as there was no context extension by a sloppy eval along their context chain. BUG=v8:5263 Review-Url: https://codereview.chromium.org/2347143002 Cr-Commit-Position: refs/heads/master@{#39537}
-
- 16 Sep, 2016 1 commit
-
-
leszeks authored
Adds a fast path for loading DYNAMIC_LOCAL variables, which are lookup variables that can be context loaded, without calling the runtime, as long as there was no context extension by a sloppy eval along their context chain. BUG=v8:5263 Review-Url: https://codereview.chromium.org/2343633002 Cr-Commit-Position: refs/heads/master@{#39473}
-