Commit Graph

92 Commits

Author SHA1 Message Date
neis@chromium.org
a7eb593147 Reland "Refine expression typing, esp. by propagating range information."
This relands commit 24552.

R=rossberg@chromium.org
BUG=

Review URL: https://codereview.chromium.org/653693002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24609 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 16:27:26 +00:00
neis@chromium.org
7045592947 Get rid of code duplication by computing int Lub using range Lub.
R=rossberg@chromium.org
BUG=

Review URL: https://codereview.chromium.org/616563002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24320 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-30 10:34:54 +00:00
bmeurer@chromium.org
3eebdc3264 Replace OStream with std::ostream.
Review URL: https://codereview.chromium.org/618643002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24319 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-30 10:29:32 +00:00
neis@chromium.org
6fd04d829e Redesign of the internal type system.
Besides addressing a fundamental flaw, this significantly simplifies
several aspects of the system.  The downside is a loss of precision
and a loss of algebraic properties.

Range types are now fully implemented.

R=rossberg@chromium.org
BUG=

Review URL: https://codereview.chromium.org/558193003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24163 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-24 07:33:51 +00:00
rossberg@chromium.org
5d520f9ed1 Re-reland "Use unsigned type bitsets to limit undefined behaviour"
Change: make bitset uint32_t, to avoid weird sign extension bugs on Win64.

BUG=
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/577563002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23978 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-16 12:58:43 +00:00
rossberg@chromium.org
2dbd871eb1 Re-revert "Use unsigned type bitsets to limit undefined behaviour"
...and the various debug CLs.

R=machenbach@chromium.org
BUG=

Review URL: https://codereview.chromium.org/564413004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23955 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-15 15:49:24 +00:00
rossberg@chromium.org
221b284570 Explicitly mask enum values to work around probable VS/Win64 compiler bug
TBR=svenpanne@chromium.org
BUG=

Review URL: https://codereview.chromium.org/564413003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23947 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-15 13:04:44 +00:00
rossberg@chromium.org
716b7ef798 Make type bitsets explicitly unsigned
TBR=ulan@chromium.org
BUG=

Review URL: https://codereview.chromium.org/556733003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23943 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-15 12:06:14 +00:00
rossberg@chromium.org
06e826493a Moar prints
TBR=ulan@chromium.org
BUG=

Review URL: https://codereview.chromium.org/567363002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23941 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-15 11:19:20 +00:00
rossberg@chromium.org
21e0e00ae7 Reland "Use unsigned type bitsets to limit undefined behaviour"
Temporary debug attempt; adds output to failing test in test-types.cc, otherwise unchanged.

Windows f

R=ulan@chromium.org
BUG=

Review URL: https://codereview.chromium.org/567333002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23936 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-15 09:40:23 +00:00
ulan@chromium.org
c44a69d985 Revert r23916, r23917 for breaking 64-bit tests.
"Use unsigned type bitsets to limit undefined behaviour".

TBR=rossberg@chromium.org

Review URL: https://codereview.chromium.org/563283003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23922 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-12 16:13:05 +00:00
rossberg@chromium.org
98dc857e2f Use unsigned type bitsets to limit undefined behaviour
R=bmeurer@chromium.org, svenpanne@chromium.org
BUG=

Review URL: https://codereview.chromium.org/555153003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23916 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-12 13:03:53 +00:00
mstarzinger@chromium.org
4bee89e03c Fix typed lowering of ToBoolean on NaN input.
R=rossberg@chromium.org
TEST=webkit/convert-nan-to-bool

Review URL: https://codereview.chromium.org/565493003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23875 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-11 12:38:16 +00:00
neis@chromium.org
c972e8e213 Extend some operations to range types.
This is a reland of 22945, which failed to build on Windows due to
(some versions of?) Visual Studio lacking copysign().

R=rossberg@chromium.org
BUG=

Review URL: https://codereview.chromium.org/448093002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22977 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-07 15:30:16 +00:00
neis@chromium.org
7692ec62dc Revert "Extend some operations to range types."
This reverts commit 22945.  Turns out Visual Studio doesn't have copysign().

TBR=rossberg@chromium.org
BUG=

Review URL: https://codereview.chromium.org/450473002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22946 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 17:43:55 +00:00
neis@chromium.org
86759140f0 Extend some operations to range types.
This is a reland of 22934, which failed to build on Windows due to a missing include, and on ARM due to a name clash with some predefined constants.

R=rossberg@chromium.org
BUG=

Review URL: https://codereview.chromium.org/444023002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22945 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 17:23:47 +00:00
neis@chromium.org
19d07b2a9b Revert "Extend some operations to range types."
This reverts 22934.

TBR=rossberg@chromium.org
BUG=

