Reviewers: Mads Ager, Description: Introduced a TempAssign utility because I just couldn't watch this anymore. YMMV.
Please review this at http://codereview.chromium.org/14422 SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/codegen-ia32.cc M src/utils.h Index: src/utils.h =================================================================== --- src/utils.h (revision 958) +++ src/utils.h (working copy) @@ -372,6 +372,23 @@ }; +// A temporary assignment sets a (non-local) variable to a value on +// construction and resets it the value on destruction. +template <typename T> +class TempAssign { + public: + TempAssign(T* var, T value): var_(var), old_value_(*var) { + *var = value; + } + + ~TempAssign() { *var_ = old_value_; } + + private: + T* var_; + T old_value_; +}; + + template <typename T, int kSize> class EmbeddedVector : public Vector<T> { public: Index: src/codegen-ia32.cc =================================================================== --- src/codegen-ia32.cc (revision 958) +++ src/codegen-ia32.cc (working copy) @@ -2057,10 +2057,9 @@ } // Generate code for the statements in the try block. - bool was_inside_try = is_inside_try_; - is_inside_try_ = true; - VisitStatements(node->try_block()->statements()); - is_inside_try_ = was_inside_try; + { TempAssign<bool> temp(&is_inside_try_, true); + VisitStatements(node->try_block()->statements()); + } // Stop the introduced shadowing and count the number of required unlinks. // After shadowing stops, the original labels are unshadowed and the @@ -2155,10 +2154,9 @@ } // Generate code for the statements in the try block. - bool was_inside_try = is_inside_try_; - is_inside_try_ = true; - VisitStatements(node->try_block()->statements()); - is_inside_try_ = was_inside_try; + { TempAssign<bool> temp(&is_inside_try_, true); + VisitStatements(node->try_block()->statements()); + } // Stop the introduced shadowing and count the number of required unlinks. // After shadowing stops, the original labels are unshadowed and the --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
