LCOV - code coverage report
Current view: top level - js/src/jit/x86-shared - BaselineIC-x86-shared.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 20 20 100.0 %
Date: 2017-07-14 16:53:18 Functions: 3 3 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
       2             :  * vim: set ts=8 sts=4 et sw=4 tw=99:
       3             :  * This Source Code Form is subject to the terms of the Mozilla Public
       4             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       5             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       6             : 
       7             : #include "jit/BaselineIC.h"
       8             : #include "jit/SharedICHelpers.h"
       9             : 
      10             : #include "jit/MacroAssembler-inl.h"
      11             : 
      12             : using namespace js;
      13             : using namespace js::jit;
      14             : 
      15             : bool
      16          11 : ICCompare_Double::Compiler::generateStubCode(MacroAssembler& masm)
      17             : {
      18          22 :     Label failure, notNaN;
      19          11 :     masm.ensureDouble(R0, FloatReg0, &failure);
      20          11 :     masm.ensureDouble(R1, FloatReg1, &failure);
      21             : 
      22          11 :     Register dest = R0.scratchReg();
      23             : 
      24          11 :     Assembler::DoubleCondition cond = JSOpToDoubleCondition(op);
      25          11 :     masm.mov(ImmWord(0), dest);
      26          11 :     masm.compareDouble(cond, FloatReg0, FloatReg1);
      27          11 :     masm.setCC(Assembler::ConditionFromDoubleCondition(cond), dest);
      28             : 
      29             :     // Check for NaN, if needed.
      30          11 :     Assembler::NaNCond nanCond = Assembler::NaNCondFromDoubleCondition(cond);
      31          11 :     if (nanCond != Assembler::NaN_HandledByCond) {
      32           6 :       masm.j(Assembler::NoParity, &notNaN);
      33           6 :       masm.mov(ImmWord(nanCond == Assembler::NaN_IsTrue), dest);
      34           6 :       masm.bind(&notNaN);
      35             :     }
      36             : 
      37          11 :     masm.tagValue(JSVAL_TYPE_BOOLEAN, dest, R0);
      38          11 :     EmitReturnFromIC(masm);
      39             : 
      40             :     // Failure case - jump to next stub
      41          11 :     masm.bind(&failure);
      42          11 :     EmitStubGuardFailure(masm);
      43          22 :     return true;
      44           9 : }

Generated by: LCOV version 1.13