| Index: src/hydrogen.h
|
| diff --git a/src/hydrogen.h b/src/hydrogen.h
|
| index a7f5025c5e545400f2b206477746c991dc2dc0ae..63948c42eb3032f82a0ac86ea67134e14c6943a5 100644
|
| --- a/src/hydrogen.h
|
| +++ b/src/hydrogen.h
|
| @@ -77,7 +77,7 @@ class HBasicBlock: public ZoneObject {
|
| return &deleted_phis_;
|
| }
|
| void RecordDeletedPhi(int merge_index) {
|
| - deleted_phis_.Add(merge_index);
|
| + deleted_phis_.Add(merge_index, zone());
|
| }
|
| HBasicBlock* dominator() const { return dominator_; }
|
| HEnvironment* last_environment() const { return last_environment_; }
|
| @@ -158,7 +158,7 @@ class HBasicBlock: public ZoneObject {
|
| dominates_loop_successors_ = true;
|
| }
|
|
|
| - inline Zone* zone();
|
| + inline Zone* zone() const;
|
|
|
| #ifdef DEBUG
|
| void Verify();
|
| @@ -212,12 +212,12 @@ class HPredecessorIterator BASE_EMBEDDED {
|
|
|
| class HLoopInformation: public ZoneObject {
|
| public:
|
| - explicit HLoopInformation(HBasicBlock* loop_header)
|
| - : back_edges_(4),
|
| + HLoopInformation(HBasicBlock* loop_header, Zone* zone)
|
| + : back_edges_(4, zone),
|
| loop_header_(loop_header),
|
| - blocks_(8),
|
| + blocks_(8, zone),
|
| stack_check_(NULL) {
|
| - blocks_.Add(loop_header);
|
| + blocks_.Add(loop_header, zone);
|
| }
|
| virtual ~HLoopInformation() {}
|
|
|
| @@ -244,10 +244,10 @@ class HLoopInformation: public ZoneObject {
|
| class BoundsCheckTable;
|
| class HGraph: public ZoneObject {
|
| public:
|
| - explicit HGraph(CompilationInfo* info);
|
| + HGraph(CompilationInfo* info, Zone* zone);
|
|
|
| Isolate* isolate() { return isolate_; }
|
| - Zone* zone() { return isolate_->zone(); }
|
| + Zone* zone() const { return zone_; }
|
|
|
| const ZoneList<HBasicBlock*>* blocks() const { return &blocks_; }
|
| const ZoneList<HPhi*>* phi_list() const { return phi_list_; }
|
| @@ -304,7 +304,7 @@ class HGraph: public ZoneObject {
|
| int GetMaximumValueID() const { return values_.length(); }
|
| int GetNextBlockID() { return next_block_id_++; }
|
| int GetNextValueID(HValue* value) {
|
| - values_.Add(value);
|
| + values_.Add(value, zone());
|
| return values_.length() - 1;
|
| }
|
| HValue* LookupValue(int id) const {
|
| @@ -380,11 +380,13 @@ class HGraph: public ZoneObject {
|
| SetOncePointer<HBasicBlock> osr_loop_entry_;
|
| SetOncePointer<ZoneList<HUnknownOSRValue*> > osr_values_;
|
|
|
| + Zone* zone_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(HGraph);
|
| };
|
|
|
|
|
| -Zone* HBasicBlock::zone() { return graph_->zone(); }
|
| +Zone* HBasicBlock::zone() const { return graph_->zone(); }
|
|
|
|
|
| // Type of stack frame an environment might refer to.
|
| @@ -395,7 +397,8 @@ class HEnvironment: public ZoneObject {
|
| public:
|
| HEnvironment(HEnvironment* outer,
|
| Scope* scope,
|
| - Handle<JSFunction> closure);
|
| + Handle<JSFunction> closure,
|
| + Zone* zone);
|
|
|
| HEnvironment* DiscardInlined(bool drop_extra) {
|
| HEnvironment* outer = outer_;
|
| @@ -462,7 +465,7 @@ class HEnvironment: public ZoneObject {
|
| void Push(HValue* value) {
|
| ASSERT(value != NULL);
|
| ++push_count_;
|
| - values_.Add(value);
|
| + values_.Add(value, zone());
|
| }
|
|
|
| HValue* Pop() {
|
| @@ -519,13 +522,16 @@ class HEnvironment: public ZoneObject {
|
| void PrintTo(StringStream* stream);
|
| void PrintToStd();
|
|
|
| + Zone* zone() const { return zone_; }
|
| +
|
| private:
|
| - explicit HEnvironment(const HEnvironment* other);
|
| + HEnvironment(const HEnvironment* other, Zone* zone);
|
|
|
| HEnvironment(HEnvironment* outer,
|
| Handle<JSFunction> closure,
|
| FrameType frame_type,
|
| - int arguments);
|
| + int arguments,
|
| + Zone* zone);
|
|
|
| // Create an artificial stub environment (e.g. for argument adaptor or
|
| // constructor stub).
|
| @@ -563,6 +569,7 @@ class HEnvironment: public ZoneObject {
|
| int pop_count_;
|
| int push_count_;
|
| int ast_id_;
|
| + Zone* zone_;
|
| };
|
|
|
|
|
| @@ -607,7 +614,7 @@ class AstContext {
|
|
|
| HGraphBuilder* owner() const { return owner_; }
|
|
|
| - inline Zone* zone();
|
| + inline Zone* zone() const;
|
|
|
| // We want to be able to assert, in a context-specific way, that the stack
|
| // height makes sense when the context is filled.
|
| @@ -821,7 +828,7 @@ class HGraphBuilder: public AstVisitor {
|
| BreakAndContinueScope* next_;
|
| };
|
|
|
| - HGraphBuilder(CompilationInfo* info, TypeFeedbackOracle* oracle);
|
| + HGraphBuilder(CompilationInfo* info, TypeFeedbackOracle* oracle, Zone* zone);
|
|
|
| HGraph* CreateGraph();
|
|
|
| @@ -1144,7 +1151,7 @@ class HGraphBuilder: public AstVisitor {
|
| Handle<Map> receiver_map,
|
| bool smi_and_map_check);
|
|
|
| - Zone* zone() { return zone_; }
|
| + Zone* zone() const { return zone_; }
|
|
|
| // The translation state of the currently-being-translated function.
|
| FunctionState* function_state_;
|
| @@ -1176,12 +1183,12 @@ class HGraphBuilder: public AstVisitor {
|
| };
|
|
|
|
|
| -Zone* AstContext::zone() { return owner_->zone(); }
|
| +Zone* AstContext::zone() const { return owner_->zone(); }
|
|
|
|
|
| class HValueMap: public ZoneObject {
|
| public:
|
| - HValueMap()
|
| + explicit HValueMap(Zone* zone)
|
| : array_size_(0),
|
| lists_size_(0),
|
| count_(0),
|
| @@ -1189,15 +1196,15 @@ class HValueMap: public ZoneObject {
|
| array_(NULL),
|
| lists_(NULL),
|
| free_list_head_(kNil) {
|
| - ResizeLists(kInitialSize);
|
| - Resize(kInitialSize);
|
| + ResizeLists(kInitialSize, zone);
|
| + Resize(kInitialSize, zone);
|
| }
|
|
|
| void Kill(GVNFlagSet flags);
|
|
|
| - void Add(HValue* value) {
|
| + void Add(HValue* value, Zone* zone) {
|
| present_flags_.Add(value->gvn_flags());
|
| - Insert(value);
|
| + Insert(value, zone);
|
| }
|
|
|
| HValue* Lookup(HValue* value) const;
|
| @@ -1221,9 +1228,9 @@ class HValueMap: public ZoneObject {
|
|
|
| HValueMap(Zone* zone, const HValueMap* other);
|
|
|
| - void Resize(int new_size);
|
| - void ResizeLists(int new_size);
|
| - void Insert(HValue* value);
|
| + void Resize(int new_size, Zone* zone);
|
| + void ResizeLists(int new_size, Zone* zone);
|
| + void Insert(HValue* value, Zone* zone);
|
| uint32_t Bound(uint32_t value) const { return value & (array_size_ - 1); }
|
|
|
| int array_size_;
|
| @@ -1376,7 +1383,7 @@ class HTracer: public Malloced {
|
| WriteChars(filename, "", 0, false);
|
| }
|
|
|
| - void TraceLiveRange(LiveRange* range, const char* type);
|
| + void TraceLiveRange(LiveRange* range, const char* type, Zone* zone);
|
| void Trace(const char* name, HGraph* graph, LChunk* chunk);
|
| void FlushToFile();
|
|
|
|
|