| Index: src/ast.cc
|
| diff --git a/src/ast.cc b/src/ast.cc
|
| index 2077f87d74153ba31e6fc94250a89508c3aeddda..8f69bd705923b7e9136d3881ebffca5f4507d9e8 100644
|
| --- a/src/ast.cc
|
| +++ b/src/ast.cc
|
| @@ -273,7 +273,8 @@ void ObjectLiteral::CalculateEmitStore(Zone* zone) {
|
| uint32_t hash = literal->Hash();
|
| // If the key of a computed property is in the table, do not emit
|
| // a store for the property later.
|
| - if (property->kind() == ObjectLiteral::Property::COMPUTED &&
|
| + if ((property->kind() == ObjectLiteral::Property::MATERIALIZED_LITERAL ||
|
| + property->kind() == ObjectLiteral::Property::COMPUTED) &&
|
| table.Lookup(literal, hash, false, allocator) != NULL) {
|
| property->set_emit_store(false);
|
| } else {
|
| @@ -857,12 +858,13 @@ bool RegExpCapture::IsAnchoredAtEnd() {
|
| // in as many cases as possible, to make it more difficult for incorrect
|
| // parses to look as correct ones which is likely if the input and
|
| // output formats are alike.
|
| -class RegExpUnparser: public RegExpVisitor {
|
| +class RegExpUnparser V8_FINAL : public RegExpVisitor {
|
| public:
|
| explicit RegExpUnparser(Zone* zone);
|
| void VisitCharacterRange(CharacterRange that);
|
| SmartArrayPointer<const char> ToString() { return stream_.ToCString(); }
|
| -#define MAKE_CASE(Name) virtual void* Visit##Name(RegExp##Name*, void* data);
|
| +#define MAKE_CASE(Name) virtual void* Visit##Name(RegExp##Name*, \
|
| + void* data) V8_OVERRIDE;
|
| FOR_EACH_REG_EXP_TREE_TYPE(MAKE_CASE)
|
| #undef MAKE_CASE
|
| private:
|
|
|