1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-24 19:17:41 +00:00

LibJS: Some optimizations for ObjectExpression

- move() the property map when constructing ObjectExpression instead of
  making a copy.
- Use key+value iterators to traverse the property map in the execute()
  and dump() functions.
This commit is contained in:
Andreas Kling 2020-03-21 13:05:43 +01:00
parent 6c3afca686
commit 00feef8642
2 changed files with 6 additions and 8 deletions

View file

@ -623,10 +623,10 @@ void VariableDeclaration::dump(int indent) const
void ObjectExpression::dump(int indent) const void ObjectExpression::dump(int indent) const
{ {
ASTNode::dump(indent); ASTNode::dump(indent);
for (String property_key : m_properties.keys()) { for (auto it : m_properties) {
print_indent(indent + 1); print_indent(indent + 1);
printf("%s: ", property_key.characters()); printf("%s: ", it.key.characters());
m_properties.get(property_key).value()->dump(0); it.value->dump(0);
} }
} }
@ -639,10 +639,8 @@ void ExpressionStatement::dump(int indent) const
Value ObjectExpression::execute(Interpreter& interpreter) const Value ObjectExpression::execute(Interpreter& interpreter) const
{ {
auto object = interpreter.heap().allocate<Object>(); auto object = interpreter.heap().allocate<Object>();
for (String property_key : m_properties.keys()) { for (auto it : m_properties)
object->put(property_key, m_properties.get(property_key).value()->execute(interpreter)); object->put(it.key, it.value->execute(interpreter));
}
return object; return object;
} }

View file

@ -574,7 +574,7 @@ private:
class ObjectExpression : public Expression { class ObjectExpression : public Expression {
public: public:
ObjectExpression(HashMap<String, NonnullRefPtr<Expression>> properties = {}) ObjectExpression(HashMap<String, NonnullRefPtr<Expression>> properties = {})
: m_properties(properties) : m_properties(move(properties))
{ {
} }