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

Reply via email to