| Index: src/utils.h
|
| diff --git a/src/utils.h b/src/utils.h
|
| index 6d0d3c84a3845750283340bf2bf611576f460994..7f5cf19fc70608442df9cd5253aac34ad6a2a288 100644
|
| --- a/src/utils.h
|
| +++ b/src/utils.h
|
| @@ -1707,6 +1707,25 @@ class ThreadedListZoneEntry final : public ZoneObject {
|
| DISALLOW_COPY_AND_ASSIGN(ThreadedListZoneEntry);
|
| };
|
|
|
| +template <typename T>
|
| +class ScopedAssignment {
|
| + public:
|
| + V8_INLINE ScopedAssignment(T& previous, T&& value)
|
| + : location_(&previous), prev_(previous) {
|
| + *location_ = value;
|
| + }
|
| + V8_INLINE ScopedAssignment(T& previous, const T& value)
|
| + : location_(&previous), prev_(previous) {
|
| + *location_ = value;
|
| + }
|
| +
|
| + V8_INLINE ~ScopedAssignment() { *location_ = prev_; }
|
| +
|
| + private:
|
| + T* location_;
|
| + T prev_;
|
| +};
|
| +
|
| } // namespace internal
|
| } // namespace v8
|
|
|
|
|