- 02 Dec, 2015 2 commits
-
-
bmeurer authored
Also remove the ResultMode from ToBooleanStub and always return true or false and use the same mechanism in fullcodegen. This is in preparation for adding ToBoolean hints to TurboFan. Drive-by-fix: We can use the power of the ToBooleanIC in TurboFan now that the ResultMode is gone (and the runtime always returns true or false from the miss handler). R=mstarzinger@chromium.org BUG=v8:4583 LOG=n Review URL: https://codereview.chromium.org/1491223002 Cr-Commit-Position: refs/heads/master@{#32524}
-
bmeurer authored
We can constant fold %_IsJSReceiver(x) based on whether x is always a receiver or can never be a receiver. This is important as %_IsJSReceiver is inserted by the JSInliner. R=jarin@chromium.org BUG=v8:4544 LOG=n Review URL: https://codereview.chromium.org/1486383003 Cr-Commit-Position: refs/heads/master@{#32519}
-
- 30 Nov, 2015 2 commits
-
-
bmeurer authored
This way we avoid the %_IsSmi magic that is required in TurboFan to (efficiently) check abitrary context slots for smi 0. Checking against "the hole" is common in the AstGraphBuilder and "the hole" is also used to mark other context slots as not initialized. R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1484723003 Cr-Commit-Position: refs/heads/master@{#32407}
-
bmeurer authored
Add initial support to optimize certain "prototype" loads from known JSFunctions which have a prototype. This includes an appropriate typing rule plus a matching rule for typed lowering. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1482213002 Cr-Commit-Position: refs/heads/master@{#32390}
-
- 27 Nov, 2015 4 commits
-
-
bmeurer authored
Previously all contexts had a link to the global object, but what is required in most cases (except for the global load, store and delete case) is the native context. This also removes the second dummy global object that was still linked to every native context. We will add a different mechanism to ensure that builtins do not pollute the actual global object during bootstrapping. Drive-by-fix: Unify some MacroAssembler magic and drop obsolete stuff. CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_nosnap_rel R=yangguo@chromium.org,mstarzinger@chromium.org Committed: https://crrev.com/d290f204938295bfecc5c8e645ccfcff6e80ddb8 Cr-Commit-Position: refs/heads/master@{#32375} Review URL: https://codereview.chromium.org/1480003002 Cr-Commit-Position: refs/heads/master@{#32381}
-
ahaas authored
The TruncateFloat32ToUint64 operator converts a float32 to an uint64 using round-to-zero rounding mode. If the input value is outside uint64 range, then the result depends on the architecture. I provide an implementation for x64 and arm64. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1479713003 Cr-Commit-Position: refs/heads/master@{#32379}
-
machenbach authored
Revert of [runtime] Replace global object link with native context link in all contexts. (patchset #3 id:40001 of https://codereview.chromium.org/1480003002/ ) Reason for revert: [Sheriff] Breaks: https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap/builds/5472 Original issue's description: > [runtime] Replace global object link with native context link in all contexts. > > Previously all contexts had a link to the global object, but what is > required in most cases (except for the global load, store and delete > case) is the native context. > > This also removes the second dummy global object that was still linked > to every native context. We will add a different mechanism to ensure > that builtins do not pollute the actual global object during > bootstrapping. > > Drive-by-fix: Unify some MacroAssembler magic and drop obsolete stuff. > > R=yangguo@chromium.org > > Committed: https://crrev.com/d290f204938295bfecc5c8e645ccfcff6e80ddb8 > Cr-Commit-Position: refs/heads/master@{#32375} TBR=yangguo@chromium.org,mstarzinger@chromium.org,bmeurer@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1478303002 Cr-Commit-Position: refs/heads/master@{#32377}
-
bmeurer authored
Previously all contexts had a link to the global object, but what is required in most cases (except for the global load, store and delete case) is the native context. This also removes the second dummy global object that was still linked to every native context. We will add a different mechanism to ensure that builtins do not pollute the actual global object during bootstrapping. Drive-by-fix: Unify some MacroAssembler magic and drop obsolete stuff. R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1480003002 Cr-Commit-Position: refs/heads/master@{#32375}
-
- 26 Nov, 2015 3 commits
-
-
ahaas authored
The TruncateFloat32ToInt64 operator converts a float32 to an int64 using the round-to-zero rounding mode (truncate). If the input value is outside the int64 range, then the result depends on the architecture. I implemented the operator on x64, arm64, and mips64. R=titzer@chromium.org, jacob.bramley@arm.com Committed: https://crrev.com/1df1066c3c77464d2a68d7c8d501a5a0f3ad195a Cr-Commit-Position: refs/heads/master@{#32315} Review URL: https://codereview.chromium.org/1476063002 Cr-Commit-Position: refs/heads/master@{#32325}
-
ahaas authored
Revert of [turbofan] Implemented the TruncateFloat32ToInt64 TurboFan operator. (patchset #1 id:1 of https://codereview.chromium.org/1476063002/ ) Reason for revert: Unexpected error occurred. Original issue's description: > [turbofan] Implemented the TruncateFloat32ToInt64 TurboFan operator. > > The TruncateFloat32ToInt64 operator converts a float32 to an int64 using > the round-to-zero rounding mode (truncate). If the input value is > outside the int64 range, then the result depends on the architecture. I > implemented the operator on x64, arm64, and mips64. > > R=titzer@chromium.org, jacob.bramley@arm.com > > Committed: https://crrev.com/1df1066c3c77464d2a68d7c8d501a5a0f3ad195a > Cr-Commit-Position: refs/heads/master@{#32315} TBR=jacob.bramley@arm.com,titzer@chromium.org,v8-mips-ports@googlegroups.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1475343002 Cr-Commit-Position: refs/heads/master@{#32316}
-
ahaas authored
The TruncateFloat32ToInt64 operator converts a float32 to an int64 using the round-to-zero rounding mode (truncate). If the input value is outside the int64 range, then the result depends on the architecture. I implemented the operator on x64, arm64, and mips64. R=titzer@chromium.org, jacob.bramley@arm.com Review URL: https://codereview.chromium.org/1476063002 Cr-Commit-Position: refs/heads/master@{#32315}
-
- 25 Nov, 2015 7 commits
-
-
ahaas authored
The Float32RoundTiesEven operator rounds float32 numbers towards the nearest integer. If the distance to two integers is the same, then the result is the even integer. This is the default rounding mode of the ieee 754 floating point standard. I implemented the optional Float32RoundTiesEven operator on x64, ia32, arm, and arm64. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1477753002 Cr-Commit-Position: refs/heads/master@{#32308}
-
ahaas authored
The Float32RoundTruncate operator rounds float32 numbers towards zero. The operator is currently implemented on x64, ia32, arm, and arm64. Additionally I added support for the float32 vrintz, vrintn, and vrinta instructions to the arm simulator. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1468303005 Cr-Commit-Position: refs/heads/master@{#32301}
-
machenbach authored
Reland of [turbofan] Introduce proper JSCreateLiteralRegExp operator. (patchset #1 id:1 of https://codereview.chromium.org/1472423002/ ) Reason for revert: [Sheriff] Wrong revert. Original issue's description: > Revert of [turbofan] Introduce proper JSCreateLiteralRegExp operator. (patchset #2 id:20001 of https://codereview.chromium.org/1475973002/ ) > > Reason for revert: > Broke "V8 Linux64 GC Stress - custom snapshot". > > http://build.chromium.org/p/client.v8/builders/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot/builds/2824 > > Original issue's description: > > [turbofan] Introduce proper JSCreateLiteralRegExp operator. > > > > This adds a new JavaScript level operator for regexp literal creation, > > similar to what we already have for array and object literals. This > > once gets lowered to a call to the FastCloneRegExpStub always. > > > > R=mstarzinger@chromium.org > > > > Committed: https://crrev.com/8659c5d1d287177369ce179a8d0b910192d840d9 > > Cr-Commit-Position: refs/heads/master@{#32288} > > TBR=mstarzinger@chromium.org,bmeurer@chromium.org > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > > Committed: https://crrev.com/168683d270d44f05f28acaf7d34c32d0250d2a4c > Cr-Commit-Position: refs/heads/master@{#32292} TBR=mstarzinger@chromium.org,bmeurer@chromium.org,ishell@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1478823002 Cr-Commit-Position: refs/heads/master@{#32293}
-
ishell authored
Revert of [turbofan] Introduce proper JSCreateLiteralRegExp operator. (patchset #2 id:20001 of https://codereview.chromium.org/1475973002/ ) Reason for revert: Broke "V8 Linux64 GC Stress - custom snapshot". http://build.chromium.org/p/client.v8/builders/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot/builds/2824 Original issue's description: > [turbofan] Introduce proper JSCreateLiteralRegExp operator. > > This adds a new JavaScript level operator for regexp literal creation, > similar to what we already have for array and object literals. This > once gets lowered to a call to the FastCloneRegExpStub always. > > R=mstarzinger@chromium.org > > Committed: https://crrev.com/8659c5d1d287177369ce179a8d0b910192d840d9 > Cr-Commit-Position: refs/heads/master@{#32288} TBR=mstarzinger@chromium.org,bmeurer@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1472423002 Cr-Commit-Position: refs/heads/master@{#32292}
-
bmeurer authored
This adds a new JavaScript level operator for regexp literal creation, similar to what we already have for array and object literals. This once gets lowered to a call to the FastCloneRegExpStub always. R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1475973002 Cr-Commit-Position: refs/heads/master@{#32288}
-
ahaas authored
The Float32RoundUp operator rounds float32 numbers towards infinity. The operator is currently implemented on x64, ia32, arm, and arm64. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1474963002 Cr-Commit-Position: refs/heads/master@{#32262}
-
ahaas authored
I implemented the optional Float32RoundDown operator on x64, ia32, arm, and arm64. For arm I also had to adjust the simulator. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1471913006 Cr-Commit-Position: refs/heads/master@{#32261}
-
- 24 Nov, 2015 1 commit
-
-
bmeurer authored
We use comparisons with the_hole to implement temporal dead zones, so we should also optimize those, as they currently turn into CompareIC calls. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1473593002 Cr-Commit-Position: refs/heads/master@{#32198}
-
- 20 Nov, 2015 2 commits
-
-
bmeurer authored
Introduce a JSCreateArray operator that represents the Array constructor, and lower call and construct calls to the Array constructor to JSCreateArray. Currently we don't yet replace that with an inline allocation, but always use the specialized stubs for the Array constructor. This saves a lot of unnecessary deopts and elements transitions because now we can actually consume the allocation site feedback for the transitions. R=mstarzinger@chromium.org BUG=v8:4470 LOG=n Review URL: https://codereview.chromium.org/1466643002 Cr-Commit-Position: refs/heads/master@{#32145}
-
ahaas authored
R=titzer@chromium.org Review URL: https://codereview.chromium.org/1458423002 Cr-Commit-Position: refs/heads/master@{#32139}
-
- 19 Nov, 2015 2 commits
-
-
ahaas authored
The TruncateFloat64ToUint64 operator converts a float64 to an uint64 using round-to-zero rounding mode (truncate). If the input value is outside uint64 range, then the result depends on the architecture. I provide an implementation for x64 and arm64. @v8-ppc-ports and @v8-mips-ports, can you do the implementations for ppc64 and mips64? R=titzer@chromium.org Review URL: https://codereview.chromium.org/1457373002 Cr-Commit-Position: refs/heads/master@{#32127}
-
ahaas authored
The ChangeFloat64ToInt64 operator changes the representation of a float64 input value to int64 if the input value can be represented exactly on int64. Otherwise the result is currently undefined. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1455983002 Cr-Commit-Position: refs/heads/master@{#32102}
-
- 17 Nov, 2015 2 commits
-
-
bmeurer authored
Also properly support loading from holey double element backing stores in JSNativeContextSpecialization. This adds a new simplified operator NumberIsHoleNaN, which checks whether a certain value is the special NaN that we use to encode "the hole" in holey double element backing stores. R=jarin@chromium.org BUG=v8:4470 LOG=n Review URL: https://codereview.chromium.org/1448343002 Cr-Commit-Position: refs/heads/master@{#32039}
-
ahaas authored
and ppc64. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1438013003 Cr-Commit-Position: refs/heads/master@{#32031}
-
- 16 Nov, 2015 2 commits
-
-
ahaas authored
The TiesEven rounding mode rounds float64 numbers to the nearest integer. If there are two nearest integers, then the number is rounded to the even one. This is the default rounding mode according to IEEE~754. I implemented the operator on ia32, x64, arm, arm64, mips, and mips64. I think there is a bug in the current implementation of the ppc simulator, which kept me from implementing the operator on ppc. According to my understanding of the ppc instruction manual, the FRIN instruction provides the right behavior for Float64RoundTiesEven. In the simulator, however, FRIN provides a different semantics. If there are two nearest integers, then the simulator returns the one which is further away form 0. Review URL: https://codereview.chromium.org/1440293002 Cr-Commit-Position: refs/heads/master@{#32005}
-
ahaas authored
I implemented it on x64, ia32, arm, arm64, mips, mips64, and ppc. Review URL: https://codereview.chromium.org/1444583002 Cr-Commit-Position: refs/heads/master@{#32004}
-
- 11 Nov, 2015 1 commit
-
-
ahaas authored
I don't see obvious implementations for mips64 and ppc64, so I would need help for these two platforms. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1436943002 Cr-Commit-Position: refs/heads/master@{#31946}
-
- 10 Nov, 2015 3 commits
-
-
ahaas authored
R=titzer@chromium.org Review URL: https://codereview.chromium.org/1435603003 Cr-Commit-Position: refs/heads/master@{#31929}
-
ahaas authored
Popcnt is implemented as an optional operator, which is only implementd by x64 at the moment. Review URL: https://codereview.chromium.org/1424173006 Cr-Commit-Position: refs/heads/master@{#31928}
-
ahaas authored
Ctz is implemented as an optional operator at the moment, which is only implemented by x64 at the moment. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1421163005 Cr-Commit-Position: refs/heads/master@{#31912}
-
- 09 Nov, 2015 1 commit
-
-
mstarzinger authored
This switches loading and storing of the message object within the Isolate to use JavaScript operators built by the JSOperatorBuilder instead of machine operators. This is a preparation for a stricter representation selection for loads and stores. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1412443010 Cr-Commit-Position: refs/heads/master@{#31879}
-
- 06 Nov, 2015 1 commit
-
-
ahaas authored
R=titzer@chromium.org Review URL: https://codereview.chromium.org/1413463009 Cr-Commit-Position: refs/heads/master@{#31858}
-
- 05 Nov, 2015 2 commits
-
-
bmeurer authored
This inserts a new bit set type Function, which is used to represent JSFunctions, and uses that type in typed lowering to optimize calls to use the CallFunction builtin directly. Also allows for better typing of the typeof operator, which can infern "function" for JSFunctions properly. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1410343016 Cr-Commit-Position: refs/heads/master@{#31827}
-
bmeurer authored
TurboFan didn't fully support the relevant ES6 type conversion intrinsics like %_ToNumber, %_ToLength, %_ToName, %_ToString and %_ToInteger until now, we always went to the runtime instead. These intrinsics are now well supported in TurboFan, and we are even able to generate quite decent code in some cases. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1428243003 Cr-Commit-Position: refs/heads/master@{#31820}
-
- 04 Nov, 2015 2 commits
-
-
bmeurer authored
We don't need to distinguish between signed and unsigned integral representations in the big boy type system. It actually even hurts in some cases. The representation is only about the way the values are mapped to bits in memory/registers, but the interpretation of the bits is specified by the semantic dimension. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1416953006 Cr-Commit-Position: refs/heads/master@{#31771}
-
bmeurer authored
R=jarin@chromium.org Review URL: https://codereview.chromium.org/1422623013 Cr-Commit-Position: refs/heads/master@{#31770}
-
- 03 Nov, 2015 1 commit
-
-
ahaas authored
Review URL: https://codereview.chromium.org/1424333002 Cr-Commit-Position: refs/heads/master@{#31752}
-
- 02 Nov, 2015 1 commit
-
-
mstarzinger authored
This moves the optimization for variables loads targeting lookup slots in DYNAMIC_GLOBAL and DYNAMIC_LOCAL mode into the AstGraphBuilder. This way we implicitly get all optimizations that target global loads and context loads for free. R=bmeurer@chromium.org BUG=v8:4513 LOG=n Review URL: https://codereview.chromium.org/1424943008 Cr-Commit-Position: refs/heads/master@{#31713}
-
- 30 Oct, 2015 1 commit
-
-
bmeurer authored
Adds new Guard[Type] common operator, which takes value and control inputs and records a guaranty that a certain value has a certain type in that control path. This is some kind of ad-hoc SSI similar to what we have to do in Crankshaft in some places. Also introduces an ObjectIsNumber simplified operator, which checks whether a certain value is a number (either a Smi or a HeapNumber). This doesn't yet support transitioning stores to double fields, which require support for allocating mutable heap numbers. R=jarin@chromium.org BUG=v8:4470 LOG=n Review URL: https://codereview.chromium.org/1420283009 Cr-Commit-Position: refs/heads/master@{#31675}
-