⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 180247 in webkit


Ignore:
Timestamp:
Feb 17, 2015, 6:38:16 PM (12 years ago)
Author:
msaboff@apple.com
Message:

CrashTracer: DFG_CRASH beneath JSC::FTL::LowerDFGToLLVM::compileNode
https://bugs.webkit.org/show_bug.cgi?id=141730

Reviewed by Geoffrey Garen.

Added a new failure handler, loweringFailed(), to LowerDFGToLLVM that reports failures
while processing DFG lowering. For debug builds, the failures are logged identical
to the way the DFG_CRASH() reports them. For release builds, the failures are reported
and that FTL compilation is terminated, but the process is allowed to continue.
Wrapped calls to loweringFailed() in a macro LOWERING_FAILED so the function and
line number are reported at the point of the inconsistancy.

Converted instances of DFG_CRASH to LOWERING_FAILED.

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::compileInThreadImpl): Added lowerDFGToLLVM() failure check that
will fail the FTL compile.

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::LowerDFGToLLVM::LowerDFGToLLVM):
Added new member variable, m_loweringSucceeded, to stop compilation on the first
reported failure.

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::LowerDFGToLLVM::lower):

  • ftl/FTLLowerDFGToLLVM.h:

Added check for compilation failures and now report those failures via a boolean
return value.

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::LowerDFGToLLVM::createPhiVariables):
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileUpsilon):
(JSC::FTL::LowerDFGToLLVM::compilePhi):
(JSC::FTL::LowerDFGToLLVM::compileDoubleRep):
(JSC::FTL::LowerDFGToLLVM::compileValueRep):
(JSC::FTL::LowerDFGToLLVM::compileValueToInt32):
(JSC::FTL::LowerDFGToLLVM::compilePutLocal):
(JSC::FTL::LowerDFGToLLVM::compileArithAddOrSub):
(JSC::FTL::LowerDFGToLLVM::compileArithMul):
(JSC::FTL::LowerDFGToLLVM::compileArithDiv):
(JSC::FTL::LowerDFGToLLVM::compileArithMod):
(JSC::FTL::LowerDFGToLLVM::compileArithMinOrMax):
(JSC::FTL::LowerDFGToLLVM::compileArithAbs):
(JSC::FTL::LowerDFGToLLVM::compileArithNegate):
(JSC::FTL::LowerDFGToLLVM::compileArrayifyToStructure):
(JSC::FTL::LowerDFGToLLVM::compileGetById):
(JSC::FTL::LowerDFGToLLVM::compileGetMyArgumentByVal):
(JSC::FTL::LowerDFGToLLVM::compileGetArrayLength):
(JSC::FTL::LowerDFGToLLVM::compileGetByVal):
(JSC::FTL::LowerDFGToLLVM::compilePutByVal):
(JSC::FTL::LowerDFGToLLVM::compileArrayPush):
(JSC::FTL::LowerDFGToLLVM::compileArrayPop):
(JSC::FTL::LowerDFGToLLVM::compileNewArray):
(JSC::FTL::LowerDFGToLLVM::compileToString):
(JSC::FTL::LowerDFGToLLVM::compileMakeRope):
(JSC::FTL::LowerDFGToLLVM::compileCompareEq):
(JSC::FTL::LowerDFGToLLVM::compileCompareStrictEq):
(JSC::FTL::LowerDFGToLLVM::compileSwitch):
(JSC::FTL::LowerDFGToLLVM::compare):
(JSC::FTL::LowerDFGToLLVM::boolify):
(JSC::FTL::LowerDFGToLLVM::opposite):
(JSC::FTL::LowerDFGToLLVM::lowJSValue):
(JSC::FTL::LowerDFGToLLVM::speculate):
(JSC::FTL::LowerDFGToLLVM::isArrayType):
(JSC::FTL::LowerDFGToLLVM::exitValueForAvailability):
(JSC::FTL::LowerDFGToLLVM::exitValueForNode):
(JSC::FTL::LowerDFGToLLVM::setInt52):
Changed DFG_CRASH() to LOWERING_FAILED(). Updated related control flow as appropriate.

(JSC::FTL::LowerDFGToLLVM::loweringFailed): New error reporting member function.

