Changeset 34373 in webkit for trunk/JavaScriptCore/kjs
- Timestamp:
- Jun 5, 2008, 2:19:48 AM (17 years ago)
- Location:
- trunk/JavaScriptCore/kjs
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/grammar.y
r34355 r34373 362 362 PrimaryExpr 363 363 | FunctionExpr { $$ = createNodeFeatureInfo<ExpressionNode*>($1.m_node, $1.m_featureInfo); } 364 | MemberExpr '[' Expr ']' { $$ = createNodeFeatureInfo<ExpressionNode*>(new BracketAccessorNode($1.m_node, $3.m_node ), $1.m_featureInfo | $3.m_featureInfo); }364 | MemberExpr '[' Expr ']' { $$ = createNodeFeatureInfo<ExpressionNode*>(new BracketAccessorNode($1.m_node, $3.m_node, $3.m_featureInfo & AssignFeature), $1.m_featureInfo | $3.m_featureInfo); } 365 365 | MemberExpr '.' IDENT { $$ = createNodeFeatureInfo<ExpressionNode*>(new DotAccessorNode($1.m_node, *$3), $1.m_featureInfo); } 366 366 | NEW MemberExpr Arguments { $$ = createNodeFeatureInfo<ExpressionNode*>(new NewExprNode($2.m_node, $3.m_node), $2.m_featureInfo | $3.m_featureInfo); } … … 369 369 MemberExprNoBF: 370 370 PrimaryExprNoBrace 371 | MemberExprNoBF '[' Expr ']' { $$ = createNodeFeatureInfo<ExpressionNode*>(new BracketAccessorNode($1.m_node, $3.m_node ), $1.m_featureInfo | $3.m_featureInfo); }371 | MemberExprNoBF '[' Expr ']' { $$ = createNodeFeatureInfo<ExpressionNode*>(new BracketAccessorNode($1.m_node, $3.m_node, $3.m_featureInfo & AssignFeature), $1.m_featureInfo | $3.m_featureInfo); } 372 372 | MemberExprNoBF '.' IDENT { $$ = createNodeFeatureInfo<ExpressionNode*>(new DotAccessorNode($1.m_node, *$3), $1.m_featureInfo); } 373 373 | NEW MemberExpr Arguments { $$ = createNodeFeatureInfo<ExpressionNode*>(new NewExprNode($2.m_node, $3.m_node), $2.m_featureInfo | $3.m_featureInfo); } … … 387 387 MemberExpr Arguments { $$ = makeFunctionCallNode($1, $2); } 388 388 | CallExpr Arguments { $$ = makeFunctionCallNode($1, $2); } 389 | CallExpr '[' Expr ']' { $$ = createNodeFeatureInfo<ExpressionNode*>(new BracketAccessorNode($1.m_node, $3.m_node ), $1.m_featureInfo | $3.m_featureInfo); }389 | CallExpr '[' Expr ']' { $$ = createNodeFeatureInfo<ExpressionNode*>(new BracketAccessorNode($1.m_node, $3.m_node, $3.m_featureInfo & AssignFeature), $1.m_featureInfo | $3.m_featureInfo); } 390 390 | CallExpr '.' IDENT { $$ = createNodeFeatureInfo<ExpressionNode*>(new DotAccessorNode($1.m_node, *$3), $1.m_featureInfo); } 391 391 ; … … 394 394 MemberExprNoBF Arguments { $$ = makeFunctionCallNode($1, $2); } 395 395 | CallExprNoBF Arguments { $$ = makeFunctionCallNode($1, $2); } 396 | CallExprNoBF '[' Expr ']' { $$ = createNodeFeatureInfo<ExpressionNode*>(new BracketAccessorNode($1.m_node, $3.m_node ), $1.m_featureInfo | $3.m_featureInfo); }396 | CallExprNoBF '[' Expr ']' { $$ = createNodeFeatureInfo<ExpressionNode*>(new BracketAccessorNode($1.m_node, $3.m_node, $3.m_featureInfo & AssignFeature), $1.m_featureInfo | $3.m_featureInfo); } 397 397 | CallExprNoBF '.' IDENT { $$ = createNodeFeatureInfo<ExpressionNode*>(new DotAccessorNode($1.m_node, *$3), $1.m_featureInfo); } 398 398 ; -
trunk/JavaScriptCore/kjs/nodes.cpp
r34356 r34373 410 410 RegisterID* BracketAccessorNode::emitCode(CodeGenerator& generator, RegisterID* dst) 411 411 { 412 RefPtr<RegisterID> base = generator.emitNode (m_base.get());412 RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_subscriptHasAssignments); 413 413 RegisterID* property = generator.emitNode(m_subscript.get()); 414 414 -
trunk/JavaScriptCore/kjs/nodes.h
r34356 r34373 528 528 class BracketAccessorNode : public ExpressionNode { 529 529 public: 530 BracketAccessorNode(ExpressionNode* base, ExpressionNode* subscript ) KJS_FAST_CALL530 BracketAccessorNode(ExpressionNode* base, ExpressionNode* subscript, bool subscriptHasAssignments) KJS_FAST_CALL 531 531 : m_base(base) 532 532 , m_subscript(subscript) 533 , m_subscriptHasAssignments(subscriptHasAssignments) 533 534 { 534 535 } … … 547 548 RefPtr<ExpressionNode> m_base; 548 549 RefPtr<ExpressionNode> m_subscript; 550 bool m_subscriptHasAssignments; 549 551 }; 550 552
Note:
See TracChangeset
for help on using the changeset viewer.