Chromium Code Reviews| Index: src/full-codegen.h |
| diff --git a/src/full-codegen.h b/src/full-codegen.h |
| index 25e3dba124dfc2f954b5b4dffa90f2e67784443f..58d59862a5dc1703d91d0baf43e4fffde9ed4af4 100644 |
| --- a/src/full-codegen.h |
| +++ b/src/full-codegen.h |
| @@ -470,6 +470,8 @@ class FullCodeGenerator: public AstVisitor { |
| Label* done); |
| void EmitVariableLoad(VariableProxy* proxy); |
| + void EmitAccessor(Expression* expression); |
| + |
| // Expects the arguments and the function already pushed. |
| void EmitResolvePossiblyDirectEval(int arg_count); |
| @@ -804,6 +806,28 @@ class FullCodeGenerator: public AstVisitor { |
| }; |
| +// A map from property names to getter/setter pairs allocated in the zone. |
| +class AccessorTable: public TemplateHashMap<Literal, |
| + ObjectLiteral::Accessors, |
| + ZoneListAllocationPolicy> { |
| + public: |
| + explicit AccessorTable(Zone* zone) : |
| + TemplateHashMap<Literal, |
| + ObjectLiteral::Accessors, |
| + ZoneListAllocationPolicy>(Literal::Match), |
| + zone_(zone) { } |
| + |
| + Iterator lookup(Literal* literal) { |
|
rossberg
2012/03/14 16:29:03
Nit: Shouldn't this be called 'find' and have the
Sven Panne
2012/03/15 07:12:57
In a language with lazy evaluation, yes. In C++ we
|
| + Iterator it = find(literal, true); |
| + if (it->second == NULL) it->second = new(zone_) ObjectLiteral::Accessors(); |
| + return it; |
| + } |
| + |
| + private: |
| + Zone* zone_; |
| +}; |
| + |
| + |
| } } // namespace v8::internal |
| #endif // V8_FULL_CODEGEN_H_ |