summaryrefslogtreecommitdiffstats
path: root/JavaScriptCore/runtime/StructureChain.cpp
diff options
context:
space:
mode:
authorFeng Qian <fqian@google.com>2009-06-17 12:12:20 -0700
committerFeng Qian <fqian@google.com>2009-06-17 12:12:20 -0700
commit5f1ab04193ad0130ca8204aadaceae083aca9881 (patch)
tree5a92cd389e2cfe7fb67197ce14b38469462379f8 /JavaScriptCore/runtime/StructureChain.cpp
parent194315e5a908cc8ed67d597010544803eef1ac59 (diff)
downloadexternal_webkit-5f1ab04193ad0130ca8204aadaceae083aca9881.zip
external_webkit-5f1ab04193ad0130ca8204aadaceae083aca9881.tar.gz
external_webkit-5f1ab04193ad0130ca8204aadaceae083aca9881.tar.bz2
Get WebKit r44544.
Diffstat (limited to 'JavaScriptCore/runtime/StructureChain.cpp')
-rw-r--r--JavaScriptCore/runtime/StructureChain.cpp38
1 files changed, 7 insertions, 31 deletions
diff --git a/JavaScriptCore/runtime/StructureChain.cpp b/JavaScriptCore/runtime/StructureChain.cpp
index 4d00263..085876c 100644
--- a/JavaScriptCore/runtime/StructureChain.cpp
+++ b/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