Ignore:
Timestamp:
Dec 12, 2008, 5:47:34 PM (16 years ago)
Author:
[email protected]
Message:

2008-12-12 Cameron Zwarich <[email protected]>

Reviewed by Oliver Hunt.

Bug 22835: Crash during bytecode generation when comparing to null
<https://bugs.webkit.org/show_bug.cgi?id=22835>
<rdar://problem/6286749>

Change the special cases in bytecode generation for comparison to null
to use tempDestination().

JavaScriptCore:

  • parser/Nodes.cpp: (JSC::BinaryOpNode::emitBytecode): (JSC::EqualNode::emitBytecode):

LayoutTests:

  • fast/js/ignored-result-null-comparison-crash-expected.txt: Added.
  • fast/js/ignored-result-null-comparison-crash.html: Added.
  • fast/js/resources/ignored-result-null-comparison-crash.js: Added.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/parser/Nodes.cpp

    r39255 r39263  
    11151115    if (opcodeID == op_neq) {
    11161116        if (m_expr1->isNull() || m_expr2->isNull()) {
    1117             RefPtr<RegisterID> src = generator.emitNode(dst, m_expr1->isNull() ? m_expr2.get() : m_expr1.get());
     1117            RefPtr<RegisterID> src = generator.tempDestination(dst);
     1118            generator.emitNode(src.get(), m_expr1->isNull() ? m_expr2.get() : m_expr1.get());
    11181119            return generator.emitUnaryOp(op_neq_null, generator.finalDestination(dst, src.get()), src.get());
    11191120        }
     
    11281129{
    11291130    if (m_expr1->isNull() || m_expr2->isNull()) {
    1130         RefPtr<RegisterID> src = generator.emitNode(dst, m_expr1->isNull() ? m_expr2.get() : m_expr1.get());
     1131        RefPtr<RegisterID> src = generator.tempDestination(dst);
     1132        generator.emitNode(src.get(), m_expr1->isNull() ? m_expr2.get() : m_expr1.get());
    11311133        return generator.emitUnaryOp(op_eq_null, generator.finalDestination(dst, src.get()), src.get());
    11321134    }
Note: See TracChangeset for help on using the changeset viewer.