16 HType HType::FromType(
typename T::TypeHandle type) {
17 if (T::Any()->
Is(type))
return HType::Any();
19 if (type->Is(T::SignedSmall()))
return HType::Smi();
20 if (type->Is(T::Number()))
return HType::TaggedNumber();
22 if (type->Is(T::String()))
return HType::String();
23 if (type->Is(T::Boolean()))
return HType::Boolean();
25 if (type->Is(T::Array()))
return HType::JSArray();
26 if (type->Is(
T::Object()))
return HType::JSObject();
27 return HType::Tagged();
33 HType HType::FromType<Type>(
Type* type);
38 HType HType::FromType<HeapType>(Handle<HeapType> type);
42 HType HType::FromValue(Handle<Object> value) {
43 if (value->IsSmi())
return HType::Smi();
45 if (value->IsHeapNumber()) {
47 return IsSmiDouble(n) ? HType::Smi() : HType::HeapNumber();
49 if (value->IsString())
return HType::String();
50 if (value->IsBoolean())
return HType::Boolean();
52 if (value->IsJSArray())
return HType::JSArray();
53 if (value->IsJSObject())
return HType::JSObject();
54 DCHECK(value->IsHeapObject());
55 return HType::HeapObject();
63 #define DEFINE_CASE(Name, mask) \
64 case HType::k##Name: \
static Handle< T > cast(Handle< S > that)
#define DEFINE_CASE(Name, mask)
#define DCHECK(condition)
TypeImpl< ZoneTypeConfig > Type
kSerializedDataOffset Object
OStream & operator<<(OStream &os, const BasicBlockProfiler &p)
static bool IsSmiDouble(double value)
Debugger support for the V8 JavaScript engine.
Handle< Primitive > Null(Isolate *isolate)
Handle< Primitive > Undefined(Isolate *isolate)