Instance & Dynamic property map changes to HashTable complete.

git-svn-id: svn://10.0.0.236/trunk@139528 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
rogerl%netscape.com
2003-03-15 19:36:12 +00:00
parent 1b405dae1c
commit b76d8fbb79
8 changed files with 163 additions and 156 deletions

View File

@@ -91,13 +91,13 @@ js2val setLength(JS2Metadata *meta, JS2Object *obj, uint32 newLength)
// Can't call 'writeDynamicProperty' as that'll just cycle back here for
// ArrayInstances.
DynamicPropertyMap *dMap = &checked_cast<PrototypeInstance *>(obj)->dynamicProperties;
DynamicPropertyIterator i = dMap->find(*meta->engine->length_StringAtom);
if (i != dMap->end()) {
i->second.value = result;
DynamicPropertyBinding **dpbP = (*dMap)[*meta->engine->length_StringAtom];
if (dpbP) {
(*dpbP)->v.value = result;
return result;
}
const DynamicPropertyMap::value_type e(*meta->engine->length_StringAtom, DynamicPropertyValue(result, DynamicPropertyValue::PERMANENT));
checked_cast<PrototypeInstance *>(obj)->dynamicProperties.insert(e);
DynamicPropertyBinding *dpb = new DynamicPropertyBinding(*meta->engine->length_StringAtom, DynamicPropertyValue(result, DynamicPropertyValue::PERMANENT));
checked_cast<PrototypeInstance *>(obj)->dynamicProperties.insert(dpb->name, dpb);
}
else {
meta->mn1->name = meta->engine->length_StringAtom;
@@ -128,8 +128,8 @@ js2val Array_Constructor(JS2Metadata *meta, const js2val /*thisValue*/, js2val *
else {
uint32 i;
for (i = 0; i < argc; i++) {
const DynamicPropertyMap::value_type e(*meta->engine->numberToString(i), DynamicPropertyValue(argv[i], DynamicPropertyValue::ENUMERATE));
arrInst->dynamicProperties.insert(e);
DynamicPropertyBinding *dpb = new DynamicPropertyBinding(*meta->engine->numberToString(i), DynamicPropertyValue(argv[i], DynamicPropertyValue::ENUMERATE));
arrInst->dynamicProperties.insert(dpb->name, dpb);
}
setLength(meta, arrInst, i);
}