- 21 Jun, 2016 1 commit
-
-
rmcilroy authored
Adds back simple dead code elimination to the bytecode pipeline. BUG=v8:4280,chromium:616064 Review-Url: https://codereview.chromium.org/2038083002 Cr-Commit-Position: refs/heads/master@{#37147}
-
- 03 Jun, 2016 1 commit
-
-
rmcilroy authored
This moves processing of jumps out of bytecode array builder and into bytecode array writer. This simplifies the pipeline by avoiding having to flush for offset and patch up offsets in bytecode array builder based on what was emitted by the bytecode array writer. This also enables future refactorings to add dead code elimination back into the pipeline, and move processing of scalable operand sizes to the end of the pipeline (in the bytecode array writer) rather than having to deal with scalable operand types throughout pipeline. BUG=v8:4280,chromium:616064 Review-Url: https://codereview.chromium.org/2035813002 Cr-Commit-Position: refs/heads/master@{#36716}
-
- 27 May, 2016 2 commits
-
-
oth authored
Online optimization stage for reducing redundant transfers between registers. BUG=V8:4280 LOG=N Review-Url: https://codereview.chromium.org/1997653002 Cr-Commit-Position: refs/heads/master@{#36551}
-
mvstanton authored
We get less "pollution" of type feedback if we have one vector per native context, rather than one for the whole system. This CL moves the vector appropriately. BUG= Review-Url: https://codereview.chromium.org/1906823002 Cr-Commit-Position: refs/heads/master@{#36539}
-
- 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}
-
- 25 Apr, 2016 1 commit
-
-
rmcilroy authored
Use the FastNewSloppyArgumentsStub in the interpreter when function doesn't have duplicate parameters. BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1909903003 Cr-Commit-Position: refs/heads/master@{#35754}
-
- 18 Apr, 2016 1 commit
-
-
neis authored
Behind --ignition-generators. Does not yet support Turbofan. TBR=bmeurer@chromium.org BUG=v8:4907 LOG=n Review URL: https://codereview.chromium.org/1884183002 Cr-Commit-Position: refs/heads/master@{#35584}
-
- 01 Apr, 2016 2 commits
-
-
oth authored
Improves code coverage of bytecode array builder and constant array builder. Fixes initial index for constant pool slice for kQuad operands. BUG=v8:4280,chromium:599000 LOG=N TBR=rmcilroy@chromium.org Review URL: https://codereview.chromium.org/1845313002 Cr-Commit-Position: refs/heads/master@{#35201}
-
jochen authored
We expect that the majority of malloc'd memory held by V8 is allocated in Zone objects. Introduce an Allocator class that is used by Zones to manage memory, and allows for querying the current usage. BUG=none R=titzer@chromium.org,bmeurer@chromium.org,jarin@chromium.org LOG=n TBR=rossberg@chromium.org Review URL: https://codereview.chromium.org/1847543002 Cr-Commit-Position: refs/heads/master@{#35196}
-
- 22 Mar, 2016 2 commits
-
-
adamk authored
Now that ES2015 const has shipped, in Chrome 49, legacy const declarations are no more. This lets us remove a bunch of code from many parts of the codebase. In this patch, I remove parser support for generating legacy const variables from const declarations. This also removes the special "illegal declaration" bit from Scope, which has ripples into all compiler backends. Also gone are any tests which relied on legacy const declarations. Note that we do still generate a Variable in mode CONST_LEGACY in one case: function name bindings in sloppy mode. The likely fix there is to add a new Variable::Kind for this case and handle it appropriately for stores in each backend, but I leave that for a later patch to make this one completely subtractive. Review URL: https://codereview.chromium.org/1819123002 Cr-Commit-Position: refs/heads/master@{#35002}
-
epertoso authored
Introduces a bytecode whose handler executes the equivalent of %_IsArray and %_IsJSReceiver without a runtime call. BUG=v8:4822 LOG=y Review URL: https://codereview.chromium.org/1645763003 Cr-Commit-Position: refs/heads/master@{#34983}
-
- 21 Mar, 2016 1 commit
-
-
mstarzinger authored
R=rmcilroy@chromium.org TEST=cctest/test-interpreter/InterpreterInstanceOf BUG=v8:4447 LOG=n Review URL: https://codereview.chromium.org/1816063002 Cr-Commit-Position: refs/heads/master@{#34933}
-
- 16 Mar, 2016 2 commits
-
-
mythria authored
We need to pop the context to correct level on return as well. This was incorrectly removed in this cl: https://codereview.chromium.org/1768123002/. For example when we have a try-catch-finally block and catch does a return, the return does not happen immediately. It should execute finally block before it returns. Return statement should pop the context to the correct level as expected by finally block. BUG=594369,v8:4280 LOG=N Review URL: https://codereview.chromium.org/1796893002 Cr-Commit-Position: refs/heads/master@{#34822}
-
rmcilroy authored
BUG=v8:4682 LOG=N Review URL: https://codereview.chromium.org/1805503003 Cr-Commit-Position: refs/heads/master@{#34819}
-
- 07 Mar, 2016 1 commit
-
-
mythria authored
TestNotEqualsStrict is converted to a TestEqualsStrict and logical not by the parser. Also, CompareIC does not have an implementation for TestNotEqualsStrict. Hence, removing this bytecode. BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1768593002 Cr-Commit-Position: refs/heads/master@{#34527}
-
- 24 Feb, 2016 2 commits
-
-
mythria authored
Revert of [Interpreter] Implements calls through CallICStub in the interpreter. (patchset #15 id:270001 of https://codereview.chromium.org/1688283003/ ) Reason for revert: It is not a good idea to call CallICStub from the builtin. It might be sensitive to the frame structure. Constructing a internal frame might cause problems. It is much better to inline the code related to the type feedback vector into the builtin. Original issue's description: > [Interpreter] Implements calls through CallICStub in the interpreter. > > Calls are implemented through CallICStub to collect type feedback. Adds > a new builtin called InterpreterPushArgsAndCallIC that pushes the > arguments onto stack and calls CallICStub. > > Also adds two new bytecodes CallIC and CallICWide to indicate calls have to > go through CallICStub. > > MIPS port contributed by balazs.kilvady. > > BUG=v8:4280, v8:4680 > LOG=N > > Committed: https://crrev.com/20362a2214c11a0f2ea5141b6a79e09458939cec > Cr-Commit-Position: refs/heads/master@{#34244} TBR=rmcilroy@chromium.org,mvstanton@chromium.org,mstarzinger@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4280, v8:4680 Review URL: https://codereview.chromium.org/1731253003 Cr-Commit-Position: refs/heads/master@{#34252}
-
mythria authored
Calls are implemented through CallICStub to collect type feedback. Adds a new builtin called InterpreterPushArgsAndCallIC that pushes the arguments onto stack and calls CallICStub. Also adds two new bytecodes CallIC and CallICWide to indicate calls have to go through CallICStub. MIPS port contributed by balazs.kilvady. BUG=v8:4280, v8:4680 LOG=N Review URL: https://codereview.chromium.org/1688283003 Cr-Commit-Position: refs/heads/master@{#34244}
-
- 17 Feb, 2016 2 commits
-
-
ishell authored
This CL introduces two new bytecodes TailCall and TailCallWide. BUG=v8:4698,v8:4687 LOG=N Review URL: https://codereview.chromium.org/1698273003 Cr-Commit-Position: refs/heads/master@{#34083}
-
mstarzinger authored
R=rossberg@chromium.org,bmeurer@chromium.org,verwaest@chromium.org BUG=v8:3956 LOG=n Review URL: https://codereview.chromium.org/1700993002 Cr-Commit-Position: refs/heads/master@{#34067}
-
- 16 Feb, 2016 1 commit
-
-
mstarzinger authored
R=bmeurer@chromium.org BUG=v8:3956 LOG=n Review URL: https://codereview.chromium.org/1693833002 Cr-Commit-Position: refs/heads/master@{#34036}
-
- 15 Feb, 2016 1 commit
-
-
oth authored
Adds support for ES6 super keyword and performing loads, stores, and calls to super class members. Implements SetHomeObject and enables ThisFunctionVariable. BUG=v8:4280,v8:4682 LOG=N Review URL: https://codereview.chromium.org/1689573004 Cr-Commit-Position: refs/heads/master@{#33977}
-
- 08 Feb, 2016 1 commit
-
-
mythria authored
Adds implementation and tests to support const/let variables in the interpreter. BUG=v8:4280,v8:4679 LOG=N Review URL: https://codereview.chromium.org/1634153002 Cr-Commit-Position: refs/heads/master@{#33819}
-
- 05 Feb, 2016 1 commit
-
-
mvstanton authored
Revert of Type Feedback Vector lives in the closure (patchset #2 id:40001 of https://codereview.chromium.org/1668103002/ ) Reason for revert: Must revert for now due to chromium api natives issues. Original issue's description: > Type Feedback Vector lives in the closure > > (RELAND: the problem before was a missing write barrier for adding the code > entry to the new closure. It's been addressed with a new macro instruction > and test. The only change to this CL is the addition of two calls to > __ RecordWriteCodeEntryField() in the platform CompileLazy builtin.) > > We get less "pollution" of type feedback if we have one vector per native > context, rather than one for the whole system. This CL moves the vector > appropriately. > > We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The > vector actually lives in the first slot of the literals array (indeed there is > great commonality between those arrays, they can be thought of as the same > thing). So we make greater effort to ensure there is a valid literals array > after compilation. > > This meant, for performance reasons, that we needed to extend > FastNewClosureStub to support creating closures with literals. And ultimately, > it drove us to move the optimized code map lookup out of FastNewClosureStub > and into the compile lazy builtin. > > The heap change is trivial so I TBR Hannes for it... > Also, Yang has had a look at the debugger changes already and approved 'em. So he is TBR style too. > And Benedikt reviewed it as well. > > TBR=hpayer@chromium.org, yangguo@chromium.org, bmeurer@chromium.org > > BUG= > > Committed: https://crrev.com/bb31db3ad6de16f86a61f6c7bbfd3274e3d957b5 > Cr-Commit-Position: refs/heads/master@{#33741} TBR=bmeurer@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= Review URL: https://codereview.chromium.org/1670813005 Cr-Commit-Position: refs/heads/master@{#33766}
-
- 04 Feb, 2016 3 commits
-
-
oth authored
Port of class literal support from the ast-graph-builder implementation. R=rmcilroy@chromium.org,mstarzinger@chromium.org BUG=v8:4280,v8:4682 LOG=N Review URL: https://codereview.chromium.org/1666943003 Cr-Commit-Position: refs/heads/master@{#33746}
-
mvstanton authored
(RELAND: the problem before was a missing write barrier for adding the code entry to the new closure. It's been addressed with a new macro instruction and test. The only change to this CL is the addition of two calls to __ RecordWriteCodeEntryField() in the platform CompileLazy builtin.) We get less "pollution" of type feedback if we have one vector per native context, rather than one for the whole system. This CL moves the vector appropriately. We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The vector actually lives in the first slot of the literals array (indeed there is great commonality between those arrays, they can be thought of as the same thing). So we make greater effort to ensure there is a valid literals array after compilation. This meant, for performance reasons, that we needed to extend FastNewClosureStub to support creating closures with literals. And ultimately, it drove us to move the optimized code map lookup out of FastNewClosureStub and into the compile lazy builtin. The heap change is trivial so I TBR Hannes for it... Also, Yang has had a look at the debugger changes already and approved 'em. So he is TBR style too. And Benedikt reviewed it as well. TBR=hpayer@chromium.org, yangguo@chromium.org, bmeurer@chromium.org BUG= Review URL: https://codereview.chromium.org/1668103002 Cr-Commit-Position: refs/heads/master@{#33741}
-
mythria authored
Adds implementation and tests for rest parameters to interpreter. BUG=v8:4280,v8:4683 LOG=N Review URL: https://codereview.chromium.org/1664593003 Cr-Commit-Position: refs/heads/master@{#33722}
-
- 03 Feb, 2016 2 commits
-
-
oth authored
Unifies the meaning of kRegCount8 and kRegCount16 across bytecodes. Call and CallJSRuntime had a slightly different use of the register count operand. From this change forth, register count operands are always based off of the previous register operand. BUG=v8:4280,v8:4675 LOG=N Review URL: https://codereview.chromium.org/1659023002 Cr-Commit-Position: refs/heads/master@{#33707}
-
mythria authored
Adds implementation and tests for with statement to interprter. BUG=v8:4280,v8:4684 LOG=N Review URL: https://codereview.chromium.org/1656863002 Cr-Commit-Position: refs/heads/master@{#33705}
-
- 02 Feb, 2016 1 commit
-
-
oth authored
Moves the temporary register allocator out of the bytecode array builder into TemporaryRegisterAllocator class and adds unittests. Particular must be taken around the translation window boundary motivating the addition of tests. Also adds a Clear() method to IdentityMap() which is called by the destructor. This allows classes to hold an IdentityMap if they are zone allocated. Classes must call Clear() before the zone is re-cycled or face v8 heap corruption. BUG=v8:4280,v8:4675 LOG=N Review URL: https://codereview.chromium.org/1651133002 Cr-Commit-Position: refs/heads/master@{#33686}
-
- 29 Jan, 2016 1 commit
-
-
jkummerow authored
String wrappers (new String("foo")) are special objects: their string characters are accessed like elements, and they also have an elements backing store. This used to require a bunch of explicit checks like: if (obj->IsJSValue() && JSValue::cast(obj)->value()->IsString()) { /* Handle string characters */ } // Handle regular elements (for string wrappers and other objects) obj->GetElementsAccessor()->Whatever(...); This CL introduces new ElementsKinds for string wrapper objects (one for fast elements, one for dictionary elements), which allow folding the special-casing into new StringWrapperElementsAccessors. No observable change in behavior is intended. Review URL: https://codereview.chromium.org/1612323003 Cr-Commit-Position: refs/heads/master@{#33616}
-
- 27 Jan, 2016 3 commits
-
-
mvstanton authored
Revert of Type Feedback Vector lives in the closure (patchset #2 id:20001 of https://codereview.chromium.org/1642613002/ ) Reason for revert: Bug: failing to use write barrier when writing code entry into closure. Original issue's description: > Reland of Type Feedback Vector lives in the closure > > (Fixed a bug found by nosnap builds.) > > We get less "pollution" of type feedback if we have one vector per native > context, rather than one for the whole system. This CL moves the vector > appropriately. > > We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The > vector actually lives in the first slot of the literals array (indeed there is > great commonality between those arrays, they can be thought of as the same > thing). So we make greater effort to ensure there is a valid literals array > after compilation. > > This meant, for performance reasons, that we needed to extend > FastNewClosureStub to support creating closures with literals. And ultimately, > it drove us to move the optimized code map lookup out of FastNewClosureStub > and into the compile lazy builtin. > > The heap change is trivial so I TBR Hannes for it... > > TBR=hpayer@chromium.org > BUG= > > Committed: https://crrev.com/d984b3b0ce91e55800f5323b4bb32a06f8a5aab1 > Cr-Commit-Position: refs/heads/master@{#33548} TBR=bmeurer@chromium.org,yangguo@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= Review URL: https://codereview.chromium.org/1643533003 Cr-Commit-Position: refs/heads/master@{#33556}
-
mvstanton authored
(Fixed a bug found by nosnap builds.) We get less "pollution" of type feedback if we have one vector per native context, rather than one for the whole system. This CL moves the vector appropriately. We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The vector actually lives in the first slot of the literals array (indeed there is great commonality between those arrays, they can be thought of as the same thing). So we make greater effort to ensure there is a valid literals array after compilation. This meant, for performance reasons, that we needed to extend FastNewClosureStub to support creating closures with literals. And ultimately, it drove us to move the optimized code map lookup out of FastNewClosureStub and into the compile lazy builtin. The heap change is trivial so I TBR Hannes for it... TBR=hpayer@chromium.org BUG= Review URL: https://codereview.chromium.org/1642613002 Cr-Commit-Position: refs/heads/master@{#33548}
-
oth authored
Introduces the concept of transfer direction to register operands. This enables the register translator to emit exactly the moves that a bytecode having it's register operands translated needs. BUG=v8:4280,v8:4675 LOG=N Review URL: https://codereview.chromium.org/1633153002 Cr-Commit-Position: refs/heads/master@{#33544}
-
- 26 Jan, 2016 4 commits
-
-
rmcilroy authored
Implements do expressions for the Ignition. BUG=v8:4685 LOG=N Review URL: https://codereview.chromium.org/1632213002 Cr-Commit-Position: refs/heads/master@{#33525}
-
mvstanton authored
Revert of Type Feedback Vector lives in the closure (patchset #12 id:260001 of https://codereview.chromium.org/1563213002/ ) Reason for revert: FAilure on win32 bot, need to investigate webkit failures. Original issue's description: > Type Feedback Vector lives in the closure > > We get less "pollution" of type feedback if we have one vector per native > context, rather than one for the whole system. This CL moves the vector > appropriately. > > We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The > vector actually lives in the first slot of the literals array (indeed there is > great commonality between those arrays, they can be thought of as the same > thing). So we make greater effort to ensure there is a valid literals array > after compilation. > > This meant, for performance reasons, that we needed to extend > FastNewClosureStub to support creating closures with literals. And ultimately, > it drove us to move the optimized code map lookup out of FastNewClosureStub > and into the compile lazy builtin. > > The heap change is trivial so I TBR Hannes for it... > > TBR=hpayer@chromium.org > > BUG= > > Committed: https://crrev.com/a5200f7ed4d11c6b882fa667da7a1864226544b4 > Cr-Commit-Position: refs/heads/master@{#33518} TBR=bmeurer@chromium.org,akos.palfi@imgtec.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= Review URL: https://codereview.chromium.org/1632993003 Cr-Commit-Position: refs/heads/master@{#33520}
-
mvstanton authored
We get less "pollution" of type feedback if we have one vector per native context, rather than one for the whole system. This CL moves the vector appropriately. We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The vector actually lives in the first slot of the literals array (indeed there is great commonality between those arrays, they can be thought of as the same thing). So we make greater effort to ensure there is a valid literals array after compilation. This meant, for performance reasons, that we needed to extend FastNewClosureStub to support creating closures with literals. And ultimately, it drove us to move the optimized code map lookup out of FastNewClosureStub and into the compile lazy builtin. The heap change is trivial so I TBR Hannes for it... TBR=hpayer@chromium.org BUG= Review URL: https://codereview.chromium.org/1563213002 Cr-Commit-Position: refs/heads/master@{#33518}
-
oth authored
This increases the size of register operands to be 16-bit. Not all bytecodes have wide register variants, so when they are needed a register translator will copy them into a small area reserved at the top of the 8-bit register range and these registers are supplied as arguments to the bytecode with 8-bit operands. This is non-intrusive for typical bytecode where the number of registers is less than 120. For bytecodes with wide register operands (above the window) their index needs to be translated to avoid the reserved translation window. Enables splay.js to run in Octane and a handful of mjsunit tests. BUG=v8:4280,v8:4675 LOG=NO Review URL: https://codereview.chromium.org/1613163002 Cr-Commit-Position: refs/heads/master@{#33516}
-
- 25 Jan, 2016 1 commit
-
-
mstarzinger authored
The current support for try-catch in the interpreter can handle most of the cases appearing in our test suite. Also the flag in question did not detect try-finally constructs. This removes the flag and instead extends the test expectations. R=rmcilroy@chromium.org BUG=v8:4674 LOG=n Review URL: https://codereview.chromium.org/1631593003 Cr-Commit-Position: refs/heads/master@{#33494}
-
- 22 Jan, 2016 2 commits
-
-
mstarzinger authored
This adds an explicit ReThrow bytecode to be used in the modelling of try-finally statements. An exception that is being re-thrown should not trigger message object creation or location computation and hence cannot use the existing Throw bytecode. R=rmcilroy@chromium.org TEST=cctest/test-interpreter/InterpreterTryFinally BUG=v8:4674 LOG=n Review URL: https://codereview.chromium.org/1621673002 Cr-Commit-Position: refs/heads/master@{#33472}
-
rmcilroy authored
Adds support for ForOf to the interpreter. BUG=v8:4685 LOG=N Review URL: https://codereview.chromium.org/1618693005 Cr-Commit-Position: refs/heads/master@{#33470}
-