Title: [153074] trunk/Source/_javascript_Core
- Revision
- 153074
- Author
- [email protected]
- Date
- 2013-07-23 18:10:02 -0700 (Tue, 23 Jul 2013)
Log Message
Need ExpressionRangeInfo before ResolveForPuts in strict mode.
https://bugs.webkit.org/show_bug.cgi?id=118997.
Reviewed by Oliver Hunt.
If we add an assertion in UnlinkedCodeBlock::expressionRangeForBytecodeOffset()
to ensure that we are able to find an ExpressionRangeInfo for any given bytecode
offset, the following tests will fails:
fast/js/basic-strict-mode.html
fast/js/mozilla/strict/8.7.2.html
With this fix, those tests will no longer fail.
* bytecompiler/NodesCodegen.cpp:
(JSC::AssignResolveNode::emitBytecode):
(JSC::ForInNode::emitBytecode):
- Emit _expression_ info before calls to emitResolveBaseForPut() when in strict mode.
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (153073 => 153074)
--- trunk/Source/_javascript_Core/ChangeLog 2013-07-24 00:56:52 UTC (rev 153073)
+++ trunk/Source/_javascript_Core/ChangeLog 2013-07-24 01:10:02 UTC (rev 153074)
@@ -1,3 +1,22 @@
+2013-07-10 Mark Lam <[email protected]>
+
+ Need ExpressionRangeInfo before ResolveForPuts in strict mode.
+ https://bugs.webkit.org/show_bug.cgi?id=118997.
+
+ Reviewed by Oliver Hunt.
+
+ If we add an assertion in UnlinkedCodeBlock::expressionRangeForBytecodeOffset()
+ to ensure that we are able to find an ExpressionRangeInfo for any given bytecode
+ offset, the following tests will fails:
+ fast/js/basic-strict-mode.html
+ fast/js/mozilla/strict/8.7.2.html
+ With this fix, those tests will no longer fail.
+
+ * bytecompiler/NodesCodegen.cpp:
+ (JSC::AssignResolveNode::emitBytecode):
+ (JSC::ForInNode::emitBytecode):
+ - Emit _expression_ info before calls to emitResolveBaseForPut() when in strict mode.
+
2013-07-23 Mark Lam <[email protected]>
Added ExpressionRangeInfo for BinaryOpNodes that can throw exceptions
Modified: trunk/Source/_javascript_Core/bytecompiler/NodesCodegen.cpp (153073 => 153074)
--- trunk/Source/_javascript_Core/bytecompiler/NodesCodegen.cpp 2013-07-24 00:56:52 UTC (rev 153073)
+++ trunk/Source/_javascript_Core/bytecompiler/NodesCodegen.cpp 2013-07-24 01:10:02 UTC (rev 153074)
@@ -1361,6 +1361,8 @@
}
NonlocalResolveInfo resolveVerifier;
+ if (generator.isStrictMode())
+ generator.emitExpressionInfo(divot(), divotStartOffset(), divotEndOffset(), divotLine(), divotLineStart());
RefPtr<RegisterID> base = generator.emitResolveBaseForPut(generator.newTemporary(), resolveResult, m_ident, resolveVerifier);
if (dst == generator.ignoredResult())
dst = 0;
@@ -1739,6 +1741,8 @@
propertyName = generator.newTemporary();
RefPtr<RegisterID> protect = propertyName;
NonlocalResolveInfo resolveVerifier;
+ if (generator.isStrictMode())
+ generator.emitExpressionInfo(divot(), divotStartOffset(), divotEndOffset(), divotLine(), divotLineStart());
RegisterID* base = generator.emitResolveBaseForPut(generator.newTemporary(), resolveResult, ident, resolveVerifier);
generator.emitExpressionInfo(divot(), divotStartOffset(), divotEndOffset(), divotLine(), divotLineStart());
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes