Another comment which hopefully will make your code easier to maintain.

-Ivan




http://codereview.chromium.org/62146/diff/4001/4015
File src/rewriter.cc (right):

http://codereview.chromium.org/62146/diff/4001/4015#newcode278
Line 278: bool must_leave_inferrer = false;
It might make sense to create a stack allocated object that will
automatically call InferAndLeave() on destruction if inferring has been
requested. Such as follows:

class NeedBetterName {
  public:
   NeedBetterName(FuncNameInferrer* inferrer) : inferrer_(inferrer),
entered_(false) {};
   ~ NeedBetterName() {
     if (entered_) {
       inferrer_->InferAndLeave();
     }
   }

   void Enter() {
     inferrer_->Enter();
     entered_ = true;
   }

  private:
   FuncNameInferrer* inferrer_;
   bool entered_;
};

Which will automatically leave the inferrer. This way you are guaranteed
to not forget to call InferAndLeave() even across complicated control
flow.

http://codereview.chromium.org/62146

--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to