summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/webkit/JavaScriptCore/runtime/StructureChain.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/webkit/JavaScriptCore/runtime/StructureChain.cpp')
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/StructureChain.cpp38
1 files changed, 7 insertions, 31 deletions
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/StructureChain.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/StructureChain.cpp
index 84c67c3..085876c 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/StructureChain.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/StructureChain.cpp
@@ -32,42 +32,18 @@
namespace JSC {
-StructureChain::StructureChain(Structure* structure)
+StructureChain::StructureChain(Structure* head)
{
- size_t size = 1;
-
- Structure* tmp = structure;
- while (!tmp->storedPrototype()->isNull()) {
+ size_t size = 0;
+ for (Structure* current = head; current; current = current->storedPrototype().isNull() ? 0 : asObject(current->storedPrototype())->structure())
++size;
- tmp = asCell(tmp->storedPrototype())->structure();
- }
m_vector.set(new RefPtr<Structure>[size + 1]);
- size_t i;
- for (i = 0; i < size - 1; ++i) {
- m_vector[i] = structure;
- structure = asObject(structure->storedPrototype())->structure();
- }
- m_vector[i] = structure;
- m_vector[i + 1] = 0;
-}
-
-bool structureChainsAreEqual(StructureChain* chainA, StructureChain* chainB)
-{
- if (!chainA || !chainB)
- return false;
-
- RefPtr<Structure>* a = chainA->head();
- RefPtr<Structure>* b = chainB->head();
- while (1) {
- if (*a != *b)
- return false;
- if (!*a)
- return true;
- a++;
- b++;
- }
+ size_t i = 0;
+ for (Structure* current = head; current; current = current->storedPrototype().isNull() ? 0 : asObject(current->storedPrototype())->structure())
+ m_vector[i++] = current;
+ m_vector[i] = 0;
}
} // namespace JSC