summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--js/src/frontend/BytecodeEmitter.cpp39
-rw-r--r--js/src/frontend/FoldConstants.cpp7
2 files changed, 4 insertions, 42 deletions
diff --git a/js/src/frontend/BytecodeEmitter.cpp b/js/src/frontend/BytecodeEmitter.cpp
index b3b658a2d8..309d6c290d 100644
--- a/js/src/frontend/BytecodeEmitter.cpp
+++ b/js/src/frontend/BytecodeEmitter.cpp
@@ -5896,20 +5896,9 @@ BytecodeEmitter::emitDestructuringOpsObject(ParseNode* pattern, DestructuringFla
if (!emitNumberOp(key->pn_dval)) // ... *SET RHS *LREF RHS KEY
return false;
} else if (key->isKind(PNK_OBJECT_PROPERTY_NAME) || key->isKind(PNK_STRING)) {
- PropertyName* name = key->pn_atom->asPropertyName();
-
- // The parser already checked for atoms representing indexes and
- // used PNK_NUMBER instead, but also watch for ids which TI treats
- // as indexes for simplification of downstream analysis.
- jsid id = NameToId(name);
- if (id != IdToTypeId(id)) {
- if (!emitTree(key)) // ... *SET RHS *LREF RHS KEY
- return false;
- } else {
- if (!emitAtomOp(name, JSOP_GETPROP)) // ... *SET RHS *LREF PROP
- return false;
- needsGetElem = false;
- }
+ if (!emitAtomOp(key->pn_atom, JSOP_GETPROP)) // ... *SET RHS *LREF PROP
+ return false;
+ needsGetElem = false;
} else {
if (!emitComputedPropertyName(key)) // ... *SET RHS *LREF RHS KEY
return false;
@@ -5986,17 +5975,7 @@ BytecodeEmitter::emitDestructuringObjRestExclusionSet(ParseNode* pattern)
return false;
isIndex = true;
} else if (key->isKind(PNK_OBJECT_PROPERTY_NAME) || key->isKind(PNK_STRING)) {
- // The parser already checked for atoms representing indexes and
- // used PNK_NUMBER instead, but also watch for ids which TI treats
- // as indexes for simplification of downstream analysis.
- jsid id = NameToId(key->pn_atom->asPropertyName());
- if (id != IdToTypeId(id)) {
- if (!emitTree(key))
- return false;
- isIndex = true;
- } else {
- pnatom.set(key->pn_atom);
- }
+ pnatom.set(key->pn_atom);
} else {
// Otherwise this is a computed property name which needs to
// be added dynamically.
@@ -9689,16 +9668,6 @@ BytecodeEmitter::emitPropertyList(ParseNode* pn, MutableHandlePlainObject objp,
{
continue;
}
-
- // The parser already checked for atoms representing indexes and
- // used PNK_NUMBER instead, but also watch for ids which TI treats
- // as indexes for simplification of downstream analysis.
- jsid id = NameToId(key->pn_atom->asPropertyName());
- if (id != IdToTypeId(id)) {
- if (!emitTree(key))
- return false;
- isIndex = true;
- }
} else {
if (!emitComputedPropertyName(key))
return false;
diff --git a/js/src/frontend/FoldConstants.cpp b/js/src/frontend/FoldConstants.cpp
index 441a72a459..689fa02b4b 100644
--- a/js/src/frontend/FoldConstants.cpp
+++ b/js/src/frontend/FoldConstants.cpp
@@ -1345,15 +1345,8 @@ FoldElement(ExclusiveContext* cx, ParseNode** nodePtr, Parser<FullParseHandler>&
if (!name)
return true;
- // Also don't optimize if the name doesn't map directly to its id for TI's
- // purposes.
- if (NameToId(name) != IdToTypeId(NameToId(name)))
- return true;
-
// Optimization 3: We have expr["foo"] where foo is not an index. Convert
// to a property access (like expr.foo) that optimizes better downstream.
- // Don't bother with this for names that TI considers to be indexes, to
- // simplify downstream analysis.
ParseNode* dottedAccess = parser.handler.newPropertyAccess(expr, name, node->pn_pos.end);
if (!dottedAccess)
return false;