X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/14957cd040308e3eeec43d26bae5d76da13fcd85..refs/heads/master:/runtime/BatchedTransitionOptimizer.h diff --git a/runtime/BatchedTransitionOptimizer.h b/runtime/BatchedTransitionOptimizer.h index 610b8d1..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 @@ -31,25 +31,27 @@ namespace JSC { - class BatchedTransitionOptimizer { - WTF_MAKE_NONCOPYABLE(BatchedTransitionOptimizer); - public: - BatchedTransitionOptimizer(JSGlobalData& globalData, JSObject* object) - : m_globalData(&globalData) - , m_object(object) - { - } - - ~BatchedTransitionOptimizer() - { - if (m_object->structure()->isDictionary()) - m_object->flattenDictionaryObject(*m_globalData); - } - - private: - JSGlobalData* m_globalData; - 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