- 01 Apr, 2016 4 commits
-
-
bmeurer authored
These operators will be easier to optimize, and we can remove some unnecessary clutter from the intrinsic lowering. Drive-by-cleanup: Some alpha sorting of the type conversion operator business. R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1848243002 Cr-Commit-Position: refs/heads/master@{#35197}
-
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}
-
yangguo authored
Revert of [compiler] Add relocatable pointer constants for wasm memory references. (patchset #14 id:300001 of https://codereview.chromium.org/1759383003/ ) Reason for revert: Test failures: https://build.chromium.org/p/client.v8/builders/V8%20Mac64/builds/8046 Original issue's description: > [compiler] Add relocatable pointer constants for wasm memory references. > > Add relocatable pointers for wasm memory references that need to be updated when wasm GrowMemory is used. Code generator changes to accept relocatable constants as immediates. > > R=titzer@chromium.org, yangguo@chromium.org, bradnelson@chromium.org > > Committed: https://crrev.com/eb5fe0df64ec0add423b2a1f6fb62d5a33dce2a5 > Cr-Commit-Position: refs/heads/master@{#35182} TBR=bradnelson@chromium.org,titzer@chromium.org,gdeepti@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1846083005 Cr-Commit-Position: refs/heads/master@{#35185}
-
gdeepti authored
Add relocatable pointers for wasm memory references that need to be updated when wasm GrowMemory is used. Code generator changes to accept relocatable constants as immediates. R=titzer@chromium.org, yangguo@chromium.org, bradnelson@chromium.org Review URL: https://codereview.chromium.org/1759383003 Cr-Commit-Position: refs/heads/master@{#35182}
-
- 31 Mar, 2016 1 commit
-
-
ahaas authored
*) For all tests the input validation was incorrect, i.e. some values were considered invalid although they were valid. The problem was that values which are outside int range can get in range through truncation. *) Removed an assertion in the x64 code generation of TruncateFloat64ToUint32 which trapped on negative inputs. *) Introduced a new TF operator TruncateFloat32ToUint32 which does the same as ChangeFloat32ToUint32 but does not trap on negative inputs. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1843983002 Cr-Commit-Position: refs/heads/master@{#35176}
-
- 30 Mar, 2016 2 commits
-
-
bmeurer authored
Migrate Math.ceil, Math.round and Math.trunc to TurboFan code stubs, similar to what we did with Math.floor, and make these builtins properly optimizable in TurboFan via appropriate simplified operators NumberCeil, NumberRound and NumberTrunc, which are intended to be reusable for ToInteger and ToLength optimizations that will be done in a followup CL. Also allows us to kill the funky %RoundNumber runtime function, which was quite heavy. Improve test coverage for Math.ceil and Math.trunc a lot, especially making sure that we also properly trigger the TurboFan builtin reducer case. R=jarin@chromium.org BUG=v8:4059 LOG=n Review URL: https://codereview.chromium.org/1841993002 Cr-Commit-Position: refs/heads/master@{#35135}
-
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}
-
- 29 Mar, 2016 1 commit
-
-
bmeurer authored
The NumberFloor operator matches exactly the semantics of the Math.floor builtin on Numbers. It uses hardware rounding instructions if available, but provides a full fallback solution that is compatible with Math.floor. The lowering is optimizable based on types if needed later, i.e. we already optimize it for the case that the input is already an Integer (in the EcmaScript sense, including NaN and -0), but we could add more optimizations, like combining NumberFloor and NumberDivide in the future, if necessary. R=jarin@chromium.org BUG=v8:2890,v8:4059 LOG=n Review URL: https://codereview.chromium.org/1843533003 Cr-Commit-Position: refs/heads/master@{#35090}
-
- 21 Mar, 2016 1 commit
-
-
bmeurer authored
Split ToNumberStub into the entry ToNumberStub, and two new stubs, StringToNumberStub and NonNumberToNumberStub, which can be used when we already know something about the input (i.e. in various branches of the code stubs, or in TurboFan graphs). Also introduce an appropriate StringToNumber simplified operator for TurboFan, that is pure and is lowered to an invocation of the newly added StringToNumberStub. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1818923002 Cr-Commit-Position: refs/heads/master@{#34922}
-
- 16 Mar, 2016 1 commit
-
-
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}
-
- 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
-
-
ahaas authored
With the original implementation nodes which were not reachable from end could cause the verification to fail. R=titzer@chromium.org, mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1782863002 Cr-Commit-Position: refs/heads/master@{#34683}
-
- 09 Mar, 2016 1 commit
-
-
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}
-
- 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}
-
- 29 Feb, 2016 1 commit
-
-
mtrofin authored
BUG= Review URL: https://codereview.chromium.org/1738973002 Cr-Commit-Position: refs/heads/master@{#34363}
-
- 27 Feb, 2016 1 commit
-
-
bmeurer authored
Since both null and undefined are also marked as undetectable now, we can just test that bit instead of having the CompareNilIC try to collect feedback to speed up the general case (without the undetectable bit being used). Drive-by-fix: Update the type system to match the new handling of undetectable in the runtime. R=danno@chromium.org Committed: https://crrev.com/666aec0348c8793e61c8633dee7ad29a514239ba Cr-Commit-Position: refs/heads/master@{#34237} Review URL: https://codereview.chromium.org/1722193002 Cr-Commit-Position: refs/heads/master@{#34344}
-
- 26 Feb, 2016 1 commit
-
-
adamk authored
Revert of [compiler] Drop the CompareNilIC. (patchset #4 id:60001 of https://codereview.chromium.org/1722193002/ ) Reason for revert: Speculative revert in attempt to fix #2 crasher on canary. Original issue's description: > [compiler] Drop the CompareNilIC. > > Since both null and undefined are also marked as undetectable now, we > can just test that bit instead of having the CompareNilIC try to collect > feedback to speed up the general case (without the undetectable bit > being used). > > Drive-by-fix: Update the type system to match the new handling of > undetectable in the runtime. > > R=danno@chromium.org > > Committed: https://crrev.com/666aec0348c8793e61c8633dee7ad29a514239ba > Cr-Commit-Position: refs/heads/master@{#34237} TBR=danno@chromium.org,verwaest@chromium.org,bmeurer@chromium.org LOG=y BUG=chromium:589897 NOTRY=true Review URL: https://codereview.chromium.org/1743433002 Cr-Commit-Position: refs/heads/master@{#34308}
-
- 24 Feb, 2016 2 commits
-
-
bmeurer authored
These macro operators represent a conditional eager deoptimization exit without explicit branching, which greatly reduces overhead of both scheduling and register allocation, and thereby greatly reduces overall compilation time, esp. when there are a lot of eager deoptimization exits. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1721103003 Cr-Commit-Position: refs/heads/master@{#34239}
-
bmeurer authored
Since both null and undefined are also marked as undetectable now, we can just test that bit instead of having the CompareNilIC try to collect feedback to speed up the general case (without the undetectable bit being used). Drive-by-fix: Update the type system to match the new handling of undetectable in the runtime. R=danno@chromium.org Review URL: https://codereview.chromium.org/1722193002 Cr-Commit-Position: refs/heads/master@{#34237}
-
- 16 Feb, 2016 2 commits
-
-
rodolph.perfetta authored
Let me know if this is not the right approach Review URL: https://codereview.chromium.org/1698483002 Cr-Commit-Position: refs/heads/master@{#34028}
-
danno authored
This functionality is useful for stubs that need to walk the stack. The new machine operator, LoadParentFramePointer dosn't force the currently compiling method to have a frame in contrast to LoadFramePointer. Instead, it adapts accordingly when frame elision is possible, making efficient stack walks possible without incurring a performance penalty for small stubs that can benefit from frame elision. R=bmeurer@chromium.org LOG=N Review URL: https://codereview.chromium.org/1695313002 Cr-Commit-Position: refs/heads/master@{#34014}
-
- 11 Feb, 2016 1 commit
-
-
bmeurer authored
Add dedicated %LoadLookupSlot, %LoadLookupSlotInsideTypeof, %LoadLookupSlotForCall, %StoreLookupSlot_Sloppy and %StoreLookupSlot_Strict runtime entry points and use them appropriately in the various compilers. This way we can finally drop the machine operators from the JS graph level completely in TurboFan. Also drop the funky JSLoadDynamic operator from TurboFan, which was by now just a small wrapper around the runtime call to %LoadLookupSlot. R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1683103002 Cr-Commit-Position: refs/heads/master@{#33880}
-
- 06 Feb, 2016 2 commits
-
-
jing.bao authored
BUG= Review URL: https://codereview.chromium.org/1627263002 Cr-Commit-Position: refs/heads/master@{#33797}
-
jing.bao authored
BUG= Review URL: https://codereview.chromium.org/1628133002 Cr-Commit-Position: refs/heads/master@{#33796}
-
- 02 Feb, 2016 2 commits
-
-
bmeurer authored
Avoid the hacking in JSIntrinsicLowering and provide a proper simplified operator ObjectIsReceiver instead that is used to implement %_IsJSReceiver which is used by our JavaScript builtins and the JSInliner. R=jarin@chromium.org BUG=v8:4544 LOG=n Review URL: https://codereview.chromium.org/1657863004 Cr-Commit-Position: refs/heads/master@{#33675}
-
jarin authored
This CL removes the Config templatization from the types. It is not necessary anymore, after the HeapTypes have been removed. The CL also changes the type hierarchy - the specific type kinds are not inner classes of the Type class and they do not inherit from Type. This is partly because it seems impossible to make this work without templates. Instead, a new TypeBase class is introduced and all the structural (i.e., non-bitset) types inherit from it. The bitset type still requires the bit-munging hack and some nasty reinterpret-casts to pretend bitsets are of type Type*. Additionally, there is now the same hack for TypeBase - all pointers to the sub-types of TypeBase are reinterpret-casted to Type*. This is to keep the type constructors in inline method definitions (although it is unclear how much that actually buys us). In future, we would like to move to a model where we encapsulate Type* into a class (or possibly use Type where we used to use Type*). This would loosen the coupling between bitset size and pointer size, and eventually we would be able to have more bits. TBR=bradnelson@chromium.org Review URL: https://codereview.chromium.org/1655833002 Cr-Commit-Position: refs/heads/master@{#33656}
-
- 29 Jan, 2016 3 commits
-
-
ahaas authored
The StackSlot operator allows to allocate a spill slot on the stack. We are going to use this operator to pass floats through pointers to c functions, which we need for floating point rounding in the case where the architecture does not provide rounding instructions. R=titzer@chromium.org, v8-arm-ports@googlegroups.com, v8-ppc-ports@googlegroups.com, v8-mips-ports@googlegroups.com Committed: https://crrev.com/7a693437787090d62d937b862e29521debcc5223 Cr-Commit-Position: refs/heads/master@{#33600} Review URL: https://codereview.chromium.org/1645653002 Cr-Commit-Position: refs/heads/master@{#33606}
-
ahaas authored
Revert of [turbofan] Add the StackSlot operator to turbofan. (patchset #4 id:60001 of https://codereview.chromium.org/1645653002/ ) Reason for revert: problems on Mac64 Original issue's description: > [turbofan] Add the StackSlot operator to turbofan. > > The StackSlot operator allows to allocate a spill slot on the stack. We > are going to use this operator to pass floats through pointers to c > functions, which we need for floating point rounding in the case where > the architecture does not provide rounding instructions. > > R=titzer@chromium.org, v8-arm-ports@googlegroups.com, v8-ppc-ports@googlegroups.com, v8-mips-ports@googlegroups.com > > Committed: https://crrev.com/7a693437787090d62d937b862e29521debcc5223 > Cr-Commit-Position: refs/heads/master@{#33600} TBR=titzer@chromium.org,v8-arm-ports@googlegroups.com,v8-mips-ports@googlegroups.com,v8-ppc-ports@googlegroups.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1644283002 Cr-Commit-Position: refs/heads/master@{#33601}
-
ahaas authored
The StackSlot operator allows to allocate a spill slot on the stack. We are going to use this operator to pass floats through pointers to c functions, which we need for floating point rounding in the case where the architecture does not provide rounding instructions. R=titzer@chromium.org, v8-arm-ports@googlegroups.com, v8-ppc-ports@googlegroups.com, v8-mips-ports@googlegroups.com Review URL: https://codereview.chromium.org/1645653002 Cr-Commit-Position: refs/heads/master@{#33600}
-
- 20 Jan, 2016 1 commit
-
-
sigurds authored
* Treat Select nodes as escaping * Correctly void virtual field information after a store to a non-const index * Add a shortcut if all allocates escape * Add a shortcut if no allocates are discovered * Only reduce FrameState/StateValues nodes if they have virtual allocates as input (transitively) * Fix bug in FrameState/StateValues duplication * Add check to verifier: First 3 inputs of FrameState must be StateValues R=mstarzinger@chromium.org BUG=v8:4586 LOG=n Review URL: https://codereview.chromium.org/1583213003 Cr-Commit-Position: refs/heads/master@{#33406}
-
- 16 Jan, 2016 2 commits
-
-
ahaas authored
The new operator converts an int32 input to float32. If the input cannot be represented exactly in float32, the value is rounded using the round-ties-even rounding mode (the default rounding mode). I provide implementations of the new operator for x64, ia32, arm, arm64, mips, mips64, ppc, and ppc64. R=titzer@chromium.org, v8-arm-ports@googlegroups.com, v8-mips-ports@googlegroups.com, v8-ppc-ports@googlegroups.com Review URL: https://codereview.chromium.org/1589363002 Cr-Commit-Position: refs/heads/master@{#33347}
-
ahaas authored
The new operator converts a float32 input to int32 through truncation. I provide implementations of the new operator for x64, ia32, arm, arm64, mips, mips64, and x87. @v8-ppc-ports, can you please take care of the ppc implementation? R=titzer@chromium.org, v8-arm-ports@googlegroups.com, v8-mips-ports@googlegroups.com, weiliang.lin@intel.com Review URL: https://codereview.chromium.org/1583323004 Cr-Commit-Position: refs/heads/master@{#33346}
-
- 11 Jan, 2016 1 commit
-
-
titzer authored
R=bmeurer@chromium.org BUG= Review URL: https://codereview.chromium.org/1578723002 Cr-Commit-Position: refs/heads/master@{#33202}
-
- 05 Jan, 2016 1 commit
-
-
sigurds authored
Deopt support is added on two levels. On the IR level, a new ObjectState node is added, which represenents an object to be materialized. ObjectState nodes appear as inputs of FrameState and StateValues nodes. On the instruction select/code-generation level, the FrameStateDescriptor class handles the nesting introduced by ObjectState, and ensures that deopt code with CAPTURED_OBJECT/DUPLICATED_OBJECT entries are generated similarly to what crankshaft's escape analysis does. Two unittests test correctness of the IR level implementation. Correctness for instruction selection / code generation is tested by mjsunit tests. R=jarin@chromium.org,mstarzinger@chromium.org BUG=v8:4586 LOG=n Review URL: https://codereview.chromium.org/1485183002 Cr-Commit-Position: refs/heads/master@{#33115}
-
- 24 Dec, 2015 1 commit
-
-
jarin authored
Review URL: https://codereview.chromium.org/1544743004 Cr-Commit-Position: refs/heads/master@{#33039}
-
- 16 Dec, 2015 2 commits
-
-
bmeurer authored
Introduce JSCreateIterResultObject operator, as a way to optimize the %_CreateIterResultObject intrinsic, which is used to provide uniform, non-polymorphic result objects for iterators (and generators). We cannot utilize the existing JSCreate operator here, because there's no constructor function for iterator result objects (as required by the spec). R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1531753002 Cr-Commit-Position: refs/heads/master@{#32901}
-
bmeurer authored
The JSCreateClosure operator always produces a function, so the type should reflect that. R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1532503002 Cr-Commit-Position: refs/heads/master@{#32881}
-
- 11 Dec, 2015 1 commit
-
-
ahaas authored
TryTruncateFloat32ToUint64 converts a float32 to a uint64. Additionally it provides an optional second return value which indicates whether the conversion succeeded (i.e. float32 value was within uint64 range) or not. I implemented the new operator on x64, arm64, and mips64. @v8-ppc-ports, can you please take care of the ppc64 implementation of the second output? Additionally I fixed a bug on x64 and mips64 in the implementation of TryTruncateFloat64ToUint64. Cases where the input value was between -1 and 0 were handled incorrectly. R=titzer@chromium.org, v8-arm-ports@googlegroups.com, v8-mips-ports@googlegroups.com Review URL: https://codereview.chromium.org/1512023002 Cr-Commit-Position: refs/heads/master@{#32796}
-
- 10 Dec, 2015 1 commit
-
-
ahaas authored
This operator now provides a second output which indicates whether the conversion from float32 to int64 was successful or not. The second output returns 0 if the conversion fails, or something else if the conversion succeeds. The second output can be ignored, which means that the operator can be used the same as the original operator. I implement the new operator on x64, arm64, and mips64. @v8-ppc-ports, can you please take care of the ppc64 implementation of the second output? R=titzer@chromium.org, v8-arm-ports@googlegroups.com, v8-mips-ports@googlegroups.com Review URL: https://codereview.chromium.org/1504363002 Cr-Commit-Position: refs/heads/master@{#32737}
-
- 09 Dec, 2015 1 commit
-
-
ahaas authored
This operator now provides a second output which indicates whether the conversion from float64 to uint64 was successful or not. The second output returns 0 if the conversion fails, or something else if the conversion succeeds. The second output can be ignored, which means that the operator can be used the same as the original operator. I implement the new operator on x64 and arm64. @v8-mips-ports and @v8-ppc-ports, can you please take care of the mips64 and ppc64 implementation of the second output? R=titzer@chromium.org, v8-arm-ports@googlegroups.com Review URL: https://codereview.chromium.org/1507703002 Cr-Commit-Position: refs/heads/master@{#32705}
-