- 22 Apr, 2016 2 commits
-
-
bmeurer authored
Get rid of further typing checks from ChangeLowering and put them into the representation selection pass instead (encoding the information in the operator instead). Drive-by-change: Rename ChangeSmiToInt32 to ChangeTaggedSignedToInt32 for consistency about naming Tagged, TaggedSigned and TaggedPointer. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1909343002 Cr-Commit-Position: refs/heads/master@{#35723}
-
bmeurer authored
If we have to convert a float64 value to tagged representation and we already know that the value is either in Signed31/Signed32 or Unsigned32 range, then we can just convert the float64 to word32 and use the fast word32 to tagged conversion. Doing this in ChangeLowering (or the effect linearization pass) would be unsound, as the types on the nodes are no longer usable. This removes all Type uses from effect linearization. There's still some work to be done for ChangeLowering tho. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1908093002 Cr-Commit-Position: refs/heads/master@{#35713}
-
- 19 Apr, 2016 1 commit
-
-
rmcilroy authored
Removes the register file machine register from the interpreter and replaces it will loads from the parent frame pointer. As part of this change the raw operand values for register values changes to enable the interpreter to keep using the operand value as the offset from the parent frame pointer. BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1894063002 Cr-Commit-Position: refs/heads/master@{#35618}
-
- 18 Apr, 2016 1 commit
-
-
jarin authored
This introduces a compiler pass that schedules the graph and re-wires effect chain according to the schedule. It also connects allocating representation changes to the effect chain, and removes the BeginRegion and EndRegion nodes - they should not be needed anymore because all effectful nodes should be already wired-in. This is an intermediate CL - the next step is to move lowering of the Change*ToTaggedEffect nodes to StateEffectIntroduction so that we do not have to introduce the effectful versions of nodes. Review URL: https://codereview.chromium.org/1849603002 Cr-Commit-Position: refs/heads/master@{#35565}
-
- 16 Apr, 2016 1 commit
-
-
bmeurer authored
These operators are really pure on the JavaScript level, and were only part of the effect chain to make sure we don't accidentially schedule them right after raw allocations, which is no longer an issue since we now have the concept of atomic regions. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1893543004 Cr-Commit-Position: refs/heads/master@{#35552}
-
- 14 Apr, 2016 3 commits
-
-
mstarzinger authored
This changes closure creation to lower to inline allocations when possible instead of going through the FastNewClosureStub. It allows us to leverage all advantages of inline allocations on closures. Note that it is only safe to embed the raw entry point of the compile lazy stub into the code, because that stub is immortal and immovable. R=mvstanton@chromium.org Review URL: https://codereview.chromium.org/1573153002 Cr-Commit-Position: refs/heads/master@{#35499}
-
jarin authored
This allows us to remove the turbofan bailout that we introduced as a response to crbug.com/589792. BUG=chromium:589792 LOG=n Review URL: https://codereview.chromium.org/1884713003 Cr-Commit-Position: refs/heads/master@{#35493}
-
bmeurer authored
At some point we thought about using this instead of JSToNumber, but now there doesn't seem to be any reason for this anymore. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1890763002 Cr-Commit-Position: refs/heads/master@{#35469}
-
- 08 Apr, 2016 1 commit
-
-
jarin authored
BUG=chromium:600593 LOG=n R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1870763003 Cr-Commit-Position: refs/heads/master@{#35347}
-
- 06 Apr, 2016 1 commit
-
-
jacob.bramley authored
BUG= Review URL: https://codereview.chromium.org/1862993002 Cr-Commit-Position: refs/heads/master@{#35292}
-
- 05 Apr, 2016 1 commit
-
-
jarin authored
In simplified numbering, we make sanity checks based on types (e.g., NumberSubtract should take numbers as inputs), but this can be violated if optimization passes make types less precise. In this CL, we fix load elimination to make sure that types are smaller in the store -> load elimination by taking an intersection of the load's type with the store value's type and inserting a guard with that type. Note that the load type comes from type feedback, so it can be disjoint from the stored value type (in that case, this must be dead code because the map chack for the load should prevent us from using the stored value). BUG=chromium:599412 LOG=n Review URL: https://codereview.chromium.org/1857133003 Cr-Commit-Position: refs/heads/master@{#35259}
-
- 04 Apr, 2016 1 commit
-
-
titzer authored
The background here is that graphs generated from WASM are not trimmed. That means there can be some floating control diamonds that are not reachable from end. An assertion in the scheduler for phis from floating diamonds checks that the use edge in this situation is the control edge, but in general, any edge could cause this. Scheduling still works without this assertion. The longer term fix is to either trim the graphs (more compile time overhead for WASM) or improve the scheduler's handling of dead code in the graph. Currently it does not schedule dead code but the potential use positions of dead code are used in the computation of the common dominator of uses. We could recognize dead nodes in PrepareUses() and check in GetBlockForUse() as per TODO. R=bradnelson@chromium.org, mstarzinger@chromium.org BUG= Review URL: https://codereview.chromium.org/1846933002 Cr-Commit-Position: refs/heads/master@{#35245}
-
- 01 Apr, 2016 2 commits
-
-
bmeurer authored
This allows us to remove the troublesome %_MathClz32 intrinsic and also allows us to utilize the functionality that is already available in TurboFan. Also introduce a proper NumberClz32 operator so we don't need to introduce a machine operator at the JS level. R=epertoso@chromium.org Review URL: https://codereview.chromium.org/1852553003 Cr-Commit-Position: refs/heads/master@{#35208}
-
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}
-
- 31 Mar, 2016 1 commit
-
-
ahaas authored
R=titzer@chromium.org Review URL: https://codereview.chromium.org/1843123002 Cr-Commit-Position: refs/heads/master@{#35173}
-
- 30 Mar, 2016 2 commits
-
-
ahaas authored
Int64Mul is lowered to a new turbofan operator, Int32MulPair. The new operator takes 4 inputs an generates 2 outputs. The inputs are the low word of the left input, high word of the left input, the low word of the right input, and high word of the right input. The ouputs are the low and high word of the result of the multiplication. R=titzer@chromium.org, v8-arm-ports@googlegroups.com Review URL: https://codereview.chromium.org/1807273002 Cr-Commit-Position: refs/heads/master@{#35131}
-
ahaas authored
The new implementation deals with cycles in the TF graph in two steps: 1) The lowering of phis is delayed to avoid cyclic dependencies. 2) The replacement nodes of phis are created already when the phi is pushed onto the stack so that other nodes can use these replacements for their lowering. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1844553002 Cr-Commit-Position: refs/heads/master@{#35126}
-
- 28 Mar, 2016 1 commit
-
-
bmeurer authored
This way we avoid the second deoptimization for the Math.floor and Math.ceil builtins when -0 is involved. We still deoptimize the inlined Crankshaft version in various cases, that's a separate issue. The algorithm used for implement CodeStubAssembler::Float64Floor is vaguely based on the fast math version used in the libm of various BSDs, but had to be reengineered to match the EcmaScript specification. R=epertoso@chromium.org BUG=v8:2890, v8:4059 LOG=n Review URL: https://codereview.chromium.org/1828253002 Cr-Commit-Position: refs/heads/master@{#35083}
-
- 22 Mar, 2016 2 commits
-
-
bmeurer authored
This CL adds support for builtins with JavaScript linkage written using the TurboFan CodeStubAssembler, but with a JSCall descriptor (which was already supported thanks to a previous patch by Ben Smith). As a first example, we convert the Math.sqrt builtin and thereby get rid of the %_MathSqrt intrinsic, which causes trouble for the representation selection pass in the JavaScript pipeline. R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1824993002 Cr-Commit-Position: refs/heads/master@{#34989}
-
jarin authored
The CL also add guard nodes to places where we assume that certain values are numbers. Review URL: https://codereview.chromium.org/1821133002 Cr-Commit-Position: refs/heads/master@{#34977}
-
- 17 Mar, 2016 1 commit
-
-
mvstanton authored
This new intrinsic is used by the desugared ES6 instanceof implementation for the cases when the F[@@hasInstance] property is null or undefined. R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1809993002 Cr-Commit-Position: refs/heads/master@{#34866}
-
- 16 Mar, 2016 3 commits
-
-
ahaas authored
R=titzer@chromium.org Review URL: https://codereview.chromium.org/1806593003 Cr-Commit-Position: refs/heads/master@{#34811}
-
ahaas authored
R=titzer@chromium.org Review URL: https://codereview.chromium.org/1810473002 Cr-Commit-Position: refs/heads/master@{#34809}
-
ahaas authored
Int64Sub is lowered to a new turbofan operator, Int32SubPair. The new operator takes 4 inputs an generates 2 outputs. The inputs are the low word of the left input, high word of the left input, the low word of the right input, and high word of the right input. The ouputs are the low and high word of the result of the subtraction. The implementation is very similar to the implementation of Int64Add. @v8-arm-ports: please take a careful look at the implementation of sbc in the simulator. R=titzer@chromium.org, v8-arm-ports@googlegroups.com Review URL: https://codereview.chromium.org/1778893005 Cr-Commit-Position: refs/heads/master@{#34808}
-
- 15 Mar, 2016 6 commits
-
-
jyan authored
R=danno@chromium.org,jkummerow@chromium.org,jochen@chromium.org,joransiu@ca.ibm.com,michael_dawson@ca.ibm.com,mbrandy@us.ibm.com BUG= Review URL: https://codereview.chromium.org/1805533002 Cr-Commit-Position: refs/heads/master@{#34795}
-
jyan authored
R=danno@chromium.org,jkummerow@chromium.org,jochen@chromium.org,joransiu@ca.ibm.com,michael_dawson@ca.ibm.com,mbrandy@us.ibm.com BUG= Review URL: https://codereview.chromium.org/1802343002 Cr-Commit-Position: refs/heads/master@{#34789}
-
ahaas authored
The implementation is done by storing to and then loading from memory. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1801013002 Cr-Commit-Position: refs/heads/master@{#34785}
-
ahaas authored
The implementation is done by storing to and loading from memory. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1804953002 Cr-Commit-Position: refs/heads/master@{#34784}
-
ahaas authored
Word64Popcnt is lowered to Word32Popcnt(low-word) + Word32Popcnt(high_word). Since the optional Word64Popcnt operator does not exist on 32 bit platforms, I introduced a new operator "Word64PopcntPlaceholder" which is generated in the WasmCompiler and then lowered in the Int64Lowering. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1803453003 Cr-Commit-Position: refs/heads/master@{#34777}
-
ahaas authored
R=titzer@chromium.org Review URL: https://codereview.chromium.org/1798993002 Cr-Commit-Position: refs/heads/master@{#34767}
-
- 14 Mar, 2016 1 commit
-
-
ahaas authored
Int64Add is lowered to a new turbofan operator, Int32AddPair. The new operator takes 4 inputs an generates 2 outputs. The inputs are the low word of the left input, high word of the left input, the low word of the right input, and high word of the right input. The ouputs are the low and high word of the result of the addition. R=titzer@chromium.org, v8-arm-ports@googlegroups.com Review URL: https://codereview.chromium.org/1778493004 Cr-Commit-Position: refs/heads/master@{#34747}
-
- 10 Mar, 2016 1 commit
-
-
rossberg authored
R=mstarzinger@chromium.org,bmeurer@chromium.org,adamk@chromium.org BUG=v8:3956 LOG=Y Review URL: https://codereview.chromium.org/1773653002 Cr-Commit-Position: refs/heads/master@{#34669}
-
- 09 Mar, 2016 2 commits
-
-
ahaas authored
I implemented I64ShrU and I64ShrS the same as I64Shl in https://codereview.chromium.org/1756863002 R=titzer@chromium.org Review URL: https://codereview.chromium.org/1768233002 Cr-Commit-Position: refs/heads/master@{#34630}
-
ahaas authored
R=titzer@chromium.org Review URL: https://codereview.chromium.org/1776613002 Cr-Commit-Position: refs/heads/master@{#34629}
-
- 08 Mar, 2016 3 commits
-
-
verwaest authored
Also move GetProperty with string-name to JSReceiver BUG= Review URL: https://codereview.chromium.org/1775973002 Cr-Commit-Position: refs/heads/master@{#34596}
-
ahaas authored
I removed some stale comments and added a missing unit test. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1772843003 Cr-Commit-Position: refs/heads/master@{#34586}
-
ahaas authored
R=titzer@chromium.org Review URL: https://codereview.chromium.org/1770333002 Cr-Commit-Position: refs/heads/master@{#34581}
-
- 07 Mar, 2016 1 commit
-
-
ahaas authored
I64Shl is lowered to a new turbofan operator, WasmWord64Shl. The new operator takes 3 inputs, the low-word input, the high-word input, and the shift, and produces 2 output, the low-word output and the high-word output. At the moment I implemented the lowering only for ia32, but I think the CL is already big enough. I will add the other platforms in separate CLs. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1756863002 Cr-Commit-Position: refs/heads/master@{#34546}
-
- 25 Feb, 2016 1 commit
-
-
ahaas authored
Comparison operators are lowered using to a lexicographic ordering, e.g. (a,b) <= (c,d) <<>> (a < c) | (a == c) & (b <= d). R=titzer@chromium.org Review URL: https://codereview.chromium.org/1729263002 Cr-Commit-Position: refs/heads/master@{#34287}
-
- 24 Feb, 2016 1 commit
-
-
ahaas authored
(a EQ b) is lowered to ((low(a) XOR low(b)) OR (high(a) XOR high(b))) EQ 0 R=titzer@chromium.org Review URL: https://codereview.chromium.org/1729493002 Cr-Commit-Position: refs/heads/master@{#34249}
-