| 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) {
|
| + 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_
|
|
|