Review URL: https://codereview.chromium.org/443123002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22936 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 14:09:21 +00:00
neis@chromium.org
a6ad240b91 Extend some operations to range types.
R=rossberg@chromium.org
BUG=

Review URL: https://codereview.chromium.org/437393005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22934 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 13:51:38 +00:00
mstarzinger@chromium.org
df7057b3ce Add convenience method to print types for debugging.
R=titzer@chromium.org, svenpanne@chromium.org

Review URL: https://codereview.chromium.org/435403002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22908 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 09:26:49 +00:00
neis@chromium.org
f771870229 Remove obsolete declaration that broke Windows build.
TBR=hpayer@chromium.org
BUG=

Review URL: https://codereview.chromium.org/440393002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22904 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 08:49:56 +00:00
bmeurer@chromium.org
11fb976bf4 Revert "Unbreak build with clang."
This reverts commit r22878 and fixes the actual bug instead.

R=hpayer@chromium.org

Review URL: https://codereview.chromium.org/446573002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22880 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-05 14:19:22 +00:00
rossberg@chromium.org
cae6842a74 Undo some unintended changes from the Turbofan merge
R=mstarzinger@chromium.org
BUG=

Review URL: https://codereview.chromium.org/435423002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22873 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-05 13:19:32 +00:00
bmeurer@chromium.org
d07a2eb806 Rename ASSERT* to DCHECK*.
This way we don't clash with the ASSERT* macros
defined by GoogleTest, and we are one step closer
to being able to replace our homegrown base/ with
base/ from Chrome.

R=jochen@chromium.org, svenpanne@chromium.org

Review URL: https://codereview.chromium.org/430503007

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22812 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-04 11:34:54 +00:00
danno@chromium.org
a1383e2250 Land the Fan (disabled)
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/426233002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22709 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-30 13:54:45 +00:00
neis@chromium.org
61e1994f83 Minor clarifications and simplifications as well as additional checks.
R=rossberg@chromium.org
BUG=

Review URL: https://codereview.chromium.org/417553003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22573 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-23 17:17:48 +00:00
neis@chromium.org
e999cf2857 Revert "Minor clarifications and simplifications as well as additional checks."
This reverts commit d32eacbdea3fc0c119da06abe95b07a83c67aa48.

TBR=rossberg@chromium.org
BUG=

Review URL: https://codereview.chromium.org/410083005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22569 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-23 15:39:08 +00:00
neis@chromium.org
6c67275fa0 Minor clarifications and simplifications as well as additional checks.
R=rossberg@chromium.org
BUG=

Review URL: https://codereview.chromium.org/409743004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22568 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-23 15:30:34 +00:00
neis@chromium.org
f529000f7f Fix Handle-related bug in RangeType constructor.
R=rossberg@chromium.org
BUG=

Review URL: https://codereview.chromium.org/415603002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22564 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-23 14:11:30 +00:00
neis@chromium.org
6176dee6ea Add constructor for range types.
R=rossberg@chromium.org
BUG=

Review URL: https://codereview.chromium.org/409543004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22535 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-22 17:33:22 +00:00
svenpanne@chromium.org
d7934d1fbe Start using OStreams.
Note that until everything is OStream-based, there are a few places
where we have to do some impedance matching. A few accessors had to be
const-corrected on the way.

R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/334763003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22179 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-03 07:18:30 +00:00
jochen@chromium.org
56a486c322 Use full include paths everywhere
- this avoids using relative include paths which are forbidden by the style guide
- makes the code more readable since it's clear which header is meant
- allows for starting to use checkdeps

BUG=none
R=jkummerow@chromium.org, danno@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/304153016

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21625 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-03 08:12:43 +00:00
rossberg@chromium.org
68a1a59556 Remove cpp hack to avoid link failures on Windows
TBR=yangguo@chromium.org
BUG=

Review URL: https://codereview.chromium.org/298133005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21532 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-27 14:26:32 +00:00
rossberg@chromium.org
7ac892c8bd Establish distributivity for type union & intersection
This requires introducing proper bounds on all leaf types, so that intersection between bitsets and these types can be accurately represented. Extending a union also becomes more involved.

(On the upside, the modified union/intersect algorithm would now allow support for proper variance for function types.)

Not sure if it is worth landing this. Distributivity isn't really a crucial property for our use cases. It seems fine if intersection is slightly lossy.

R=bmeurer@chromium.org, jarin@chromium.org
BUG=

Review URL: https://codereview.chromium.org/251753005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21528 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-27 13:52:31 +00:00
rossberg@chromium.org
dbf7d8528c Various extensions to types
R=bmeurer@chromium.org
BUG=

