[webkit-reviews] review denied: [Bug 93884] Change behavior of MasqueradesAsUndefined to better accommodate DFG changes : [Attachment 160247] Patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Aug 23 14:57:36 PDT 2012


Filip Pizlo <fpizlo at apple.com> has denied  review:
Bug 93884: Change behavior of MasqueradesAsUndefined to better accommodate DFG
changes
https://bugs.webkit.org/show_bug.cgi?id=93884

Attachment 160247: Patch
https://bugs.webkit.org/attachment.cgi?id=160247&action=review

------- Additional Comments from Filip Pizlo <fpizlo at apple.com>
View in context: https://bugs.webkit.org/attachment.cgi?id=160247&action=review


> Source/JavaScriptCore/dfg/DFGAbstractState.cpp:788
> -		       ||
!isFinalObjectOrOtherSpeculation(forNode(node.child2()).m_type));
> +		       ||
!isFinalObjectOrOtherSpeculation(forNode(node.child2()).m_type)
> +		       ||
m_codeBlock->globalObjectFor(node.codeOrigin)->masqueradesAsUndefinedWatchpoint
()->isStillValid());
>		   forNode(node.child1()).filter(SpecFinalObject);
>		   forNode(node.child2()).filter(SpecFinalObject | SpecOther);
>		   break;
>	       } else if (right.shouldSpeculateFinalObject() &&
left.shouldSpeculateFinalObjectOrOther()) {
>		   node.setCanExit(
>		      
!isFinalObjectOrOtherSpeculation(forNode(node.child1()).m_type)
> -		       ||
!isFinalObjectSpeculation(forNode(node.child2()).m_type));
> +		       ||
!isFinalObjectSpeculation(forNode(node.child2()).m_type)
> +		       ||
m_codeBlock->globalObjectFor(node.codeOrigin)->masqueradesAsUndefinedWatchpoint
()->isStillValid());
>		   forNode(node.child1()).filter(SpecFinalObject | SpecOther);
>		   forNode(node.child2()).filter(SpecFinalObject);
>		   break;
>	       } else if (left.shouldSpeculateArray() &&
right.shouldSpeculateArrayOrOther()) {
>		   node.setCanExit(
>		       !isArraySpeculation(forNode(node.child1()).m_type)
> -		       ||
!isArrayOrOtherSpeculation(forNode(node.child2()).m_type));
> +		       ||
!isArrayOrOtherSpeculation(forNode(node.child2()).m_type)
> +		       ||
m_codeBlock->globalObjectFor(node.codeOrigin)->masqueradesAsUndefinedWatchpoint
()->isStillValid());
>		   forNode(node.child1()).filter(SpecArray);
>		   forNode(node.child2()).filter(SpecArray | SpecOther);
>		   break;
>	       } else if (right.shouldSpeculateArray() &&
left.shouldSpeculateArrayOrOther()) {
>		   node.setCanExit(
>		      
!isArrayOrOtherSpeculation(forNode(node.child1()).m_type)
> -		       || !isArraySpeculation(forNode(node.child2()).m_type));
> +		       || !isArraySpeculation(forNode(node.child2()).m_type)
> +		       ||
m_codeBlock->globalObjectFor(node.codeOrigin)->masqueradesAsUndefinedWatchpoint
()->isStillValid());

Why did you change this?  Your patch doesn't change any of the backend code
that corresponds to this!

> Source/JavaScriptCore/dfg/DFGAbstractState.cpp:796
> +		   node.setCanExit(
> +		       !isAnySpeculation(forNode(node.child1()).m_type)
> +		       || !isAnySpeculation(forNode(node.child2()).m_type)
> +		       ||
m_codeBlock->globalObjectFor(node.codeOrigin)->masqueradesAsUndefinedWatchpoint
()->isStillValid());

isAnySpeculation returns true all the time.  So this code is very strange.

> Source/JavaScriptCore/dfg/DFGAbstractState.cpp:798
> +		   forNode(node.child1()).filter(SpecTop);
> +		   forNode(node.child2()).filter(SpecTop);

Please remove this; filtering on TOP does nothing.


More information about the webkit-reviews mailing list