Location:
trunk/Source/JavaScriptCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r180237 r180247  
     12015-02-17  Michael Saboff  <msaboff@apple.com>
     2
     3        CrashTracer: DFG_CRASH beneath JSC::FTL::LowerDFGToLLVM::compileNode
     4        https://bugs.webkit.org/show_bug.cgi?id=141730
     5
     6        Reviewed by Geoffrey Garen.
     7
     8        Added a new failure handler, loweringFailed(), to LowerDFGToLLVM that reports failures
     9        while processing DFG lowering.  For debug builds, the failures are logged identical
     10        to the way the DFG_CRASH() reports them.  For release builds, the failures are reported
     11        and that FTL compilation is terminated, but the process is allowed to continue.
     12        Wrapped calls to loweringFailed() in a macro LOWERING_FAILED so the function and
     13        line number are reported at the point of the inconsistancy.
     14
     15        Converted instances of DFG_CRASH to LOWERING_FAILED.
     16
     17        * dfg/DFGPlan.cpp:
     18        (JSC::DFG::Plan::compileInThreadImpl): Added lowerDFGToLLVM() failure check that
     19        will fail the FTL compile.
     20
     21        * ftl/FTLLowerDFGToLLVM.cpp:
     22        (JSC::FTL::LowerDFGToLLVM::LowerDFGToLLVM):
     23        Added new member variable, m_loweringSucceeded, to stop compilation on the first
     24        reported failure.
     25
     26        * ftl/FTLLowerDFGToLLVM.cpp:
     27        (JSC::FTL::LowerDFGToLLVM::lower):
     28        * ftl/FTLLowerDFGToLLVM.h:
     29        Added check for compilation failures and now report those failures via a boolean
     30        return value.
     31
     32        * ftl/FTLLowerDFGToLLVM.cpp:
     33        (JSC::FTL::LowerDFGToLLVM::createPhiVariables):
     34        (JSC::FTL::LowerDFGToLLVM::compileNode):
     35        (JSC::FTL::LowerDFGToLLVM::compileUpsilon):
     36        (JSC::FTL::LowerDFGToLLVM::compilePhi):
     37        (JSC::FTL::LowerDFGToLLVM::compileDoubleRep):
     38        (JSC::FTL::LowerDFGToLLVM::compileValueRep):
     39        (JSC::FTL::LowerDFGToLLVM::compileValueToInt32):
     40        (JSC::FTL::LowerDFGToLLVM::compilePutLocal):
     41        (JSC::FTL::LowerDFGToLLVM::compileArithAddOrSub):
     42        (JSC::FTL::LowerDFGToLLVM::compileArithMul):
     43        (JSC::FTL::LowerDFGToLLVM::compileArithDiv):
     44        (JSC::FTL::LowerDFGToLLVM::compileArithMod):
     45        (JSC::FTL::LowerDFGToLLVM::compileArithMinOrMax):
     46        (JSC::FTL::LowerDFGToLLVM::compileArithAbs):
     47        (JSC::FTL::LowerDFGToLLVM::compileArithNegate):
     48        (JSC::FTL::LowerDFGToLLVM::compileArrayifyToStructure):
     49        (JSC::FTL::LowerDFGToLLVM::compileGetById):
     50        (JSC::FTL::LowerDFGToLLVM::compileGetMyArgumentByVal):
     51        (JSC::FTL::LowerDFGToLLVM::compileGetArrayLength):
     52        (JSC::FTL::LowerDFGToLLVM::compileGetByVal):
     53        (JSC::FTL::LowerDFGToLLVM::compilePutByVal):
     54        (JSC::FTL::LowerDFGToLLVM::compileArrayPush):
     55        (JSC::FTL::LowerDFGToLLVM::compileArrayPop):
     56        (JSC::FTL::LowerDFGToLLVM::compileNewArray):
     57        (JSC::FTL::LowerDFGToLLVM::compileToString):
     58        (JSC::FTL::LowerDFGToLLVM::compileMakeRope):
     59        (JSC::FTL::LowerDFGToLLVM::compileCompareEq):
     60        (JSC::FTL::LowerDFGToLLVM::compileCompareStrictEq):
     61        (JSC::FTL::LowerDFGToLLVM::compileSwitch):
     62        (JSC::FTL::LowerDFGToLLVM::compare):
     63        (JSC::FTL::LowerDFGToLLVM::boolify):
     64        (JSC::FTL::LowerDFGToLLVM::opposite):
     65        (JSC::FTL::LowerDFGToLLVM::lowJSValue):
     66        (JSC::FTL::LowerDFGToLLVM::speculate):
     67        (JSC::FTL::LowerDFGToLLVM::isArrayType):
     68        (JSC::FTL::LowerDFGToLLVM::exitValueForAvailability):
     69        (JSC::FTL::LowerDFGToLLVM::exitValueForNode):
     70        (JSC::FTL::LowerDFGToLLVM::setInt52):
     71        Changed DFG_CRASH() to LOWERING_FAILED().  Updated related control flow as appropriate.
     72
     73        (JSC::FTL::LowerDFGToLLVM::loweringFailed): New error reporting member function.
     74
    1752015-02-17  Filip Pizlo  <fpizlo@apple.com>
    276
  • trunk/Source/JavaScriptCore/dfg/DFGPlan.cpp

    r179882 r180247  
    387387
    388388        FTL::State state(dfg);
    389         FTL::lowerDFGToLLVM(state);
     389        if (!FTL::lowerDFGToLLVM(state)) {
     390            FTL::fail(state);
     391            return FTLPath;
     392        }
    390393       
    391394        if (reportCompileTimes())
  • trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp

    r180160 r180247  
    9494        : m_graph(state.graph)
    9595        , m_ftlState(state)
     96        , m_loweringSucceeded(true)
    9697        , m_heaps(state.context)
    9798        , m_out(state.context)
     
    103104    {
    104105    }
    105    
    106     void lower()
     106
     107
     108#define LOWERING_FAILED(node, reason)                                  \
     109    loweringFailed((node), __FILE__, __LINE__, WTF_PRETTY_FUNCTION, (reason));
     110
     111    bool lower()
    107112    {
    108113        CString name;
     
    252257                break;
    253258            default:
    254                 DFG_CRASH(m_graph, node, "Bad flush format for argument");
     259                LOWERING_FAILED(node, "Bad flush format for argument");
    255260                break;
    256261            }
    257262        }
     263
     264        if (!m_loweringSucceeded)
     265            return m_loweringSucceeded;
     266
    258267        m_out.jump(lowBlock(m_graph.block(0)));
    259268       
    260         for (BasicBlock* block : preOrder)
     269        for (BasicBlock* block : preOrder) {
    261270            compileBlock(block);
     271
     272            if (!m_loweringSucceeded)
     273                return m_loweringSucceeded;
     274        }
    262275       
    263276        if (Options::dumpLLVMIR())
     
    268281        if (validationEnabled())
    269282            verifyModule(m_ftlState.module);
     283
     284        return m_loweringSucceeded;
    270285    }
    271286
     
    300315                    break;
    301316                default:
    302                     DFG_CRASH(m_graph, node, "Bad Phi node result type");
    303                     break;
     317                    LOWERING_FAILED(node, "Bad Phi node result type");
     318                    return;
    304319                }
    305320                m_phis.add(node, buildAlloca(m_out.m_builder, type));
     
    797812            break;
    798813        default:
    799             DFG_CRASH(m_graph, m_node, "Unrecognized node in FTL backend");
    800             break;
    801         }
     814            LOWERING_FAILED(m_node, "Unrecognized node in FTL backend");
     815            break;
     816        }
     817
     818        if (!m_loweringSucceeded)
     819            return false;
    802820
    803821        if (!m_state.isValid()) {
     
    836854            break;
    837855        default:
    838             DFG_CRASH(m_graph, m_node, "Bad use kind");
     856            LOWERING_FAILED(m_node, "Bad use kind");
    839857            break;
    840858        }
     
    862880            break;
    863881        default:
    864             DFG_CRASH(m_graph, m_node, "Bad use kind");
     882            LOWERING_FAILED(m_node, "Bad use kind");
    865883            break;
    866884        }
     
    900918           
    901919        default:
    902             DFG_CRASH(m_graph, m_node, "Bad use kind");
     920            LOWERING_FAILED(m_node, "Bad use kind");
    903921        }
    904922    }
     
    925943           
    926944        default:
    927             DFG_CRASH(m_graph, m_node, "Bad use kind");
     945            LOWERING_FAILED(m_node, "Bad use kind");
    928946        }
    929947    }
     
    9881006           
    9891007        default:
    990             DFG_CRASH(m_graph, m_node, "Bad use kind");
     1008            LOWERING_FAILED(m_node, "Bad use kind");
    9911009            break;
    9921010        }
     
    10951113           
    10961114        default:
    1097             DFG_CRASH(m_graph, m_node, "Bad flush format");
     1115            LOWERING_FAILED(m_node, "Bad flush format");
    10981116            break;
    10991117        }
     
    12551273           
    12561274        default:
    1257             DFG_CRASH(m_graph, m_node, "Bad use kind");
     1275            LOWERING_FAILED(m_node, "Bad use kind");
    12581276            break;
    12591277        }
     
    13291347           
    13301348        default:
    1331             DFG_CRASH(m_graph, m_node, "Bad use kind");
     1349            LOWERING_FAILED(m_node, "Bad use kind");
    13321350            break;
    13331351        }
     
    14321450           
    14331451        default:
    1434             DFG_CRASH(m_graph, m_node, "Bad use kind");
     1452            LOWERING_FAILED(m_node, "Bad use kind");
    14351453            break;
    14361454        }
     
    15301548           
    15311549        default:
    1532             DFG_CRASH(m_graph, m_node, "Bad use kind");
     1550            LOWERING_FAILED(m_node, "Bad use kind");
    15331551            break;
    15341552        }
     
    15811599           
    15821600        default:
    1583             DFG_CRASH(m_graph, m_node, "Bad use kind");
     1601            LOWERING_FAILED(m_node, "Bad use kind");
    15841602            break;
    15851603        }
     
    16071625           
    16081626        default:
    1609             DFG_CRASH(m_graph, m_node, "Bad use kind");
     1627            LOWERING_FAILED(m_node, "Bad use kind");
    16101628            break;
    16111629        }
     
    17321750           
    17331751        default:
    1734             DFG_CRASH(m_graph, m_node, "Bad use kind");
     1752            LOWERING_FAILED(m_node, "Bad use kind");
    17351753            break;
    17361754        }
     
    18701888            break;
    18711889        default:
    1872             DFG_CRASH(m_graph, m_node, "Bad array type");
    1873             break;
     1890            LOWERING_FAILED(m_node, "Bad array type");
     1891            return;
    18741892        }
    18751893       
     
    19391957           
    19401958        default:
    1941             DFG_CRASH(m_graph, m_node, "Bad use kind");
     1959            LOWERING_FAILED(m_node, "Bad use kind");
    19421960            return;
    19431961        }
     
    20902108            // https://bugs.webkit.org/show_bug.cgi?id=129576
    20912109           
    2092             DFG_CRASH(m_graph, m_node, "Unimplemented");
     2110            LOWERING_FAILED(m_node, "Unimplemented");
     2111            return;
    20932112        }
    20942113       
     
    21362155            }
    21372156           
    2138             DFG_CRASH(m_graph, m_node, "Bad array type");
     2157            LOWERING_FAILED(m_node, "Bad array type");
    21392158            return;
    21402159        }
     
    22862305                        break;
    22872306                    default:
    2288                         DFG_CRASH(m_graph, m_node, "Bad element size");
     2307                        LOWERING_FAILED(m_node, "Bad element size");
     2308                        return;
    22892309                    }
    22902310                   
     
    23302350                    break;
    23312351                default:
    2332                     DFG_CRASH(m_graph, m_node, "Bad typed array type");
     2352                    LOWERING_FAILED(m_node, "Bad typed array type");
     2353                    return;
    23332354                }
    23342355               
     
    23372358            }
    23382359           
    2339             DFG_CRASH(m_graph, m_node, "Bad array type");
     2360            LOWERING_FAILED(m_node, "Bad array type");
    23402361            return;
    23412362        } }
     
    24412462                break;
    24422463            }
    2443                
     2464
    24442465            default:
    2445                 DFG_CRASH(m_graph, m_node, "Bad array type");
     2466                LOWERING_FAILED(m_node, "Bad array type");
     2467                return;
    24462468            }
    24472469
     
    25362558                       
    25372559                    default:
    2538                         DFG_CRASH(m_graph, m_node, "Bad use kind");
     2560                        LOWERING_FAILED(m_node, "Bad use kind");
     2561                        return;
    25392562                    }
    25402563                   
     
    25532576                        break;
    25542577                    default:
    2555                         DFG_CRASH(m_graph, m_node, "Bad element size");
     2578                        LOWERING_FAILED(m_node, "Bad element size");
     2579                        return;
    25562580                    }
    25572581                } else /* !isInt(type) */ {
     
    25672591                        break;
    25682592                    default:
    2569                         DFG_CRASH(m_graph, m_node, "Bad typed array type");
     2593                        LOWERING_FAILED(m_node, "Bad typed array type");
     2594                        return;
    25702595                    }
    25712596                }
     
    25912616            }
    25922617           
    2593             DFG_CRASH(m_graph, m_node, "Bad array type");
    2594             break;
     2618            LOWERING_FAILED(m_node, "Bad array type");
     2619            return;
    25952620        }
    25962621    }
     
    26632688           
    26642689        default:
    2665             DFG_CRASH(m_graph, m_node, "Bad array type");
     2690            LOWERING_FAILED(m_node, "Bad array type");
    26662691            return;
    26672692        }
     
    27212746
    27222747        default:
    2723             DFG_CRASH(m_graph, m_node, "Bad array type");
     2748            LOWERING_FAILED(m_node, "Bad array type");
    27242749            return;
    27252750        }
     
    27582783                case ALL_BLANK_INDEXING_TYPES:
    27592784                case ALL_UNDECIDED_INDEXING_TYPES:
    2760                     DFG_CRASH(m_graph, m_node, "Bad indexing type");
    2761                     break;
     2785                    LOWERING_FAILED(m_node, "Bad indexing type");
     2786                    return;
    27622787                   
    27632788                case ALL_DOUBLE_INDEXING_TYPES:
     
    27762801                   
    27772802                default:
    2778                     DFG_CRASH(m_graph, m_node, "Corrupt indexing type");
    2779                     break;
     2803                    LOWERING_FAILED(m_node, "Corrupt indexing type");
     2804                    return;
    27802805                }
    27812806            }
     
    30583083           
    30593084        default:
    3060             DFG_CRASH(m_graph, m_node, "Bad use kind");
    3061             break;
     3085            LOWERING_FAILED(m_node, "Bad use kind");
     3086            return;
    30623087        }
    30633088    }
     
    31503175            break;
    31513176        default:
    3152             DFG_CRASH(m_graph, m_node, "Bad number of children");
    3153             break;
     3177            LOWERING_FAILED(m_node, "Bad number of children");
     3178            return;
    31543179        }
    31553180        m_out.jump(continuation);
     
    35713596            return;
    35723597        }
    3573        
    3574         DFG_CRASH(m_graph, m_node, "Bad use kinds");
     3598
     3599        LOWERING_FAILED(m_node, "Bad use kinds");
    35753600    }
    35763601   
     
    36653690        }
    36663691       
    3667         DFG_CRASH(m_graph, m_node, "Bad use kinds");
     3692        LOWERING_FAILED(m_node, "Bad use kinds");
    36683693    }
    36693694   
     
    38513876               
    38523877            default:
    3853                 DFG_CRASH(m_graph, m_node, "Bad use kind");
    3854                 break;
     3878                LOWERING_FAILED(m_node, "Bad use kind");
     3879                return;
    38553880            }
    38563881           
     
    38973922               
    38983923            default:
    3899                 DFG_CRASH(m_graph, m_node, "Bad use kind");
    3900                 break;
     3924                LOWERING_FAILED(m_node, "Bad use kind");
     3925                return;
    39013926            }
    39023927           
     
    39503975       
    39513976        case SwitchString: {
    3952             DFG_CRASH(m_graph, m_node, "Unimplemented");
     3977            LOWERING_FAILED(m_node, "Unimplemented");
    39533978            return;
    39543979        }
     
    39733998               
    39743999            default:
    3975                 DFG_CRASH(m_graph, m_node, "Bad use kind");
     4000                LOWERING_FAILED(m_node, "Bad use kind");
    39764001                return;
    39774002            }
     
    39814006        } }
    39824007       
    3983         DFG_CRASH(m_graph, m_node, "Bad switch kind");
     4008        LOWERING_FAILED(m_node, "Bad switch kind");
    39844009    }
    39854010   
     
    49514976        }
    49524977       
    4953         DFG_CRASH(m_graph, m_node, "Bad use kinds");
     4978        LOWERING_FAILED(m_node, "Bad use kinds");
    49544979    }
    49554980   
     
    52645289        }
    52655290        default:
    5266             DFG_CRASH(m_graph, m_node, "Bad use kind");
     5291            LOWERING_FAILED(m_node, "Bad use kind");
    52675292            return 0;
    52685293        }
     
    56435668            return Int52;
    56445669        }
    5645         DFG_CRASH(m_graph, m_node, "Bad use kind");
     5670        LOWERING_FAILED(m_node, "Bad use kind");
    56465671        return Int52;
    56475672    }
     
    57875812        }
    57885813       
    5789         DFG_CRASH(m_graph, m_node, "Value not defined");
     5814        LOWERING_FAILED(m_node, "Value not defined");
    57905815        return 0;
    57915816    }
     
    61026127            break;
    61036128        default:
    6104             DFG_CRASH(m_graph, m_node, "Unsupported speculation use kind");
     6129            LOWERING_FAILED(m_node, "Unsupported speculation use kind");
     6130            return;
    61056131        }
    61066132    }
     
    61636189            switch (arrayMode.arrayClass()) {
    61646190            case Array::OriginalArray:
    6165                 DFG_CRASH(m_graph, m_node, "Unexpected original array");
     6191                LOWERING_FAILED(m_node, "Unexpected original array");
    61666192                return 0;
    61676193               
     
    61836209            }
    61846210           
    6185             DFG_CRASH(m_graph, m_node, "Corrupt array class");
     6211            LOWERING_FAILED(m_node, "Corrupt array class");
     6212            return 0;
    61866213        }
    61876214           
     
    67176744        }
    67186745       
    6719         DFG_CRASH(m_graph, m_node, "Invalid flush format");
     6746        LOWERING_FAILED(m_node, "Invalid flush format");
    67206747        return ExitValue::dead();
    67216748    }
     
    67906817            return exitArgument(arguments, ValueFormatDouble, value.value());
    67916818
    6792         DFG_CRASH(m_graph, m_node, toCString("Cannot find value for node: ", node).data());
     6819        LOWERING_FAILED(m_node, toCString("Cannot find value for node: ", node).data());
    67936820        return ExitValue::dead();
    67946821    }
     
    68486875        }
    68496876       
    6850         DFG_CRASH(m_graph, m_node, "Corrupt int52 kind");
     6877        LOWERING_FAILED(m_node, "Corrupt int52 kind");
    68516878    }
    68526879    void setJSValue(Node* node, LValue value)
     
    70027029        m_out.unreachable();
    70037030    }
    7004    
     7031
     7032    void loweringFailed(Node* node, const char* file, int line, const char* function, const char* assertion)
     7033    {
     7034#ifndef NDEBUG
     7035        m_graph.handleAssertionFailure(node, file, line, function, (assertion));
     7036#else
     7037        UNUSED_PARAM(node);
     7038        UNUSED_PARAM(file);
     7039        UNUSED_PARAM(line);
     7040        UNUSED_PARAM(function);
     7041        UNUSED_PARAM(assertion);
     7042#endif
     7043        m_loweringSucceeded = false;
     7044    }
     7045
    70057046    AvailabilityMap& availabilityMap() { return m_availabilityCalculator.m_availability; }
    70067047   
     
    70107051    Graph& m_graph;
    70117052    State& m_ftlState;
     7053    bool m_loweringSucceeded;
    70127054    AbstractHeapRepository m_heaps;
    70137055    Output m_out;
     
    70577099    unsigned m_tbaaKind;
    70587100    unsigned m_tbaaStructKind;
     7101
     7102#undef LOWERING_FAILED
    70597103};
    70607104
    7061 void lowerDFGToLLVM(State& state)
     7105bool lowerDFGToLLVM(State& state)
    70627106{
    70637107    LowerDFGToLLVM lowering(state);
    7064     lowering.lower();
     7108    return lowering.lower();
    70657109}
    70667110
  • trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.h

    r164424 r180247  
    3434namespace JSC { namespace FTL {
    3535
    36 void lowerDFGToLLVM(State&);
     36bool lowerDFGToLLVM(State&);
    3737
    3838} } // namespace JSC::FTL
Note: See TracChangeset for help on using the changeset viewer.