| Index: src/ast.cc
|
| diff --git a/src/ast.cc b/src/ast.cc
|
| index 8b6cdcee9feb3fdd623fcc9f45f7f3e3f39afe96..16686af3b8fa8af41eb7dd58815bf4932a82efb5 100644
|
| --- a/src/ast.cc
|
| +++ b/src/ast.cc
|
| @@ -661,7 +661,7 @@ void Property::RecordTypeFeedback(TypeFeedbackOracle* oracle) {
|
| } else if (is_monomorphic_) {
|
| monomorphic_receiver_type_ = oracle->LoadMonomorphicReceiverType(this);
|
| } else if (oracle->LoadIsMegamorphicWithTypeInfo(this)) {
|
| - receiver_types_ = new ZoneMapList(kMaxKeyedPolymorphism);
|
| + receiver_types_ = ZoneMapList::New(ZONE, kMaxKeyedPolymorphism);
|
| oracle->CollectKeyedReceiverTypes(this->id(), receiver_types_);
|
| }
|
| }
|
| @@ -681,7 +681,7 @@ void Assignment::RecordTypeFeedback(TypeFeedbackOracle* oracle) {
|
| // Record receiver type for monomorphic keyed stores.
|
| monomorphic_receiver_type_ = oracle->StoreMonomorphicReceiverType(this);
|
| } else if (oracle->StoreIsMegamorphicWithTypeInfo(this)) {
|
| - receiver_types_ = new ZoneMapList(kMaxKeyedPolymorphism);
|
| + receiver_types_ = ZoneMapList::New(ZONE, kMaxKeyedPolymorphism);
|
| oracle->CollectKeyedReceiverTypes(this->id(), receiver_types_);
|
| }
|
| }
|
| @@ -693,7 +693,7 @@ void CountOperation::RecordTypeFeedback(TypeFeedbackOracle* oracle) {
|
| // Record receiver type for monomorphic keyed stores.
|
| monomorphic_receiver_type_ = oracle->StoreMonomorphicReceiverType(this);
|
| } else if (oracle->StoreIsMegamorphicWithTypeInfo(this)) {
|
| - receiver_types_ = new ZoneMapList(kMaxKeyedPolymorphism);
|
| + receiver_types_ = ZoneMapList::New(ZONE, kMaxKeyedPolymorphism);
|
| oracle->CollectKeyedReceiverTypes(this->id(), receiver_types_);
|
| }
|
| }
|
| @@ -994,7 +994,7 @@ bool RegExpCapture::IsAnchoredAtEnd() {
|
| // output formats are alike.
|
| class RegExpUnparser: public RegExpVisitor {
|
| public:
|
| - RegExpUnparser();
|
| + explicit RegExpUnparser(Zone* zone);
|
| void VisitCharacterRange(CharacterRange that);
|
| SmartPointer<const char> ToString() { return stream_.ToCString(); }
|
| #define MAKE_CASE(Name) virtual void* Visit##Name(RegExp##Name*, void* data);
|
| @@ -1002,12 +1002,13 @@ class RegExpUnparser: public RegExpVisitor {
|
| #undef MAKE_CASE
|
| private:
|
| StringStream* stream() { return &stream_; }
|
| + Zone* zone_;
|
| HeapStringAllocator alloc_;
|
| StringStream stream_;
|
| };
|
|
|
|
|
| -RegExpUnparser::RegExpUnparser() : stream_(&alloc_) {
|
| +RegExpUnparser::RegExpUnparser(Zone* zone) : zone_(zone), stream_(&alloc_) {
|
| }
|
|
|
|
|
| @@ -1047,9 +1048,9 @@ void* RegExpUnparser::VisitCharacterClass(RegExpCharacterClass* that,
|
| if (that->is_negated())
|
| stream()->Add("^");
|
| stream()->Add("[");
|
| - for (int i = 0; i < that->ranges()->length(); i++) {
|
| + for (int i = 0; i < that->ranges(zone_)->length(); i++) {
|
| if (i > 0) stream()->Add(" ");
|
| - VisitCharacterRange(that->ranges()->at(i));
|
| + VisitCharacterRange(that->ranges(zone_)->at(i));
|
| }
|
| stream()->Add("]");
|
| return NULL;
|
| @@ -1152,7 +1153,7 @@ void* RegExpUnparser::VisitEmpty(RegExpEmpty* that, void* data) {
|
|
|
|
|
| SmartPointer<const char> RegExpTree::ToString() {
|
| - RegExpUnparser unparser;
|
| + RegExpUnparser unparser(ZONE);
|
| Accept(&unparser, NULL);
|
| return unparser.ToString();
|
| }
|
|
|