- 14 Nov, 2016 1 commit
-
-
tebbi authored
This CL enables precise source positions for all V8 compilers. It merges compiler::SourcePosition and internal::SourcePosition to a single class used throughout the codebase. The new internal::SourcePosition instances store an id identifying an inlined function in addition to a script offset. SourcePosition::InliningId() refers to a the new table DeoptimizationInputData::InliningPositions(), which provides the following data for every inlining id: - The inlined SharedFunctionInfo as an offset into DeoptimizationInfo::LiteralArray - The SourcePosition of the inlining. Recursively, this yields the full inlining stack. Before the Code object is created, the same information can be found in CompilationInfo::inlined_functions(). If SourcePosition::InliningId() is SourcePosition::kNotInlined, it refers to the outer (non-inlined) function. So every SourcePosition has full information about its inlining stack, as long as the corresponding Code object is known. The internal represenation of a source position is a positive 64bit integer. All compilers create now appropriate source positions for inlined functions. In the case of Turbofan, this required using AstGraphBuilderWithPositions for inlined functions too. So this class is now moved to a header file. At the moment, the additional information in source positions is only used in --trace-deopt and --code-comments. The profiler needs to be updated, at the moment it gets the correct script offsets from the deopt info, but the wrong script id from the reconstructed deopt stack, which can lead to wrong outputs. This should be resolved by making the profiler use the new inlining information for deopts. I activated the inlined deoptimization tests in test-cpu-profiler.cc for Turbofan, changing them to a case where the deopt stack and the inlining position agree. It is currently still broken for other cases. The following additional changes were necessary: - The source position table (internal::SourcePositionTableBuilder etc.) supports now 64bit source positions. Encoding source positions in a single 64bit int together with the difference encoding in the source position table results in very little overhead for the inlining id, since only 12% of the source positions in Octane have a changed inlining id. - The class HPositionInfo was effectively dead code and is now removed. - SourcePosition has new printing and information facilities, including computing a full inlining stack. - I had to rename compiler/source-position.{h,cc} to compiler/compiler-source-position-table.{h,cc} to avoid clashes with the new src/source-position.cc file. - I wrote the new wrapper PodArray for ByteArray. It is a template working with any POD-type. This is used in DeoptimizationInputData::InliningPositions(). - I removed HInlinedFunctionInfo and HGraph::inlined_function_infos, because they were only used for the now obsolete Crankshaft inlining ids. - Crankshaft managed a list of inlined functions in Lithium: LChunk::inlined_functions. This is an analog structure to CompilationInfo::inlined_functions. So I removed LChunk::inlined_functions and made Crankshaft use CompilationInfo::inlined_functions instead, because this was necessary to register the offsets into the literal array in a uniform way. This is a safe change because LChunk::inlined_functions has no other uses and the functions in CompilationInfo::inlined_functions have a strictly longer lifespan, being created earlier (in Hydrogen already). BUG=v8:5432 Review-Url: https://codereview.chromium.org/2451853002 Cr-Commit-Position: refs/heads/master@{#40975}
-
- 11 Nov, 2016 1 commit
-
-
jkummerow authored
And decouple hydrogen-instructions.h from code-stubs.h. This avoids all of Crankshaft being recompiled when code-stub-assembler.h changes. Review-Url: https://codereview.chromium.org/2498563002 Cr-Commit-Position: refs/heads/master@{#40912}
-
- 18 Oct, 2016 1 commit
-
-
bmeurer authored
These intrinsics are unused now, and so we can drop all the code in fullcodegen and Crankshaft that deals with those. TurboFan and Ignition never tried to optimize those. R=mstarzinger@chromium.org BUG=v8:5049 Review-Url: https://codereview.chromium.org/2427673004 Cr-Commit-Position: refs/heads/master@{#40401}
-
- 12 Oct, 2016 1 commit
-
-
ishell authored
... because the latter automatically respects the desired calling convention. BUG=v8:5408 Review-Url: https://codereview.chromium.org/2391043005 Cr-Commit-Position: refs/heads/master@{#40223}
-
- 06 Oct, 2016 2 commits
-
-
ishell authored
... because the latter automatically respects the desired calling convention. BUG=v8:5408 Review-Url: https://codereview.chromium.org/2398683004 Cr-Commit-Position: refs/heads/master@{#40025}
-
ishell authored
... because the latter automatically respects the desired calling convention. BUG=v8:5408 Review-Url: https://codereview.chromium.org/2396023002 Cr-Commit-Position: refs/heads/master@{#40023}
-
- 22 Sep, 2016 1 commit
-
-
ishell authored
BUG=v8:5407 Review-Url: https://codereview.chromium.org/2353303002 Cr-Commit-Position: refs/heads/master@{#39613}
-
- 20 Sep, 2016 2 commits
-
-
ishell authored
... because the latter automatically respects the desired calling convention. BUG=v8:5407 Review-Url: https://codereview.chromium.org/2350423002 Cr-Commit-Position: refs/heads/master@{#39543}
-
ishell authored
... because the latter automatically respects the desired calling convention. BUG=v8:5407 Review-Url: https://codereview.chromium.org/2358533002 Cr-Commit-Position: refs/heads/master@{#39535}
-
- 25 Aug, 2016 1 commit
-
-
neis authored
R=verwaest@chromium.org, bmeurer@chromium.org BUG= Review-Url: https://codereview.chromium.org/2269403003 Cr-Commit-Position: refs/heads/master@{#38885}
-
- 14 Jul, 2016 1 commit
-
-
ishell authored
All stores require a Slot parameter so VectorStoreICTrampolineDescriptor is a new StoreDescriptor. VectorStoreICDescriptor renamed to StoreWithVectorDescriptor. Review-Url: https://codereview.chromium.org/2147043002 Cr-Commit-Position: refs/heads/master@{#37779}
-
- 30 Jun, 2016 1 commit
-
-
bmeurer authored
These are no longer used, except in tests that test these intrinsics. R=yangguo@chromium.org Review-Url: https://codereview.chromium.org/2114613002 Cr-Commit-Position: refs/heads/master@{#37432}
-
- 27 Jun, 2016 1 commit
-
-
ishell authored
The global object can be loaded from the native context and the name can be loaded in the type feedback metadata. BUG=chromium:576312 Review-Url: https://codereview.chromium.org/2096653003 Cr-Commit-Position: refs/heads/master@{#37278}
-
- 20 Jun, 2016 1 commit
-
-
bmeurer authored
Import base::ieee754::tan() from fdlibm and introduce Float64Tan TurboFan operator based on that, similar to what we do for Float64Cos and Float64Sin. Rewrite Math.tan() as TurboFan builtin and use those operators to also inline Math.tan() into optimized TurboFan functions. Drive-by-fix: Kill the %_ConstructDouble intrinsics, and provide only the %ConstructDouble runtime entry for writing tests. BUG=v8:5086,v8:5126 R=yangguo@chromium.org Review-Url: https://codereview.chromium.org/2083453002 Cr-Commit-Position: refs/heads/master@{#37087}
-
- 17 Jun, 2016 2 commits
-
-
bmeurer authored
Import base::ieee754::cos() and base::ieee754::sin() from fdlibm and introduce Float64Cos and Float64Sin TurboFan operator based on that, similar to what we do for Float64Log. Rewrite Math.cos() and Math.sin() as TurboFan builtins and use those operators to also inline Math.cos() and Math.sin() into optimized TurboFan functions. CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel R=mvstanton@chromium.org BUG=v8:5086,v8:5118 Review-Url: https://codereview.chromium.org/2073123002 Cr-Commit-Position: refs/heads/master@{#37072}
-
bmeurer authored
Import base::ieee754::exp() from FreeBSD msun and introduce a Float64Exp TurboFan operator based on that, similar to what we do for Float64Log. Rewrite Math.exp() as TurboFan builtin and use that operator to also inline Math.exp() into optimized TurboFan functions. CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel BUG=v8:3266,v8:3468,v8:3493,v8:5086,v8:5108,chromium:620786 R=mvstanton@chromium.org Committed: https://crrev.com/93e26314afc9da9b5b8bd998688262444ed73260 Review-Url: https://codereview.chromium.org/2077533002 Cr-Original-Commit-Position: refs/heads/master@{#37037} Cr-Commit-Position: refs/heads/master@{#37047}
-
- 16 Jun, 2016 2 commits
-
-
machenbach authored
Revert of [builtins] Introduce proper Float64Exp operator. (patchset #5 id:80001 of https://codereview.chromium.org/2077533002/ ) Reason for revert: [Sheriff] Leads to some different rounding as it seems in some audio layout tests. Please rebase upstream first if intended: https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/7508 Original issue's description: > [builtins] Introduce proper Float64Exp operator. > > Import base::ieee754::exp() from FreeBSD msun and introduce a Float64Exp > TurboFan operator based on that, similar to what we do for Float64Log. > Rewrite Math.exp() as TurboFan builtin and use that operator to also > inline Math.exp() into optimized TurboFan functions. > > BUG=v8:3266,v8:3468,v8:3493,v8:5086,v8:5108 > R=mvstanton@chromium.org > > Committed: https://crrev.com/93e26314afc9da9b5b8bd998688262444ed73260 > Cr-Commit-Position: refs/heads/master@{#37037} TBR=mvstanton@chromium.org,ahaas@chromium.org,bmeurer@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:3266,v8:3468,v8:3493,v8:5086,v8:5108 Review-Url: https://codereview.chromium.org/2070813002 Cr-Commit-Position: refs/heads/master@{#37039}
-
bmeurer authored
Import base::ieee754::exp() from FreeBSD msun and introduce a Float64Exp TurboFan operator based on that, similar to what we do for Float64Log. Rewrite Math.exp() as TurboFan builtin and use that operator to also inline Math.exp() into optimized TurboFan functions. BUG=v8:3266,v8:3468,v8:3493,v8:5086,v8:5108 R=mvstanton@chromium.org Review-Url: https://codereview.chromium.org/2077533002 Cr-Commit-Position: refs/heads/master@{#37037}
-
- 30 May, 2016 1 commit
-
-
mvstanton authored
In Crankshaft, we would install special ICs that didn't need a vector and slot in the MEGAMORPHIC case. This optimization limits our hand against future improvements. BUG= Review-Url: https://codereview.chromium.org/2019313003 Cr-Commit-Position: refs/heads/master@{#36597}
-
- 17 May, 2016 1 commit
-
-
bmeurer authored
This adds back the instanceof operator support in the backends and introduces a @@hasInstance protector cell on the isolate that guards the fast path for the InstanceOfStub. This way we recover the ~10% regression on Octane EarleyBoyer in Crankshaft and greatly improve TurboFan and Ignition performance of instanceof. R=ishell@chromium.org TBR=hpayer@chromium.org,rossberg@chromium.org BUG=chromium:597249, v8:4447 LOG=n Review-Url: https://codereview.chromium.org/1980483003 Cr-Commit-Position: refs/heads/master@{#36275}
-
- 13 May, 2016 1 commit
-
-
marija.antic authored
Allocation folding tests are failing in debug mode, since the change https://codereview.chromium.org/1972553002 (6e15433d) introduced a debug check in lithium-codegen-mips64.cc, line 5287. Reason for failure is to be found in https://codereview.chromium.org/1899813003 (61f5fbbb), which is missing changes calling LFastAllocate in lithium-mips64.cc. BUG= Review-Url: https://codereview.chromium.org/1977833002 Cr-Commit-Position: refs/heads/master@{#36246}
-
- 06 May, 2016 1 commit
-
-
ishell authored
Deoptimizer is now able to reconstruct topmost accessor and constructor frames. BUG=chromium:608278, v8:4698 LOG=N TBR=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/1936043002 Cr-Commit-Position: refs/heads/master@{#36075}
-
- 07 Apr, 2016 1 commit
-
-
mstarzinger authored
Now that we no longer compile stubs from JavaScript source, but have other means of generating stubs using our optimizing compilers, we can assume that scope analysis has happened whenever prologues are being assembled. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1863333004 Cr-Commit-Position: refs/heads/master@{#35329}
-
- 01 Apr, 2016 1 commit
-
-
ishell authored
This CL ensures that we build environments/frame states so that tail caller frame will never become topmost. BUG=chromium:598998, v8:4698 LOG=N Review URL: https://codereview.chromium.org/1849503002 Cr-Commit-Position: refs/heads/master@{#35188}
-
- 30 Mar, 2016 1 commit
-
-
jarin authored
Context is always available through deopt data, so there should be no need to store the context back to the frame every time. (Turbofan already does not store back to the frame.) Review URL: https://codereview.chromium.org/1845553002 Cr-Commit-Position: refs/heads/master@{#35125}
-
- 22 Mar, 2016 2 commits
-
-
ishell authored
BUG=v8:4698 LOG=N TBR=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1782743003 Cr-Commit-Position: refs/heads/master@{#34992}
-
ishell authored
... because Debugger could still require them to inspect optimized frames. BUG=chromium:596473, v8:4698 LOG=N Review URL: https://codereview.chromium.org/1816113002 Cr-Commit-Position: refs/heads/master@{#34979}
-
- 21 Mar, 2016 2 commits
-
-
jkummerow authored
Bounds check hoisting was known to be buggy and has never been turned on. Since Crankshaft is deprecated, nobody is going to spend time fixing it, so let's just get rid of it. BUG=v8:4155,v8:4849 LOG=n R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1823623002 Cr-Commit-Position: refs/heads/master@{#34948}
-
ishell authored
In case when F inlined normal call to G which tail calls H we should not write translation for G for the tail call site. Otherwise we will see G in a stack trace inside H. This CL also enables all existing tests related to ES6 tail call elimination and adds more combinations. TBR=bmeurer@chromium.org BUG=v8:4698 LOG=N Committed: https://crrev.com/689980f7d4dfd4c29492f616d7b616b86ec9af91 Cr-Commit-Position: refs/heads/master@{#34830} Review URL: https://codereview.chromium.org/1780043004 Cr-Commit-Position: refs/heads/master@{#34920}
-
- 16 Mar, 2016 3 commits
-
-
machenbach authored
Revert of [crankshaft] Fixing ES6 tail call elimination. (patchset #7 id:200001 of https://codereview.chromium.org/1780043004/ ) Reason for revert: [Sheriff] Leads to mac gc stress crashes: https://build.chromium.org/p/client.v8/builders/V8%20Mac%20GC%20Stress/builds/4975 Original issue's description: > [crankshaft] Fixing ES6 tail call elimination. > > In case when F inlined normal call to G which tail calls H we should not write translation for G for the tail call site. > Otherwise we will see G in a stack trace inside H. > > This CL also enables all existing tests related to ES6 tail call elimination. > > TBR=bmeurer@chromium.org > BUG=v8:4698 > LOG=N > > Committed: https://crrev.com/689980f7d4dfd4c29492f616d7b616b86ec9af91 > Cr-Commit-Position: refs/heads/master@{#34830} TBR=mstarzinger@chromium.org,ishell@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4698 Review URL: https://codereview.chromium.org/1814433002 Cr-Commit-Position: refs/heads/master@{#34835}
-
ishell authored
In case when F inlined normal call to G which tail calls H we should not write translation for G for the tail call site. Otherwise we will see G in a stack trace inside H. This CL also enables all existing tests related to ES6 tail call elimination. TBR=bmeurer@chromium.org BUG=v8:4698 LOG=N Review URL: https://codereview.chromium.org/1780043004 Cr-Commit-Position: refs/heads/master@{#34830}
-
ishell authored
This fix removes unnecessary nops from function prolog and seems to recover performance regression on some of SunSpider benchmarks. TBR=bmeurer@chromium.org BUG=chromium:531369 LOG=N Review URL: https://codereview.chromium.org/1800233003 Cr-Commit-Position: refs/heads/master@{#34810}
-
- 08 Mar, 2016 1 commit
-
-
verwaest authored
This mechanism was used to ensure that functions ended up as constants on the map of prototypes defined using object literals, e.g.,: function.prototype = { method: function() { ... } } Nowadays we treat prototypes specially, and make all their functions constants when an object turns prototype. Hence this special custom code isn't necessary anymore. This also affects boilerplates that do not become prototypes. Their functions will not be constants but fields instead. Calling their methods will slow down. However, multiple instances of the same boilerplate will stay monomorphic. We'll have to see what the impact is for such objects, but preliminary benchmarks do not show this as an important regression. BUG=chromium:593008 LOG=n Review URL: https://codereview.chromium.org/1772423002 Cr-Commit-Position: refs/heads/master@{#34602}
-
- 29 Feb, 2016 1 commit
-
-
bmeurer authored
Rename the existing (patching) ToBooleanStub to ToBooleanICStub to match our naming convention, and add a new TurboFan-powered ToBooleanStub, which just does the ToBoolean conversion without any runtime call or code patching, so we can use it for Ignition (and TurboFan). Drive-by-fix: Add an Oddball::to_boolean field similar to the ones we already have for to_string and to_number, so we don't need to actually dispatch on the concrete Oddball at all. R=epertoso@chromium.org, rmcilroy@chromium.org, yangguo@chromium.org Review URL: https://codereview.chromium.org/1744163002 Cr-Commit-Position: refs/heads/master@{#34361}
-
- 26 Feb, 2016 1 commit
-
-
ishell authored
Everything that HCallJSFunction does can be easily done using more general HInvokeFunction, so there's no need to have this dedicated instruction around. Review URL: https://codereview.chromium.org/1728423002 Cr-Commit-Position: refs/heads/master@{#34320}
-
- 24 Feb, 2016 1 commit
-
-
ishell authored
Everything that HCallFunction does can be easily done using more general HCallWithDescriptor, so there's no need to have this dedicated instruction around. Review URL: https://codereview.chromium.org/1731303002 Cr-Commit-Position: refs/heads/master@{#34257}
-
- 18 Feb, 2016 1 commit
-
-
danno authored
Frame slots indexes numbers are used more consistently for computation in both TurboFan and Crankshaft. Specifically, Crankshaft now uses frame slot indexes in LChunk, removing the need for some special-case maths when building the deoptimization translation table. LOG=N R=mstarzinger@chromium.org Committed: https://crrev.com/81423b84dbb2eaf7e1a57b0f6029fc8e643b4755 Cr-Commit-Position: refs/heads/master@{#34078} Review URL: https://codereview.chromium.org/1702593002 Cr-Commit-Position: refs/heads/master@{#34114}
-
- 17 Feb, 2016 3 commits
-
-
machenbach authored
Revert of More simplification and unification of frame handling (patchset #5 id:80001 of https://codereview.chromium.org/1702593002/ ) Reason for revert: [Sheriff] Breaks nosnap debug: https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap%20-%20debug/builds/5329 Original issue's description: > More simplification and unification of frame handling > > Frame slots indexes numbers are used more consistently for > computation in both TurboFan and Crankshaft. Specifically, > Crankshaft now uses frame slot indexes in LChunk, removing > the need for some special-case maths when building the > deoptimization translation table. > > LOG=N > R=mstarzinger@chromium.org > > Committed: https://crrev.com/81423b84dbb2eaf7e1a57b0f6029fc8e643b4755 > Cr-Commit-Position: refs/heads/master@{#34078} TBR=mstarzinger@chromium.org,jarin@chromium.org,danno@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1708583002 Cr-Commit-Position: refs/heads/master@{#34082}
-
danno authored
Frame slots indexes numbers are used more consistently for computation in both TurboFan and Crankshaft. Specifically, Crankshaft now uses frame slot indexes in LChunk, removing the need for some special-case maths when building the deoptimization translation table. LOG=N R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1702593002 Cr-Commit-Position: refs/heads/master@{#34078}
-
bmeurer authored
It's dead^Wa runtime call Jim! R=jarin@chromium.org Review URL: https://codereview.chromium.org/1702313002 Cr-Commit-Position: refs/heads/master@{#34077}
-