X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/f9bf01c6616d5ddcf65b13b33cedf9e387ff7a63..40a37d088818fc2fbeba2ef850dbcaaf294befbf:/runtime/BatchedTransitionOptimizer.h?ds=sidebyside diff --git a/runtime/BatchedTransitionOptimizer.h b/runtime/BatchedTransitionOptimizer.h index 74089a5..951a328 100644 --- a/runtime/BatchedTransitionOptimizer.h +++ b/runtime/BatchedTransitionOptimizer.h @@ -11,10 +11,10 @@ * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR @@ -27,28 +27,31 @@ #ifndef BatchedTransitionOptimizer_h #define BatchedTransitionOptimizer_h -#include #include "JSObject.h" namespace JSC { - class BatchedTransitionOptimizer : public Noncopyable { - public: - BatchedTransitionOptimizer(JSObject* object) - : m_object(object) - { - if (!m_object->structure()->isDictionary()) - m_object->setStructure(Structure::toCacheableDictionaryTransition(m_object->structure())); - } - - ~BatchedTransitionOptimizer() - { - m_object->flattenDictionaryObject(); - } - - private: - JSObject* m_object; - }; +class BatchedTransitionOptimizer { + WTF_MAKE_NONCOPYABLE(BatchedTransitionOptimizer); +public: + BatchedTransitionOptimizer(VM& vm, JSObject* object) + : m_vm(&vm) + , m_object(object) + { + if (!m_object->structure(vm)->isDictionary()) + m_object->convertToDictionary(vm); + } + + ~BatchedTransitionOptimizer() + { + if (m_object->structure()->isDictionary()) + m_object->flattenDictionaryObject(*m_vm); + } + +private: + VM* m_vm; + JSObject* m_object; +}; } // namespace JSC