Chromium Code Reviews| Index: src/hydrogen.h |
| diff --git a/src/hydrogen.h b/src/hydrogen.h |
| index a1676f7590d07ba4bad7ee794cdff0720e4135d9..759572da2c0c01424e3b4a172f19e090e9355f0b 100644 |
| --- a/src/hydrogen.h |
| +++ b/src/hydrogen.h |
| @@ -2184,6 +2184,8 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor { |
| AST_NODE_LIST(DECLARE_VISIT) |
| #undef DECLARE_VISIT |
| + Type* ToType(Handle<Map> map) { return IC::MapToType<Type>(map, zone()); } |
| + |
| private: |
| // Helpers for flow graph construction. |
| enum GlobalPropertyAccess { |
| @@ -2265,7 +2267,7 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor { |
| class PropertyAccessInfo { |
| public: |
| PropertyAccessInfo(HOptimizedGraphBuilder* builder, |
| - Handle<HeapType> type, |
| + Type* type, |
| Handle<String> name) |
| : lookup_(builder->isolate()), |
| builder_(builder), |
| @@ -2287,15 +2289,15 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor { |
| bool CanLoadAsMonomorphic(SmallMapList* types); |
| Handle<Map> map() { |
| - if (type_->Is(HeapType::Number())) { |
| + if (type_->Is(Type::Number())) { |
| Context* context = current_info()->closure()->context(); |
| context = context->native_context(); |
| return handle(context->number_function()->initial_map()); |
| - } else if (type_->Is(HeapType::Boolean())) { |
| + } else if (type_->Is(Type::Boolean())) { |
| Context* context = current_info()->closure()->context(); |
| context = context->native_context(); |
| return handle(context->boolean_function()->initial_map()); |
| - } else if (type_->Is(HeapType::String())) { |
| + } else if (type_->Is(Type::String())) { |
| Context* context = current_info()->closure()->context(); |
| context = context->native_context(); |
| return handle(context->string_function()->initial_map()); |
| @@ -2303,12 +2305,12 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor { |
| return type_->AsClass(); |
| } |
| } |
| - Handle<HeapType> type() const { return type_; } |
| + Type* type() const { return type_; } |
| Handle<String> name() const { return name_; } |
| bool IsJSObjectFieldAccessor() { |
| int offset; // unused |
| - return Accessors::IsJSObjectFieldAccessor(type_, name_, &offset); |
| + return Accessors::IsJSObjectFieldAccessor<Type>(type_, name_, &offset); |
|
rossberg
2014/02/03 16:54:05
Was it necessary to specify the template argument?
|
| } |
| bool GetJSObjectFieldAccess(HObjectAccess* access) { |
| @@ -2317,8 +2319,8 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor { |
| return true; |
| } |
| int offset; |
| - if (Accessors::IsJSObjectFieldAccessor(type_, name_, &offset)) { |
| - if (type_->Is(HeapType::String())) { |
| + if (Accessors::IsJSObjectFieldAccessor<Type>(type_, name_, &offset)) { |
| + if (type_->Is(Type::String())) { |
| ASSERT(name_->Equals(isolate()->heap()->length_string())); |
| *access = HObjectAccess::ForStringLength(); |
| } else { |
| @@ -2338,6 +2340,7 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor { |
| HObjectAccess access() { return access_; } |
| private: |
| + Type* ToType(Handle<Map> map) { return builder_->ToType(map); } |
| Isolate* isolate() { return lookup_.isolate(); } |
| CompilationInfo* current_info() { return builder_->current_info(); } |
| @@ -2358,7 +2361,7 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor { |
| LookupResult lookup_; |
| HOptimizedGraphBuilder* builder_; |
| - Handle<HeapType> type_; |
| + Type* type_; |
| Handle<String> name_; |
| Handle<JSObject> holder_; |
| Handle<JSFunction> accessor_; |