From: bmeurer@chromium.org Date: Wed, 2 Apr 2014 07:01:43 +0000 (+0000) Subject: Add unhandlified versions of Of() and NowOf(). X-Git-Tag: upstream/4.7.83~9876 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e054f080063be7b44b1aa3ff47d8a2cd96df9086;p=platform%2Fupstream%2Fv8.git Add unhandlified versions of Of() and NowOf(). R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/221813002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20423 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/src/types.cc b/src/types.cc index 5998fdc..804ea5e 100644 --- a/src/types.cc +++ b/src/types.cc @@ -249,13 +249,13 @@ int TypeImpl::GlbBitset() { // Most precise _current_ type of a value (usually its class). template typename TypeImpl::TypeHandle TypeImpl::NowOf( - i::Handle value, Region* region) { + i::Object* value, Region* region) { if (value->IsSmi() || - i::HeapObject::cast(*value)->map()->instance_type() == HEAP_NUMBER_TYPE || - i::HeapObject::cast(*value)->map()->instance_type() == ODDBALL_TYPE) { + i::HeapObject::cast(value)->map()->instance_type() == HEAP_NUMBER_TYPE || + i::HeapObject::cast(value)->map()->instance_type() == ODDBALL_TYPE) { return Of(value, region); } - return Class(i::handle(i::HeapObject::cast(*value)->map()), region); + return Class(i::handle(i::HeapObject::cast(value)->map()), region); } diff --git a/src/types.h b/src/types.h index d5e3ca4..42a50b9 100644 --- a/src/types.h +++ b/src/types.h @@ -213,8 +213,11 @@ class TypeImpl : public Config::Base { static TypeHandle Union(TypeHandle type1, TypeHandle type2, Region* reg); static TypeHandle Intersect(TypeHandle type1, TypeHandle type2, Region* reg); + static TypeHandle Of(i::Object* value, Region* region) { + return Config::from_bitset(LubBitset(value), region); + } static TypeHandle Of(i::Handle value, Region* region) { - return Config::from_bitset(LubBitset(*value), region); + return Of(*value, region); } bool Is(TypeImpl* that) { return this == that || this->SlowIs(that); } @@ -231,7 +234,10 @@ class TypeImpl : public Config::Base { // State-dependent versions of Of and Is that consider subtyping between // a constant and its map class. - static TypeHandle NowOf(i::Handle value, Region* region); + static TypeHandle NowOf(i::Object* value, Region* region); + static TypeHandle NowOf(i::Handle value, Region* region) { + return NowOf(*value, region); + } bool NowIs(TypeImpl* that); template bool NowIs(TypeHandle that) { return this->NowIs(*that); } diff --git a/src/typing.cc b/src/typing.cc index dd99d19..3cca0f4 100644 --- a/src/typing.cc +++ b/src/typing.cc @@ -83,7 +83,7 @@ void AstTyper::Run(CompilationInfo* info) { Effect AstTyper::ObservedOnStack(Object* value) { - Type* lower = Type::NowOf(handle(value, isolate()), zone()); + Type* lower = Type::NowOf(value, zone()); return Effect(Bounds(lower, Type::Any(zone()))); }