Review URL: https://codereview.chromium.org/296213005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21494 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-26 13:10:52 +00:00
bmeurer@chromium.org
779e87b87a Track up to 5 stable maps as field type.
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/240813002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20831 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-17 08:22:22 +00:00
rossberg@chromium.org
28912cae37 Implement structural function and array types
Just wanted to add two constructors to a datatype, how ugly can it get?

R=bmeurer@chromium.org, jarin@chromium.org
BUG=

Committed: https://code.google.com/p/v8/source/detail?r=20809

Committed: https://code.google.com/p/v8/source/detail?r=20815

Committed: https://code.google.com/p/v8/source/detail?r=20818

Review URL: https://codereview.chromium.org/228263005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20819 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-16 16:36:27 +00:00
rossberg@chromium.org
926ec656de Implement structural function and array types
Just wanted to add two constructors to a datatype, how ugly can it get?

R=bmeurer@chromium.org, jarin@chromium.org
BUG=

Committed: https://code.google.com/p/v8/source/detail?r=20809

Committed: https://code.google.com/p/v8/source/detail?r=20815

Review URL: https://codereview.chromium.org/228263005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20817 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-16 16:16:37 +00:00
rossberg@chromium.org
e3e81d85bb Revert "Implement structural function and array types"
TBR=jarin@chromium.org
BUG=

Review URL: https://codereview.chromium.org/237963016

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20816 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-16 15:59:39 +00:00
rossberg@chromium.org
6782d9cea3 Implement structural function and array types
Just wanted to add two constructors to a datatype, how ugly can it get?

R=bmeurer@chromium.org, jarin@chromium.org
BUG=

Committed: https://code.google.com/p/v8/source/detail?r=20809

Review URL: https://codereview.chromium.org/228263005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20815 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-16 15:42:22 +00:00
rossberg@chromium.org
a947aeb315 Revert "Implement structural function and array types"
TBR=jarin@chromium.org
BUG=

Review URL: https://codereview.chromium.org/240143003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20810 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-16 13:57:25 +00:00
rossberg@chromium.org
7de4c1c63f Implement structural function and array types
Just wanted to add two constructors to a datatype, how ugly can it get?

R=bmeurer@chromium.org, jarin@chromium.org
BUG=

Review URL: https://codereview.chromium.org/228263005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20809 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-16 13:44:26 +00:00
rossberg@chromium.org
7b7f787e3b Re-reland "More tests for Union & Intersect"
R=jarin@chromium.org
BUG=

Review URL: https://codereview.chromium.org/237143002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20733 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-14 15:35:36 +00:00
rossberg@chromium.org
b73257b7a3 Revert "Reland "More tests for Union & Intersect""
Need to reproduce wrong result only occurring with ASAN.

TBR=jarin@chromium.org
BUG=

Review URL: https://codereview.chromium.org/236873002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20712 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-14 09:46:56 +00:00
rossberg@chromium.org
a3d743b470 Reland "More tests for Union & Intersect"
Fixes size approximation in Intersect. Also lowers the number of fuzzed types in test, to address time-outs.

R=bmeurer@chromium.org
BUG=

Review URL: https://codereview.chromium.org/226523004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20706 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-14 08:46:39 +00:00
dcarney@chromium.org
ee9f7f8942 Revert "More tests for Union & Intersect"
This reverts r20684.

TBR=rossberg@chromium.org

BUG=

Review URL: https://codereview.chromium.org/235133002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20687 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-11 12:33:20 +00:00
rossberg@chromium.org
80d8460a20 More tests for Union & Intersect
Some fixes of corner cases on the way

R=bmeurer@chromium.org
BUG=

Review URL: https://codereview.chromium.org/230923005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20684 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-11 11:53:35 +00:00
bmeurer@chromium.org
9a544e1887 Inline TypeImpl::NowContains().
R=rossberg@chromium.org

Review URL: https://codereview.chromium.org/234743003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20677 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-11 09:24:35 +00:00
rossberg@chromium.org
cf4eddd3f8 Yet more type system tests
R=bmeurer@chromium.org
BUG=

Review URL: https://codereview.chromium.org/232843002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20649 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-10 11:49:18 +00:00
bmeurer@chromium.org
a0ac88db82 Fix various bugs in the type systems, and improve test coverage.
R=rossberg@chromium.org

Review URL: https://codereview.chromium.org/230463003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20609 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-09 11:12:15 +00:00
rossberg@chromium.org
19f924a2ae Reland "Refactoring to allow adding new structured types"
Same as before, except that it's now using a void array instead of a struct, to shut up Clang warnings.

R=bmeurer@chromium.org
BUG=

Review URL: https://codereview.chromium.org/224733023

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20574 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-08 10:50:56 +00:00