Global Metrics

path: .metrics.nexits.average
old: 1.5961538461538465
new: 1.6764705882352942

path: .metrics.nexits.sum
old: 166.0
new: 57.0

path: .metrics.loc.sloc
old: 1885.0
new: 645.0

path: .metrics.loc.blank
old: 296.0
new: 102.0

path: .metrics.loc.ploc
old: 1506.0
new: 481.0

path: .metrics.loc.lloc
old: 701.0
new: 221.0

path: .metrics.loc.cloc
old: 83.0
new: 62.0

path: .metrics.cognitive.average
old: 0.9807692307692308
new: 1.8235294117647056

path: .metrics.cognitive.sum
old: 102.0
new: 62.0

path: .metrics.cyclomatic.average
old: 3.7904761904761903
new: 2.4444444444444446

path: .metrics.cyclomatic.sum
old: 398.0
new: 88.0

path: .metrics.mi.mi_sei
old: -163.21791373141616
new: -49.49998607041337

path: .metrics.mi.mi_original
old: -99.82050732272867
new: -4.063219618674395

path: .metrics.nom.functions
old: 104.0
new: 34.0

path: .metrics.nom.total
old: 104.0
new: 34.0

path: .metrics.halstead.vocabulary
old: 449.0
new: 238.0

path: .metrics.halstead.level
old: 0.009170441424638067
new: 0.013375004200692271

path: .metrics.halstead.length
old: 6673.0
new: 1907.0

path: .metrics.halstead.effort
old: 6411135.712689868
new: 1125638.3361620924

path: .metrics.halstead.N1
old: 4171.0
new: 1144.0

path: .metrics.halstead.estimated_program_length
old: 3775.0864622481545
new: 1725.818986023814

path: .metrics.halstead.difficulty
old: 109.046004842615
new: 74.76633165829146

path: .metrics.halstead.n2
old: 413.0
new: 199.0

path: .metrics.halstead.purity_ratio
old: 0.5657255300836437
new: 0.90499160252953

path: .metrics.halstead.time
old: 356174.2062605482
new: 62535.46312011624

path: .metrics.halstead.bugs
old: 11.503642910077492
new: 3.606987708011563

path: .metrics.halstead.volume
old: 58792.94451862767
new: 15055.417474628248

path: .metrics.halstead.n1
old: 36.0
new: 39.0

path: .metrics.halstead.N2
old: 2502.0
new: 763.0

path: .metrics.nargs.average
old: 1.1730769230769231
new: 1.8235294117647056

path: .metrics.nargs.sum
old: 122.0
new: 62.0

Spaces Data

Minimal test - lines (269, 272)

path: .spaces[12].metrics.halstead.purity_ratio
old: 0.9694680336029704
new: 2.1333333333333333

path: .spaces[12].metrics.halstead.difficulty
old: 25.24390243902439
new: 5.0

path: .spaces[12].metrics.halstead.bugs
old: 0.4226171603689381
new: 0.013885962850227664

path: .spaces[12].metrics.halstead.length
old: 304.0
new: 15.0

path: .spaces[12].metrics.halstead.effort
old: 45144.26363539536
new: 268.87218755408674

path: .spaces[12].metrics.halstead.time
old: 2508.014646410853
new: 14.937343753004818

path: .spaces[12].metrics.halstead.volume
old: 1788.3234870059998
new: 53.77443751081734

path: .spaces[12].metrics.halstead.vocabulary
old: 59.0
new: 12.0

path: .spaces[12].metrics.halstead.n2
old: 41.0
new: 4.0

path: .spaces[12].metrics.halstead.level
old: 0.03961352657004831
new: 0.2

path: .spaces[12].metrics.halstead.N1
old: 189.0
new: 10.0

path: .spaces[12].metrics.halstead.N2
old: 115.0
new: 5.0

path: .spaces[12].metrics.halstead.n1
old: 18.0
new: 8.0

path: .spaces[12].metrics.halstead.estimated_program_length
old: 294.718282215303
new: 32.0

path: .spaces[12].metrics.loc.sloc
old: 60.0
new: 4.0

path: .spaces[12].metrics.loc.blank
old: 2.0
new: 0.0

path: .spaces[12].metrics.loc.lloc
old: 41.0
new: 2.0

path: .spaces[12].metrics.loc.ploc
old: 58.0
new: 4.0

path: .spaces[12].metrics.mi.mi_sei
old: 16.595533890757764
new: 108.4759871562677

path: .spaces[12].metrics.mi.mi_visual_studio
old: 36.95827018557415
new: 74.61466703602454

path: .spaces[12].metrics.mi.mi_original
old: 63.19864201733179
new: 127.59108063160195

path: .spaces[12].metrics.nexits.average
old: 2.0
new: 1.0

path: .spaces[12].metrics.nexits.sum
old: 2.0
new: 1.0

path: .spaces[12].metrics.nargs.sum
old: 2.0
new: 1.0

path: .spaces[12].metrics.nargs.average
old: 2.0
new: 1.0

path: .spaces[12].metrics.cognitive.average
old: 3.0
new: 0.0

path: .spaces[12].metrics.cognitive.sum
old: 3.0
new: 0.0

path: .spaces[12].metrics.cyclomatic.sum
old: 11.0
new: 1.0

path: .spaces[12].metrics.cyclomatic.average
old: 11.0
new: 1.0

Code

nsStorageStream::GetWriteInProgress(bool* aWriteInProgress) {
  *aWriteInProgress = mWriteInProgress;
  return NS_OK;
}

Minimal test - lines (69, 80)

path: .spaces[2].metrics.mi.mi_original
old: 124.68625431117268
new: 102.19868814350168

path: .spaces[2].metrics.mi.mi_sei
old: 104.2852086291407
new: 93.56707024447722

path: .spaces[2].metrics.mi.mi_visual_studio
old: 72.91593819366824
new: 59.76531470380215

path: .spaces[2].metrics.halstead.N2
old: 10.0
new: 18.0

path: .spaces[2].metrics.halstead.estimated_program_length
old: 52.529325012980806
new: 81.32499728470782

path: .spaces[2].metrics.halstead.N1
old: 13.0
new: 31.0

path: .spaces[2].metrics.halstead.time
old: 29.378639171486817
new: 144.07544830041584

path: .spaces[2].metrics.halstead.bugs
old: 0.021797910521911084
new: 0.06291976159671817

path: .spaces[2].metrics.halstead.purity_ratio
old: 2.2838836962165567
new: 1.6596938221368942

path: .spaces[2].metrics.halstead.volume
old: 94.0116453487578
new: 221.65453584679364

path: .spaces[2].metrics.halstead.n2
old: 8.0
new: 10.0

path: .spaces[2].metrics.halstead.difficulty
old: 5.625
new: 11.7

path: .spaces[2].metrics.halstead.level
old: 0.17777777777777778
new: 0.08547008547008547

path: .spaces[2].metrics.halstead.n1
old: 9.0
new: 13.0

path: .spaces[2].metrics.halstead.vocabulary
old: 17.0
new: 23.0

path: .spaces[2].metrics.halstead.effort
old: 528.8155050867626
new: 2593.3580694074853

path: .spaces[2].metrics.halstead.length
old: 23.0
new: 49.0

path: .spaces[2].metrics.cyclomatic.sum
old: 1.0
new: 2.0

path: .spaces[2].metrics.cyclomatic.average
old: 1.0
new: 2.0

path: .spaces[2].metrics.cognitive.average
old: 0.0
new: 1.0

path: .spaces[2].metrics.cognitive.sum
old: 0.0
new: 1.0

path: .spaces[2].metrics.loc.lloc
old: 1.0
new: 6.0

path: .spaces[2].metrics.loc.blank
old: 0.0
new: 2.0

path: .spaces[2].metrics.loc.sloc
old: 4.0
new: 12.0

path: .spaces[2].metrics.loc.cloc
old: 0.0
new: 1.0

path: .spaces[2].metrics.loc.ploc
old: 4.0
new: 9.0

path: .spaces[2].metrics.nexits.average
old: 1.0
new: 2.0

path: .spaces[2].metrics.nexits.sum
old: 1.0
new: 2.0

Code

nsStorageStream::Init(uint32_t aSegmentSize, uint32_t aMaxSize) {
  mSegmentedBuffer = new nsSegmentedBuffer();
  mSegmentSize = aSegmentSize;
  mSegmentSizeLog2 = mozilla::FloorLog2(aSegmentSize);

  // Segment size must be a power of two
  if (mSegmentSize != ((uint32_t)1 << mSegmentSizeLog2)) {
    return NS_ERROR_INVALID_ARG;
  }

  return mSegmentedBuffer->Init(aSegmentSize, aMaxSize);
}

Minimal test - lines (379, 395)

path: .spaces[15].metrics.mi.mi_original
old: 97.7036304632266
new: 94.70630883585642

path: .spaces[15].metrics.mi.mi_sei
old: 98.32081474848908
new: 61.23692968458931

path: .spaces[15].metrics.mi.mi_visual_studio
old: 57.1366260018869
new: 55.38380633675814

path: .spaces[15].metrics.loc.cloc
old: 3.0
new: 0.0

path: .spaces[15].metrics.loc.blank
old: 1.0
new: 3.0

path: .spaces[15].metrics.loc.lloc
old: 3.0
new: 6.0

path: .spaces[15].metrics.loc.ploc
old: 10.0
new: 14.0

path: .spaces[15].metrics.loc.sloc
old: 14.0
new: 17.0

path: .spaces[15].metrics.nargs.sum
old: 4.0
new: 2.0

path: .spaces[15].metrics.nargs.average
old: 4.0
new: 2.0

path: .spaces[15].metrics.cyclomatic.average
old: 2.0
new: 3.0

path: .spaces[15].metrics.cyclomatic.sum
old: 2.0
new: 3.0

path: .spaces[15].metrics.nexits.average
old: 2.0
new: 3.0

path: .spaces[15].metrics.nexits.sum
old: 2.0
new: 3.0

path: .spaces[15].metrics.halstead.n1
old: 12.0
new: 16.0

path: .spaces[15].metrics.halstead.purity_ratio
old: 1.679200273282233
new: 2.2247811383542624

path: .spaces[15].metrics.halstead.volume
old: 325.4847266735473
new: 302.6636471615072

path: .spaces[15].metrics.halstead.level
old: 0.10493827160493828
new: 0.08854166666666666

path: .spaces[15].metrics.halstead.bugs
old: 0.07089406571760533
new: 0.07564039548874765

path: .spaces[15].metrics.halstead.N1
old: 40.0
new: 36.0

path: .spaces[15].metrics.halstead.difficulty
old: 9.529411764705882
new: 11.294117647058824

path: .spaces[15].metrics.halstead.vocabulary
old: 29.0
new: 33.0

path: .spaces[15].metrics.halstead.estimated_program_length
old: 112.50641830990963
new: 133.48686830125575

path: .spaces[15].metrics.halstead.effort
old: 3101.67798359498
new: 3418.3188385299636

path: .spaces[15].metrics.halstead.length
old: 67.0
new: 60.0

path: .spaces[15].metrics.halstead.time
old: 172.31544353305446
new: 189.90660214055353

path: .spaces[15].metrics.halstead.N2
old: 27.0
new: 24.0

path: .spaces[15].metrics.cognitive.sum
old: 1.0
new: 2.0

path: .spaces[15].metrics.cognitive.average
old: 1.0
new: 2.0

Code

nsStorageStream::NewInputStream(int32_t aStartingOffset,
                                nsIInputStream** aInputStream) {
  if (NS_WARN_IF(!mSegmentedBuffer)) {
    return NS_ERROR_NOT_INITIALIZED;
  }

  RefPtr inputStream =
      new nsStorageInputStream(this, mSegmentSize);

  nsresult rv = inputStream->Seek(aStartingOffset);
  if (NS_FAILED(rv)) {
    return rv;
  }

  inputStream.forget(aInputStream);
  return NS_OK;
}

Minimal test - lines (404, 411)

path: .spaces[17].metrics.cognitive.average
old: 0.0
new: 1.0

path: .spaces[17].metrics.cognitive.sum
old: 0.0
new: 1.0

path: .spaces[17].metrics.cyclomatic.sum
old: 1.0
new: 2.0

path: .spaces[17].metrics.cyclomatic.average
old: 1.0
new: 2.0

path: .spaces[17].metrics.nexits.average
old: 0.0
new: 2.0

path: .spaces[17].metrics.nexits.sum
old: 0.0
new: 2.0

path: .spaces[17].metrics.loc.ploc
old: 3.0
new: 7.0

path: .spaces[17].metrics.loc.sloc
old: 3.0
new: 8.0

path: .spaces[17].metrics.loc.lloc
old: 1.0
new: 4.0

path: .spaces[17].metrics.loc.blank
old: 0.0
new: 1.0

path: .spaces[17].metrics.halstead.vocabulary
old: 11.0
new: 19.0

path: .spaces[17].metrics.halstead.N2
old: 6.0
new: 10.0

path: .spaces[17].metrics.halstead.estimated_program_length
old: 27.11941547876375
new: 62.05374780501027

path: .spaces[17].metrics.halstead.purity_ratio
old: 1.5066341932646528
new: 2.2162052787503668

path: .spaces[17].metrics.halstead.level
old: 0.2777777777777778
new: 0.14545454545454545

path: .spaces[17].metrics.halstead.n2
old: 5.0
new: 8.0

path: .spaces[17].metrics.halstead.time
old: 12.45395382709427
new: 45.42922479654945

path: .spaces[17].metrics.halstead.N1
old: 12.0
new: 18.0

path: .spaces[17].metrics.halstead.volume
old: 62.26976913547135
new: 118.9419703764204

path: .spaces[17].metrics.halstead.n1
old: 6.0
new: 11.0

path: .spaces[17].metrics.halstead.length
old: 18.0
new: 28.0

path: .spaces[17].metrics.halstead.bugs
old: 0.012300759181837836
new: 0.029148573077026212

path: .spaces[17].metrics.halstead.difficulty
old: 3.6
new: 6.875

path: .spaces[17].metrics.halstead.effort
old: 224.1711688876969
new: 817.7260463378901

path: .spaces[17].metrics.mi.mi_visual_studio
old: 76.89403824812207
new: 65.49949779376381

path: .spaces[17].metrics.mi.mi_original
old: 131.48880540428874
new: 112.0041412273361

path: .spaces[17].metrics.mi.mi_sei
old: 114.099215356573
new: 86.0906068345011

Code

nsStorageInputStream::Available(uint64_t* aAvailable) {
  if (NS_FAILED(mStatus)) {
    return mStatus;
  }

  *aAvailable = mStorageStream->mLogicalLength - mLogicalCursor;
  return NS_OK;
}

Minimal test - lines (148, 212)

path: .spaces[6].metrics.cognitive.average
old: 3.0
new: 11.0

path: .spaces[6].metrics.cognitive.sum
old: 3.0
new: 11.0

path: .spaces[6].metrics.loc.lloc
old: 30.0
new: 33.0

path: .spaces[6].metrics.loc.blank
old: 0.0
new: 6.0

path: .spaces[6].metrics.loc.cloc
old: 0.0
new: 6.0

path: .spaces[6].metrics.loc.ploc
old: 38.0
new: 53.0

path: .spaces[6].metrics.loc.sloc
old: 38.0
new: 65.0

path: .spaces[6].metrics.cyclomatic.average
old: 10.0
new: 8.0

path: .spaces[6].metrics.cyclomatic.sum
old: 10.0
new: 8.0

path: .spaces[6].metrics.mi.mi_visual_studio
old: 42.95925795821373
new: 37.51787029821227

path: .spaces[6].metrics.mi.mi_original
old: 73.46033110854549
new: 64.15555820994298

path: .spaces[6].metrics.mi.mi_sei
old: 31.29820199439172
new: 40.345178063586445

path: .spaces[6].metrics.nexits.sum
old: 10.0
new: 3.0

path: .spaces[6].metrics.nexits.average
old: 10.0
new: 3.0

path: .spaces[6].metrics.halstead.effort
old: 18017.607753270822
new: 34940.323454965095

path: .spaces[6].metrics.halstead.n2
old: 35.0
new: 37.0

path: .spaces[6].metrics.halstead.difficulty
old: 16.714285714285715
new: 26.39189189189189

path: .spaces[6].metrics.halstead.bugs
old: 0.2290921267423179
new: 0.3562569613614183

path: .spaces[6].metrics.halstead.N1
old: 113.0
new: 133.0

path: .spaces[6].metrics.halstead.level
old: 0.059829059829059825
new: 0.03789042498719918

path: .spaces[6].metrics.halstead.estimated_program_length
old: 238.1282645272016
new: 284.98844040662516

path: .spaces[6].metrics.halstead.purity_ratio
old: 1.2467448404565529
new: 1.2610107982594034

path: .spaces[6].metrics.halstead.n1
old: 15.0
new: 21.0

path: .spaces[6].metrics.halstead.length
old: 191.0
new: 226.0

path: .spaces[6].metrics.halstead.N2
old: 78.0
new: 93.0

path: .spaces[6].metrics.halstead.volume
old: 1077.9765322469725
new: 1323.9037048988312

path: .spaces[6].metrics.halstead.vocabulary
old: 50.0
new: 58.0

path: .spaces[6].metrics.halstead.time
old: 1000.9782085150456
new: 1941.1290808313945

path: .spaces[6].metrics.nargs.sum
old: 1.0
new: 3.0

path: .spaces[6].metrics.nargs.average
old: 1.0
new: 3.0

Code

nsStorageStream::Write(const char* aBuffer, uint32_t aCount,
                       uint32_t* aNumWritten) {
  if (NS_WARN_IF(!aNumWritten) || NS_WARN_IF(!aBuffer)) {
    return NS_ERROR_INVALID_ARG;
  }
  if (NS_WARN_IF(!mSegmentedBuffer)) {
    return NS_ERROR_NOT_INITIALIZED;
  }

  const char* readCursor;
  uint32_t count, availableInSegment, remaining;
  nsresult rv = NS_OK;

  LOG(("nsStorageStream [%p] Write mWriteCursor=%p mSegmentEnd=%p aCount=%d\n",
       this, mWriteCursor, mSegmentEnd, aCount));

  remaining = aCount;
  readCursor = aBuffer;
  // If no segments have been created yet, create one even if we don't have
  // to write any data; this enables creating an input stream which reads from
  // the very end of the data for any amount of data in the stream (i.e.
  // this stream contains N bytes of data and newInputStream(N) is called),
  // even for N=0 (with the caveat that we require .write("", 0) be called to
  // initialize internal buffers).
  bool firstTime = mSegmentedBuffer->GetSegmentCount() == 0;
  while (remaining || MOZ_UNLIKELY(firstTime)) {
    firstTime = false;
    availableInSegment = mSegmentEnd - mWriteCursor;
    if (!availableInSegment) {
      mWriteCursor = mSegmentedBuffer->AppendNewSegment();
      if (!mWriteCursor) {
        mSegmentEnd = 0;
        rv = NS_ERROR_OUT_OF_MEMORY;
        goto out;
      }
      mLastSegmentNum++;
      mSegmentEnd = mWriteCursor + mSegmentSize;
      availableInSegment = mSegmentEnd - mWriteCursor;
      LOG(
          ("nsStorageStream [%p] Write (new seg) mWriteCursor=%p "
           "mSegmentEnd=%p\n",
           this, mWriteCursor, mSegmentEnd));
    }

    count = XPCOM_MIN(availableInSegment, remaining);
    memcpy(mWriteCursor, readCursor, count);
    remaining -= count;
    readCursor += count;
    mWriteCursor += count;
    LOG(
        ("nsStorageStream [%p] Writing mWriteCursor=%p mSegmentEnd=%p "
         "count=%d\n",
         this, mWriteCursor, mSegmentEnd, count));
  }

out:
  *aNumWritten = aCount - remaining;
  mLogicalLength += *aNumWritten;

  LOG(
      ("nsStorageStream [%p] Wrote mWriteCursor=%p mSegmentEnd=%p "
       "numWritten=%d\n",
       this, mWriteCursor, mSegmentEnd, *aNumWritten));
  return rv;
}

Minimal test - lines (553, 558)

path: .spaces[25].metrics.halstead.volume
old: 51.89147427955946
new: 162.62707505625016

path: .spaces[25].metrics.halstead.N1
old: 9.0
new: 24.0

path: .spaces[25].metrics.halstead.estimated_program_length
old: 27.11941547876375
new: 57.219280948873624

path: .spaces[25].metrics.halstead.time
old: 10.378294855911893
new: 54.209025018750054

path: .spaces[25].metrics.halstead.bugs
old: 0.01089292262669305
new: 0.03279252157043551

path: .spaces[25].metrics.halstead.purity_ratio
old: 1.8079610319175832
new: 1.4671610499711183

path: .spaces[25].metrics.halstead.n2
old: 5.0
new: 10.0

path: .spaces[25].metrics.halstead.level
old: 0.2777777777777778
new: 0.16666666666666666

path: .spaces[25].metrics.halstead.effort
old: 186.8093074064141
new: 975.7624503375008

path: .spaces[25].metrics.halstead.length
old: 15.0
new: 39.0

path: .spaces[25].metrics.halstead.vocabulary
old: 11.0
new: 18.0

path: .spaces[25].metrics.halstead.N2
old: 6.0
new: 15.0

path: .spaces[25].metrics.halstead.difficulty
old: 3.6
new: 6.0

path: .spaces[25].metrics.halstead.n1
old: 6.0
new: 8.0

path: .spaces[25].metrics.loc.sloc
old: 3.0
new: 6.0

path: .spaces[25].metrics.loc.ploc
old: 3.0
new: 6.0

path: .spaces[25].metrics.nargs.average
old: 1.0
new: 6.0

path: .spaces[25].metrics.nargs.sum
old: 1.0
new: 6.0

path: .spaces[25].metrics.mi.mi_visual_studio
old: 77.4484663740452
new: 67.40813226703975

path: .spaces[25].metrics.mi.mi_original
old: 132.43687749961728
new: 115.26790617663798

path: .spaces[25].metrics.mi.mi_sei
old: 115.46699426690871
new: 90.69740448208164

Code

void nsStorageInputStream::Serialize(
    InputStreamParams& aParams, FileDescriptorArray&, bool aDelayedStart,
    uint32_t aMaxSize, uint32_t* aSizeUsed,
    mozilla::ipc::ParentToChildStreamActorManager* aManager) {
  SerializeInternal(aParams, aDelayedStart, aMaxSize, aSizeUsed, aManager);
}

Minimal test - lines (398, 401)

path: .spaces[16].metrics.mi.mi_sei
old: 7.319298270110683
new: 111.37444718573404

path: .spaces[16].metrics.mi.mi_visual_studio
old: 29.73437134294739
new: 75.78955557251007

path: .spaces[16].metrics.mi.mi_original
old: 50.84577499644004
new: 129.60014002899223

path: .spaces[16].metrics.cognitive.sum
old: 9.0
new: 0.0

path: .spaces[16].metrics.cognitive.average
old: 9.0
new: 0.0

path: .spaces[16].metrics.cyclomatic.average
old: 18.0
new: 1.0

path: .spaces[16].metrics.cyclomatic.sum
old: 18.0
new: 1.0

path: .spaces[16].metrics.nargs.sum
old: 1.0
new: 0.0

path: .spaces[16].metrics.nargs.average
old: 1.0
new: 0.0

path: .spaces[16].metrics.halstead.N2
old: 188.0
new: 4.0

path: .spaces[16].metrics.halstead.estimated_program_length
old: 726.6301075898987
new: 23.509775004326936

path: .spaces[16].metrics.halstead.purity_ratio
old: 1.5796306686736927
new: 2.1372522731206307

path: .spaces[16].metrics.halstead.time
old: 3402.9160420937733
new: 6.090201507293497

path: .spaces[16].metrics.halstead.difficulty
old: 19.38144329896907
new: 3.0

path: .spaces[16].metrics.halstead.n2
old: 97.0
new: 4.0

path: .spaces[16].metrics.halstead.effort
old: 61252.48875768792
new: 109.62362713128296

path: .spaces[16].metrics.halstead.length
old: 460.0
new: 11.0

path: .spaces[16].metrics.halstead.volume
old: 3160.367771008366
new: 36.541209043760986

path: .spaces[16].metrics.halstead.level
old: 0.05159574468085107
new: 0.3333333333333333

path: .spaces[16].metrics.halstead.N1
old: 272.0
new: 7.0

path: .spaces[16].metrics.halstead.n1
old: 20.0
new: 6.0

path: .spaces[16].metrics.halstead.vocabulary
old: 117.0
new: 10.0

path: .spaces[16].metrics.halstead.bugs
old: 0.5179580312574428
new: 0.007635102239890672

path: .spaces[16].metrics.loc.cloc
old: 1.0
new: 0.0

path: .spaces[16].metrics.loc.sloc
old: 97.0
new: 4.0

path: .spaces[16].metrics.loc.lloc
old: 71.0
new: 2.0

path: .spaces[16].metrics.loc.blank
old: 13.0
new: 0.0

path: .spaces[16].metrics.loc.ploc
old: 83.0
new: 4.0

Code

nsStorageInputStream::Close() {
  mStatus = NS_BASE_STREAM_CLOSED;
  return NS_OK;
}

Minimal test - lines (535, 551)

path: .spaces[24].metrics.cognitive.sum
old: 0.0
new: 2.0

path: .spaces[24].metrics.cognitive.average
old: 0.0
new: 2.0

path: .spaces[24].metrics.cyclomatic.sum
old: 1.0
new: 3.0

path: .spaces[24].metrics.cyclomatic.average
old: 1.0
new: 3.0

path: .spaces[24].metrics.halstead.volume
old: 51.89147427955946
new: 350.0

path: .spaces[24].metrics.halstead.purity_ratio
old: 1.8079610319175832
new: 1.8337374133538296

path: .spaces[24].metrics.halstead.time
old: 10.378294855911893
new: 226.85185185185185

path: .spaces[24].metrics.halstead.estimated_program_length
old: 27.11941547876375
new: 128.36161893476807

path: .spaces[24].metrics.halstead.vocabulary
old: 11.0
new: 32.0

path: .spaces[24].metrics.halstead.n1
old: 6.0
new: 14.0

path: .spaces[24].metrics.halstead.difficulty
old: 3.6
new: 11.666666666666666

path: .spaces[24].metrics.halstead.length
old: 15.0
new: 70.0

path: .spaces[24].metrics.halstead.N2
old: 6.0
new: 30.0

path: .spaces[24].metrics.halstead.level
old: 0.2777777777777778
new: 0.08571428571428572

path: .spaces[24].metrics.halstead.n2
old: 5.0
new: 18.0

path: .spaces[24].metrics.halstead.bugs
old: 0.01089292262669305
new: 0.08515731660893115

path: .spaces[24].metrics.halstead.effort
old: 186.8093074064141
new: 4083.333333333333

path: .spaces[24].metrics.halstead.N1
old: 9.0
new: 40.0

path: .spaces[24].metrics.nexits.average
old: 0.0
new: 3.0

path: .spaces[24].metrics.nexits.sum
old: 0.0
new: 3.0

path: .spaces[24].metrics.loc.blank
old: 0.0
new: 2.0

path: .spaces[24].metrics.loc.lloc
old: 1.0
new: 9.0

path: .spaces[24].metrics.loc.ploc
old: 3.0
new: 15.0

path: .spaces[24].metrics.loc.sloc
old: 3.0
new: 17.0

path: .spaces[24].metrics.mi.mi_original
old: 132.43687749961728
new: 93.95069142297532

path: .spaces[24].metrics.mi.mi_visual_studio
old: 77.4484663740452
new: 54.9419248087575

path: .spaces[24].metrics.mi.mi_sei
old: 115.46699426690871
new: 60.146804190216415

Code

nsresult nsStorageInputStream::Seek(uint32_t aPosition) {
  uint32_t length = mStorageStream->mLogicalLength;
  if (aPosition > length) {
    return NS_ERROR_INVALID_ARG;
  }

  if (length == 0) {
    return NS_OK;
  }

  mSegmentNum = SegNum(aPosition);
  mReadCursor = SegOffset(aPosition);
  uint32_t available = length - aPosition;
  mSegmentEnd = mReadCursor + XPCOM_MIN(mSegmentSize - mReadCursor, available);
  mLogicalCursor = aPosition;
  return NS_OK;
}

Minimal test - lines (233, 236)

path: .spaces[10].metrics.loc.lloc
old: 1.0
new: 2.0

path: .spaces[10].metrics.mi.mi_original
old: 125.7821630777101
new: 127.59108063160195

path: .spaces[10].metrics.mi.mi_sei
old: 105.86627077189092
new: 108.4759871562677

path: .spaces[10].metrics.mi.mi_visual_studio
old: 73.55682051328075
new: 74.61466703602454

path: .spaces[10].metrics.halstead.level
old: 0.15873015873015872
new: 0.2

path: .spaces[10].metrics.halstead.effort
old: 479.7267201792581
new: 268.87218755408674

path: .spaces[10].metrics.halstead.n2
old: 5.0
new: 4.0

path: .spaces[10].metrics.halstead.volume
old: 76.14709844115208
new: 53.77443751081734

path: .spaces[10].metrics.halstead.difficulty
old: 6.3
new: 5.0

path: .spaces[10].metrics.halstead.bugs
old: 0.020427161279358765
new: 0.013885962850227664

path: .spaces[10].metrics.halstead.vocabulary
old: 14.0
new: 12.0

path: .spaces[10].metrics.halstead.length
old: 20.0
new: 15.0

path: .spaces[10].metrics.halstead.estimated_program_length
old: 40.13896548741762
new: 32.0

path: .spaces[10].metrics.halstead.n1
old: 9.0
new: 8.0

path: .spaces[10].metrics.halstead.N1
old: 13.0
new: 10.0

path: .spaces[10].metrics.halstead.purity_ratio
old: 2.006948274370881
new: 2.1333333333333333

path: .spaces[10].metrics.halstead.N2
old: 7.0
new: 5.0

path: .spaces[10].metrics.halstead.time
old: 26.651484454403228
new: 14.937343753004818

Code

nsStorageStream::GetLength(uint32_t* aLength) {
  *aLength = mLogicalLength;
  return NS_OK;
}

Minimal test - lines (215, 218)

path: .spaces[7].metrics.loc.ploc
old: 35.0
new: 4.0

path: .spaces[7].metrics.loc.cloc
old: 3.0
new: 0.0

path: .spaces[7].metrics.loc.lloc
old: 27.0
new: 1.0

path: .spaces[7].metrics.loc.sloc
old: 38.0
new: 4.0

path: .spaces[7].metrics.cognitive.average
old: 1.0
new: 0.0

path: .spaces[7].metrics.cognitive.sum
old: 1.0
new: 0.0

path: .spaces[7].metrics.cyclomatic.average
old: 9.0
new: 1.0

path: .spaces[7].metrics.cyclomatic.sum
old: 9.0
new: 1.0

path: .spaces[7].metrics.mi.mi_sei
old: 53.134715121003595
new: 107.08549009080345

path: .spaces[7].metrics.mi.mi_original
old: 74.05287273733475
new: 126.62726151109852

path: .spaces[7].metrics.mi.mi_visual_studio
old: 43.30577353060512
new: 74.05103012344942

path: .spaces[7].metrics.nargs.average
old: 1.0
new: 3.0

path: .spaces[7].metrics.nargs.sum
old: 1.0
new: 3.0

path: .spaces[7].metrics.nexits.average
old: 9.0
new: 1.0

path: .spaces[7].metrics.nexits.sum
old: 9.0
new: 1.0

path: .spaces[7].metrics.halstead.level
old: 0.05925925925925926
new: 0.25

path: .spaces[7].metrics.halstead.bugs
old: 0.22008727249513912
new: 0.013540465538538844

path: .spaces[7].metrics.halstead.length
old: 181.0
new: 17.0

path: .spaces[7].metrics.halstead.vocabulary
old: 47.0
new: 14.0

path: .spaces[7].metrics.halstead.N2
old: 72.0
new: 6.0

path: .spaces[7].metrics.halstead.volume
old: 1005.3805821536524
new: 64.72503367497927

path: .spaces[7].metrics.halstead.N1
old: 109.0
new: 11.0

path: .spaces[7].metrics.halstead.n1
old: 15.0
new: 8.0

path: .spaces[7].metrics.halstead.time
old: 942.5442957690492
new: 14.38334081666206

path: .spaces[7].metrics.halstead.purity_ratio
old: 1.2077533642769491
new: 2.324104412019232

path: .spaces[7].metrics.halstead.n2
old: 32.0
new: 6.0

path: .spaces[7].metrics.halstead.difficulty
old: 16.875
new: 4.0

path: .spaces[7].metrics.halstead.estimated_program_length
old: 218.60335893412775
new: 39.50977500432694

path: .spaces[7].metrics.halstead.effort
old: 16965.797323842886
new: 258.9001346999171

Code

nsStorageStream::WriteFrom(nsIInputStream* aInStr, uint32_t aCount,
                           uint32_t* aResult) {
  return NS_ERROR_NOT_IMPLEMENTED;
}

Minimal test - lines (483, 489)

path: .spaces[20].metrics.halstead.n1
old: 6.0
new: 8.0

path: .spaces[20].metrics.halstead.difficulty
old: 3.6
new: 5.0

path: .spaces[20].metrics.halstead.estimated_program_length
old: 27.11941547876375
new: 32.0

path: .spaces[20].metrics.halstead.N2
old: 6.0
new: 5.0

path: .spaces[20].metrics.halstead.N1
old: 9.0
new: 10.0

path: .spaces[20].metrics.halstead.purity_ratio
old: 1.8079610319175832
new: 2.1333333333333333

path: .spaces[20].metrics.halstead.bugs
old: 0.01089292262669305
new: 0.013885962850227664

path: .spaces[20].metrics.halstead.time
old: 10.378294855911893
new: 14.937343753004818

path: .spaces[20].metrics.halstead.level
old: 0.2777777777777778
new: 0.2

path: .spaces[20].metrics.halstead.n2
old: 5.0
new: 4.0

path: .spaces[20].metrics.halstead.effort
old: 186.8093074064141
new: 268.87218755408674

path: .spaces[20].metrics.halstead.volume
old: 51.89147427955946
new: 53.77443751081734

path: .spaces[20].metrics.halstead.vocabulary
old: 11.0
new: 12.0

path: .spaces[20].metrics.mi.mi_visual_studio
old: 77.4484663740452
new: 69.31304378189948

path: .spaces[20].metrics.mi.mi_original
old: 132.43687749961728
new: 118.5253048670481

path: .spaces[20].metrics.mi.mi_sei
old: 115.46699426690871
new: 132.22850500107398

path: .spaces[20].metrics.nexits.average
old: 0.0
new: 1.0

path: .spaces[20].metrics.nexits.sum
old: 0.0
new: 1.0

path: .spaces[20].metrics.loc.ploc
old: 3.0
new: 4.0

path: .spaces[20].metrics.loc.cloc
old: 0.0
new: 2.0

path: .spaces[20].metrics.loc.lloc
old: 1.0
new: 2.0

path: .spaces[20].metrics.loc.sloc
old: 3.0
new: 7.0

path: .spaces[20].metrics.loc.blank
old: 0.0
new: 1.0

Code

nsStorageInputStream::IsNonBlocking(bool* aNonBlocking) {
  // TODO: This class should implement nsIAsyncInputStream so that callers
  // have some way of dealing with NS_BASE_STREAM_WOULD_BLOCK errors.

  *aNonBlocking = true;
  return NS_OK;
}

Minimal test - lines (530, 533)

path: .spaces[23].metrics.mi.mi_original
old: 132.43687749961728
new: 129.84369470176304

path: .spaces[23].metrics.mi.mi_sei
old: 115.46699426690871
new: 111.72582230432585

path: .spaces[23].metrics.mi.mi_visual_studio
old: 77.4484663740452
new: 75.93198520570938

path: .spaces[23].metrics.halstead.level
old: 0.2777777777777778
new: 0.4

path: .spaces[23].metrics.halstead.n2
old: 5.0
new: 4.0

path: .spaces[23].metrics.halstead.vocabulary
old: 11.0
new: 9.0

path: .spaces[23].metrics.halstead.effort
old: 186.8093074064141
new: 87.1729375396636

path: .spaces[23].metrics.halstead.N2
old: 6.0
new: 4.0

path: .spaces[23].metrics.halstead.volume
old: 51.89147427955946
new: 34.86917501586544

path: .spaces[23].metrics.halstead.purity_ratio
old: 1.8079610319175832
new: 1.7826945885851644

path: .spaces[23].metrics.halstead.difficulty
old: 3.6
new: 2.5

path: .spaces[23].metrics.halstead.N1
old: 9.0
new: 7.0

path: .spaces[23].metrics.halstead.length
old: 15.0
new: 11.0

path: .spaces[23].metrics.halstead.time
old: 10.378294855911893
new: 4.842940974425755

path: .spaces[23].metrics.halstead.bugs
old: 0.01089292262669305
new: 0.006553397824358721

path: .spaces[23].metrics.halstead.estimated_program_length
old: 27.11941547876375
new: 19.60964047443681

path: .spaces[23].metrics.halstead.n1
old: 6.0
new: 5.0

path: .spaces[23].metrics.loc.ploc
old: 3.0
new: 4.0

path: .spaces[23].metrics.loc.sloc
old: 3.0
new: 4.0

path: .spaces[23].metrics.loc.lloc
old: 1.0
new: 2.0

path: .spaces[23].metrics.nargs.average
old: 1.0
new: 0.0

path: .spaces[23].metrics.nargs.sum
old: 1.0
new: 0.0

path: .spaces[23].metrics.nexits.average
old: 0.0
new: 1.0

path: .spaces[23].metrics.nexits.sum
old: 0.0
new: 1.0

Code

nsStorageInputStream::SetEOF() {
  MOZ_ASSERT_UNREACHABLE("nsStorageInputStream::SetEOF");
  return NS_ERROR_NOT_IMPLEMENTED;
}

Minimal test - lines (240, 266)

path: .spaces[11].metrics.mi.mi_sei
old: 35.57817040379873
new: 48.027573301630895

path: .spaces[11].metrics.mi.mi_original
old: 60.96477570579857
new: 85.33855225658363

path: .spaces[11].metrics.mi.mi_visual_studio
old: 35.65191561742607
new: 49.90558611496118

path: .spaces[11].metrics.halstead.bugs
old: 0.4393136619142136
new: 0.09121197939525948

path: .spaces[11].metrics.halstead.N2
old: 120.0
new: 27.0

path: .spaces[11].metrics.halstead.difficulty
old: 25.714285714285715
new: 11.911764705882351

path: .spaces[11].metrics.halstead.estimated_program_length
old: 301.5359817826695
new: 128.09022723538357

path: .spaces[11].metrics.halstead.volume
old: 1860.6705376166833
new: 380.0

path: .spaces[11].metrics.halstead.n2
old: 42.0
new: 17.0

path: .spaces[11].metrics.halstead.effort
old: 47845.813824429
new: 4526.470588235295

path: .spaces[11].metrics.halstead.N1
old: 195.0
new: 49.0

path: .spaces[11].metrics.halstead.time
old: 2658.1007680238336
new: 251.47058823529417

path: .spaces[11].metrics.halstead.level
old: 0.03888888888888889
new: 0.08395061728395062

path: .spaces[11].metrics.halstead.purity_ratio
old: 0.9572570850243476
new: 1.685397726781363

path: .spaces[11].metrics.halstead.vocabulary
old: 60.0
new: 32.0

path: .spaces[11].metrics.halstead.length
old: 315.0
new: 76.0

path: .spaces[11].metrics.halstead.n1
old: 18.0
new: 15.0

path: .spaces[11].metrics.nargs.sum
old: 2.0
new: 1.0

path: .spaces[11].metrics.nargs.average
old: 2.0
new: 1.0

path: .spaces[11].metrics.cyclomatic.average
old: 11.0
new: 6.0

path: .spaces[11].metrics.cyclomatic.sum
old: 11.0
new: 6.0

path: .spaces[11].metrics.cognitive.sum
old: 3.0
new: 5.0

path: .spaces[11].metrics.cognitive.average
old: 3.0
new: 5.0

path: .spaces[11].metrics.loc.lloc
old: 42.0
new: 13.0

path: .spaces[11].metrics.loc.blank
old: 2.0
new: 5.0

path: .spaces[11].metrics.loc.ploc
old: 60.0
new: 22.0

path: .spaces[11].metrics.loc.sloc
old: 68.0
new: 27.0

path: .spaces[11].metrics.loc.cloc
old: 6.0
new: 0.0

path: .spaces[11].metrics.nexits.sum
old: 2.0
new: 4.0

path: .spaces[11].metrics.nexits.average
old: 2.0
new: 4.0

Code

nsStorageStream::SetLength(uint32_t aLength) {
  if (NS_WARN_IF(!mSegmentedBuffer)) {
    return NS_ERROR_NOT_INITIALIZED;
  }

  if (mWriteInProgress) {
    return NS_ERROR_NOT_AVAILABLE;
  }

  if (aLength > mLogicalLength) {
    return NS_ERROR_INVALID_ARG;
  }

  int32_t newLastSegmentNum = SegNum(aLength);
  int32_t segmentOffset = SegOffset(aLength);
  if (segmentOffset == 0) {
    newLastSegmentNum--;
  }

  while (newLastSegmentNum < mLastSegmentNum) {
    mSegmentedBuffer->DeleteLastSegment();
    mLastSegmentNum--;
  }

  mLogicalLength = aLength;
  return NS_OK;
}

Minimal test - lines (274, 319)

path: .spaces[13].metrics.cognitive.average
old: 4.0
new: 7.0

path: .spaces[13].metrics.cognitive.sum
old: 4.0
new: 7.0

path: .spaces[13].metrics.cyclomatic.average
old: 4.0
new: 7.0

path: .spaces[13].metrics.cyclomatic.sum
old: 4.0
new: 7.0

path: .spaces[13].metrics.halstead.effort
old: 3748.5
new: 13475.80591094916

path: .spaces[13].metrics.halstead.bugs
old: 0.0804359919668689
new: 0.1887622926377624

path: .spaces[13].metrics.halstead.length
old: 63.0
new: 134.0

path: .spaces[13].metrics.halstead.level
old: 0.08403361344537814
new: 0.0532741398446171

path: .spaces[13].metrics.halstead.n2
old: 15.0
new: 24.0

path: .spaces[13].metrics.halstead.N1
old: 42.0
new: 81.0

path: .spaces[13].metrics.halstead.vocabulary
old: 32.0
new: 41.0

path: .spaces[13].metrics.halstead.purity_ratio
old: 2.0331782100854534
new: 1.339746032228086

path: .spaces[13].metrics.halstead.estimated_program_length
old: 128.09022723538357
new: 179.5259683185635

path: .spaces[13].metrics.halstead.N2
old: 21.0
new: 53.0

path: .spaces[13].metrics.halstead.difficulty
old: 11.9
new: 18.770833333333332

path: .spaces[13].metrics.halstead.time
old: 208.25
new: 748.65588394162

path: .spaces[13].metrics.halstead.volume
old: 315.0
new: 717.9119686188233

path: .spaces[13].metrics.nexits.sum
old: 3.0
new: 4.0

path: .spaces[13].metrics.nexits.average
old: 3.0
new: 4.0

path: .spaces[13].metrics.loc.sloc
old: 15.0
new: 46.0

path: .spaces[13].metrics.loc.blank
old: 0.0
new: 7.0

path: .spaces[13].metrics.loc.cloc
old: 0.0
new: 8.0

path: .spaces[13].metrics.loc.ploc
old: 15.0
new: 31.0

path: .spaces[13].metrics.loc.lloc
old: 9.0
new: 20.0

path: .spaces[13].metrics.mi.mi_original
old: 96.29620902025091
new: 73.16900521009156

path: .spaces[13].metrics.mi.mi_sei
old: 63.632490655528144
new: 60.67463673577416

path: .spaces[13].metrics.mi.mi_visual_studio
old: 56.313572526462536
new: 42.788891935726056

Code

nsresult nsStorageStream::Seek(int32_t aPosition) {
  if (NS_WARN_IF(!mSegmentedBuffer)) {
    return NS_ERROR_NOT_INITIALIZED;
  }

  // An argument of -1 means "seek to end of stream"
  if (aPosition == -1) {
    aPosition = mLogicalLength;
  }

  // Seeking beyond the buffer end is illegal
  if ((uint32_t)aPosition > mLogicalLength) {
    return NS_ERROR_INVALID_ARG;
  }

  // Seeking backwards in the write stream results in truncation
  SetLength(aPosition);

  // Special handling for seek to start-of-buffer
  if (aPosition == 0) {
    mWriteCursor = 0;
    mSegmentEnd = 0;
    LOG(("nsStorageStream [%p] Seek mWriteCursor=%p mSegmentEnd=%p\n", this,
         mWriteCursor, mSegmentEnd));
    return NS_OK;
  }

  // Segment may have changed, so reset pointers
  mWriteCursor = mSegmentedBuffer->GetSegment(mLastSegmentNum);
  NS_ASSERTION(mWriteCursor, "null mWriteCursor");
  mSegmentEnd = mWriteCursor + mSegmentSize;

  // Adjust write cursor for current segment offset.  This test is necessary
  // because SegNum may reference the next-to-be-allocated segment, in which
  // case we need to be pointing at the end of the last segment.
  int32_t segmentOffset = SegOffset(aPosition);
  if (segmentOffset == 0 && (SegNum(aPosition) > (uint32_t)mLastSegmentNum)) {
    mWriteCursor = mSegmentEnd;
  } else {
    mWriteCursor += segmentOffset;
  }

  LOG(("nsStorageStream [%p] Seek mWriteCursor=%p mSegmentEnd=%p\n", this,
       mWriteCursor, mSegmentEnd));
  return NS_OK;
}

Minimal test - lines (52, 62)

path: .spaces[0].metrics.cognitive.average
old: 1.0
new: 0.0

path: .spaces[0].metrics.cognitive.sum
old: 1.0
new: 0.0

path: .spaces[0].metrics.halstead.estimated_program_length
old: 66.58307281799108
new: 68.81274391313339

path: .spaces[0].metrics.halstead.purity_ratio
old: 1.5853112575712165
new: 1.638398664598414

path: .spaces[0].metrics.halstead.time
old: 92.44123980731302
new: 41.05831690142995

path: .spaces[0].metrics.halstead.level
old: 0.1090909090909091
new: 0.2456140350877193

path: .spaces[0].metrics.halstead.bugs
old: 0.04680629402001702
new: 0.02724757418187592

path: .spaces[0].metrics.halstead.difficulty
old: 9.166666666666666
new: 4.071428571428571

path: .spaces[0].metrics.halstead.N1
old: 27.0
new: 23.0

path: .spaces[0].metrics.halstead.n2
old: 9.0
new: 14.0

path: .spaces[0].metrics.halstead.n1
old: 11.0
new: 6.0

path: .spaces[0].metrics.halstead.effort
old: 1663.9423165316346
new: 739.049704225739

path: .spaces[0].metrics.halstead.N2
old: 15.0
new: 19.0

path: .spaces[0].metrics.mi.mi_visual_studio
old: 63.09814701939025
new: 61.33155914425175

path: .spaces[0].metrics.mi.mi_original
old: 107.89783140315733
new: 104.87696613667048

path: .spaces[0].metrics.mi.mi_sei
old: 80.16645401480473
new: 75.70644681624599

path: .spaces[0].metrics.nargs.average
old: 2.0
new: 0.0

path: .spaces[0].metrics.nargs.sum
old: 2.0
new: 0.0

path: .spaces[0].metrics.nexits.sum
old: 2.0
new: 0.0

path: .spaces[0].metrics.nexits.average
old: 2.0
new: 0.0

path: .spaces[0].metrics.loc.lloc
old: 4.0
new: 1.0

path: .spaces[0].metrics.loc.ploc
old: 9.0
new: 11.0

path: .spaces[0].metrics.loc.sloc
old: 9.0
new: 11.0

path: .spaces[0].metrics.cyclomatic.sum
old: 2.0
new: 1.0

path: .spaces[0].metrics.cyclomatic.average
old: 2.0
new: 1.0

Code

nsStorageStream::nsStorageStream()
    : mSegmentedBuffer(0),
      mSegmentSize(0),
      mSegmentSizeLog2(0),
      mWriteInProgress(false),
      mLastSegmentNum(-1),
      mWriteCursor(0),
      mSegmentEnd(0),
      mLogicalLength(0) {
  LOG(("Creating nsStorageStream [%p].\n", this));
}

Minimal test - lines (520, 527)

path: .spaces[22].metrics.halstead.N2
old: 6.0
new: 8.0

path: .spaces[22].metrics.halstead.bugs
old: 0.01089292262669305
new: 0.02271649062674012

path: .spaces[22].metrics.halstead.effort
old: 186.8093074064141
new: 562.5922457676267

path: .spaces[22].metrics.halstead.n2
old: 5.0
new: 6.0

path: .spaces[22].metrics.halstead.length
old: 15.0
new: 24.0

path: .spaces[22].metrics.halstead.purity_ratio
old: 1.8079610319175832
new: 1.834962500721156

path: .spaces[22].metrics.halstead.n1
old: 6.0
new: 9.0

path: .spaces[22].metrics.halstead.volume
old: 51.89147427955946
new: 93.76537429460444

path: .spaces[22].metrics.halstead.estimated_program_length
old: 27.11941547876375
new: 44.039100017307746

path: .spaces[22].metrics.halstead.N1
old: 9.0
new: 16.0

path: .spaces[22].metrics.halstead.difficulty
old: 3.6
new: 6.0

path: .spaces[22].metrics.halstead.vocabulary
old: 11.0
new: 15.0

path: .spaces[22].metrics.halstead.time
old: 10.378294855911893
new: 31.255124764868143

path: .spaces[22].metrics.halstead.level
old: 0.2777777777777778
new: 0.16666666666666666

path: .spaces[22].metrics.nexits.average
old: 0.0
new: 2.0

path: .spaces[22].metrics.nexits.sum
old: 0.0
new: 2.0

path: .spaces[22].metrics.loc.blank
old: 0.0
new: 1.0

path: .spaces[22].metrics.loc.ploc
old: 3.0
new: 7.0

path: .spaces[22].metrics.loc.sloc
old: 3.0
new: 8.0

path: .spaces[22].metrics.loc.lloc
old: 1.0
new: 4.0

path: .spaces[22].metrics.cyclomatic.average
old: 1.0
new: 2.0

path: .spaces[22].metrics.cyclomatic.sum
old: 1.0
new: 2.0

path: .spaces[22].metrics.cognitive.sum
old: 0.0
new: 1.0

path: .spaces[22].metrics.cognitive.average
old: 0.0
new: 1.0

path: .spaces[22].metrics.mi.mi_sei
old: 115.46699426690871
new: 87.87488654298986

path: .spaces[22].metrics.mi.mi_original
old: 132.43687749961728
new: 113.24090967660544

path: .spaces[22].metrics.mi.mi_visual_studio
old: 77.4484663740452
new: 66.22275419684529

Code

nsStorageInputStream::Tell(int64_t* aResult) {
  if (NS_FAILED(mStatus)) {
    return mStatus;
  }

  *aResult = mLogicalCursor;
  return NS_OK;
}

Minimal test - lines (492, 517)

path: .spaces[21].metrics.nexits.average
old: 0.0
new: 4.0

path: .spaces[21].metrics.nexits.sum
old: 0.0
new: 4.0

path: .spaces[21].metrics.loc.sloc
old: 3.0
new: 26.0

path: .spaces[21].metrics.loc.blank
old: 0.0
new: 3.0

path: .spaces[21].metrics.loc.lloc
old: 1.0
new: 17.0

path: .spaces[21].metrics.loc.ploc
old: 3.0
new: 23.0

path: .spaces[21].metrics.mi.mi_original
old: 132.43687749961728
new: 85.83600462353488

path: .spaces[21].metrics.mi.mi_sei
old: 115.46699426690871
new: 48.74524536450993

path: .spaces[21].metrics.mi.mi_visual_studio
old: 77.4484663740452
new: 50.196493931891744

path: .spaces[21].metrics.halstead.difficulty
old: 3.6
new: 13.28125

path: .spaces[21].metrics.halstead.volume
old: 51.89147427955946
new: 388.4183471906009

path: .spaces[21].metrics.halstead.time
old: 10.378294855911893
new: 286.5933985347316

path: .spaces[21].metrics.halstead.n2
old: 5.0
new: 16.0

path: .spaces[21].metrics.halstead.N2
old: 6.0
new: 25.0

path: .spaces[21].metrics.halstead.estimated_program_length
old: 27.11941547876375
new: 133.48686830125575

path: .spaces[21].metrics.halstead.n1
old: 6.0
new: 17.0

path: .spaces[21].metrics.halstead.length
old: 15.0
new: 77.0

path: .spaces[21].metrics.halstead.bugs
old: 0.01089292262669305
new: 0.09951866397370736

path: .spaces[21].metrics.halstead.purity_ratio
old: 1.8079610319175832
new: 1.7335956922241007

path: .spaces[21].metrics.halstead.N1
old: 9.0
new: 52.0

path: .spaces[21].metrics.halstead.level
old: 0.2777777777777778
new: 0.07529411764705882

path: .spaces[21].metrics.halstead.vocabulary
old: 11.0
new: 33.0

path: .spaces[21].metrics.halstead.effort
old: 186.8093074064141
new: 5158.681173625168

path: .spaces[21].metrics.cyclomatic.average
old: 1.0
new: 6.0

path: .spaces[21].metrics.cyclomatic.sum
old: 1.0
new: 6.0

path: .spaces[21].metrics.cognitive.average
old: 0.0
new: 3.0

path: .spaces[21].metrics.cognitive.sum
old: 0.0
new: 3.0

path: .spaces[21].metrics.nargs.average
old: 1.0
new: 2.0

path: .spaces[21].metrics.nargs.sum
old: 1.0
new: 2.0

Code

nsStorageInputStream::Seek(int32_t aWhence, int64_t aOffset) {
  if (NS_FAILED(mStatus)) {
    return mStatus;
  }

  int64_t pos = aOffset;

  switch (aWhence) {
    case NS_SEEK_SET:
      break;
    case NS_SEEK_CUR:
      pos += mLogicalCursor;
      break;
    case NS_SEEK_END:
      pos += mStorageStream->mLogicalLength;
      break;
    default:
      MOZ_ASSERT_UNREACHABLE("unexpected whence value");
      return NS_ERROR_UNEXPECTED;
  }
  if (pos == int64_t(mLogicalCursor)) {
    return NS_OK;
  }

  return Seek(pos);
}

Minimal test - lines (568, 611)

path: .spaces[27].metrics.nexits.average
old: 0.0
new: 1.0

path: .spaces[27].metrics.nexits.sum
old: 0.0
new: 1.0

path: .spaces[27].metrics.halstead.N2
old: 6.0
new: 83.0

path: .spaces[27].metrics.halstead.estimated_program_length
old: 27.11941547876375
new: 255.60416835317895

path: .spaces[27].metrics.halstead.level
old: 0.2777777777777778
new: 0.051027639971651315

path: .spaces[27].metrics.halstead.difficulty
old: 3.6
new: 19.59722222222222

path: .spaces[27].metrics.halstead.n2
old: 5.0
new: 36.0

path: .spaces[27].metrics.halstead.time
old: 10.378294855911893
new: 1191.111335204658

path: .spaces[27].metrics.halstead.vocabulary
old: 11.0
new: 53.0

path: .spaces[27].metrics.halstead.volume
old: 51.89147427955946
new: 1094.032806821571

path: .spaces[27].metrics.halstead.length
old: 15.0
new: 191.0

path: .spaces[27].metrics.halstead.bugs
old: 0.01089292262669305
new: 0.25725391164453804

path: .spaces[27].metrics.halstead.N1
old: 9.0
new: 108.0

path: .spaces[27].metrics.halstead.purity_ratio
old: 1.8079610319175832
new: 1.3382417191265914

path: .spaces[27].metrics.halstead.effort
old: 186.8093074064141
new: 21440.004033683843

path: .spaces[27].metrics.halstead.n1
old: 6.0
new: 17.0

path: .spaces[27].metrics.loc.blank
old: 0.0
new: 11.0

path: .spaces[27].metrics.loc.ploc
old: 3.0
new: 33.0

path: .spaces[27].metrics.loc.sloc
old: 3.0
new: 44.0

path: .spaces[27].metrics.loc.lloc
old: 1.0
new: 18.0

path: .spaces[27].metrics.nargs.average
old: 1.0
new: 5.0

path: .spaces[27].metrics.nargs.sum
old: 1.0
new: 5.0

path: .spaces[27].metrics.cyclomatic.average
old: 1.0
new: 2.0

path: .spaces[27].metrics.cyclomatic.sum
old: 1.0
new: 2.0

path: .spaces[27].metrics.mi.mi_original
old: 132.43687749961728
new: 72.84847288399592

path: .spaces[27].metrics.mi.mi_visual_studio
old: 77.4484663740452
new: 42.60144613099177

path: .spaces[27].metrics.mi.mi_sei
old: 115.46699426690871
new: 29.60091829287124

path: .spaces[27].metrics.cognitive.average
old: 0.0
new: 1.0

path: .spaces[27].metrics.cognitive.sum
old: 0.0
new: 1.0

Code

void nsStorageInputStream::SerializeInternal(InputStreamParams& aParams,
                                             bool aDelayedStart,
                                             uint32_t aMaxSize,
                                             uint32_t* aSizeUsed, M* aManager) {
  MOZ_ASSERT(aSizeUsed);
  *aSizeUsed = 0;

  uint64_t remaining = 0;
  DebugOnly rv = Available(&remaining);
  MOZ_ASSERT(NS_SUCCEEDED(rv));

  if (remaining >= aMaxSize) {
    mozilla::ipc::InputStreamHelper::SerializeInputStreamAsPipe(
        this, aParams, aDelayedStart, aManager);
    return;
  }

  *aSizeUsed = remaining;

  nsCString combined;
  int64_t offset;
  rv = Tell(&offset);
  MOZ_ASSERT(NS_SUCCEEDED(rv));

  auto handleOrErr = combined.BulkWrite(remaining, 0, false);
  MOZ_ASSERT(!handleOrErr.isErr());

  auto handle = handleOrErr.unwrap();

  uint32_t numRead = 0;

  rv = Read(handle.Elements(), remaining, &numRead);
  MOZ_ASSERT(NS_SUCCEEDED(rv));

  MOZ_ASSERT(numRead == remaining);
  handle.Finish(numRead, false);

  rv = Seek(NS_SEEK_SET, offset);
  MOZ_ASSERT(NS_SUCCEEDED(rv));

  StringInputStreamParams params;
  params.data() = combined;
  aParams = params;
}

Minimal test - lines (227, 230)

path: .spaces[9].metrics.mi.mi_sei
old: 105.86627077189092
new: 108.4759871562677

path: .spaces[9].metrics.mi.mi_original
old: 125.7821630777101
new: 127.59108063160195

path: .spaces[9].metrics.mi.mi_visual_studio
old: 73.55682051328075
new: 74.61466703602454

path: .spaces[9].metrics.loc.lloc
old: 1.0
new: 2.0

path: .spaces[9].metrics.halstead.N1
old: 13.0
new: 10.0

path: .spaces[9].metrics.halstead.length
old: 20.0
new: 15.0

path: .spaces[9].metrics.halstead.n2
old: 5.0
new: 4.0

path: .spaces[9].metrics.halstead.vocabulary
old: 14.0
new: 12.0

path: .spaces[9].metrics.halstead.bugs
old: 0.020427161279358765
new: 0.013885962850227664

path: .spaces[9].metrics.halstead.purity_ratio
old: 2.006948274370881
new: 2.1333333333333333

path: .spaces[9].metrics.halstead.estimated_program_length
old: 40.13896548741762
new: 32.0

path: .spaces[9].metrics.halstead.effort
old: 479.7267201792581
new: 268.87218755408674

path: .spaces[9].metrics.halstead.level
old: 0.15873015873015872
new: 0.2

path: .spaces[9].metrics.halstead.time
old: 26.651484454403228
new: 14.937343753004818

path: .spaces[9].metrics.halstead.volume
old: 76.14709844115208
new: 53.77443751081734

path: .spaces[9].metrics.halstead.N2
old: 7.0
new: 5.0

path: .spaces[9].metrics.halstead.difficulty
old: 6.3
new: 5.0

path: .spaces[9].metrics.halstead.n1
old: 9.0
new: 8.0

Code

nsStorageStream::IsNonBlocking(bool* aNonBlocking) {
  *aNonBlocking = false;
  return NS_OK;
}

Minimal test - lines (613, 619)

path: .spaces[28].metrics.mi.mi_sei
old: 115.46699426690871
new: 92.80162719276018

path: .spaces[28].metrics.mi.mi_original
old: 132.43687749961728
new: 116.726442215815

path: .spaces[28].metrics.mi.mi_visual_studio
old: 77.4484663740452
new: 68.26107731919006

path: .spaces[28].metrics.halstead.n2
old: 5.0
new: 8.0

path: .spaces[28].metrics.halstead.n1
old: 6.0
new: 8.0

path: .spaces[28].metrics.halstead.time
old: 10.378294855911893
new: 16.88888888888889

path: .spaces[28].metrics.halstead.N1
old: 9.0
new: 11.0

path: .spaces[28].metrics.halstead.vocabulary
old: 11.0
new: 16.0

path: .spaces[28].metrics.halstead.effort
old: 186.8093074064141
new: 304.0

path: .spaces[28].metrics.halstead.level
old: 0.2777777777777778
new: 0.25

path: .spaces[28].metrics.halstead.estimated_program_length
old: 27.11941547876375
new: 48.0

path: .spaces[28].metrics.halstead.N2
old: 6.0
new: 8.0

path: .spaces[28].metrics.halstead.volume
old: 51.89147427955946
new: 76.0

path: .spaces[28].metrics.halstead.purity_ratio
old: 1.8079610319175832
new: 2.526315789473684

path: .spaces[28].metrics.halstead.length
old: 15.0
new: 19.0

path: .spaces[28].metrics.halstead.difficulty
old: 3.6
new: 4.0

path: .spaces[28].metrics.halstead.bugs
old: 0.01089292262669305
new: 0.015070504847894736

path: .spaces[28].metrics.nargs.average
old: 1.0
new: 2.0

path: .spaces[28].metrics.nargs.sum
old: 1.0
new: 2.0

path: .spaces[28].metrics.nexits.sum
old: 0.0
new: 1.0

path: .spaces[28].metrics.nexits.average
old: 0.0
new: 1.0

path: .spaces[28].metrics.loc.ploc
old: 3.0
new: 7.0

path: .spaces[28].metrics.loc.sloc
old: 3.0
new: 7.0

path: .spaces[28].metrics.loc.lloc
old: 1.0
new: 2.0

Code

bool nsStorageInputStream::Deserialize(const InputStreamParams& aParams,
                                       const FileDescriptorArray&) {
  MOZ_ASSERT_UNREACHABLE(
      "We should never attempt to deserialize a storage "
      "input stream.");
  return false;
}

Minimal test - lines (622, 625)

path: .spaces[29].metrics.loc.ploc
old: 3.0
new: 4.0

path: .spaces[29].metrics.loc.sloc
old: 3.0
new: 4.0

path: .spaces[29].metrics.loc.lloc
old: 1.0
new: 2.0

path: .spaces[29].metrics.nexits.sum
old: 0.0
new: 1.0

path: .spaces[29].metrics.nexits.average
old: 0.0
new: 1.0

path: .spaces[29].metrics.mi.mi_visual_studio
old: 77.4484663740452
new: 74.61466703602454

path: .spaces[29].metrics.mi.mi_sei
old: 115.46699426690871
new: 108.4759871562677

path: .spaces[29].metrics.mi.mi_original
old: 132.43687749961728
new: 127.59108063160195

path: .spaces[29].metrics.halstead.time
old: 10.378294855911893
new: 14.937343753004818

path: .spaces[29].metrics.halstead.n1
old: 6.0
new: 8.0

path: .spaces[29].metrics.halstead.estimated_program_length
old: 27.11941547876375
new: 32.0

path: .spaces[29].metrics.halstead.n2
old: 5.0
new: 4.0

path: .spaces[29].metrics.halstead.bugs
old: 0.01089292262669305
new: 0.013885962850227664

path: .spaces[29].metrics.halstead.N1
old: 9.0
new: 10.0

path: .spaces[29].metrics.halstead.level
old: 0.2777777777777778
new: 0.2

path: .spaces[29].metrics.halstead.vocabulary
old: 11.0
new: 12.0

path: .spaces[29].metrics.halstead.difficulty
old: 3.6
new: 5.0

path: .spaces[29].metrics.halstead.purity_ratio
old: 1.8079610319175832
new: 2.1333333333333333

path: .spaces[29].metrics.halstead.N2
old: 6.0
new: 5.0

path: .spaces[29].metrics.halstead.effort
old: 186.8093074064141
new: 268.87218755408674

path: .spaces[29].metrics.halstead.volume
old: 51.89147427955946
new: 53.77443751081734

Code

nsStorageInputStream::GetCloneable(bool* aCloneableOut) {
  *aCloneableOut = true;
  return NS_OK;
}

Minimal test - lines (632, 641)

path: .spaces[31].metrics.cyclomatic.sum
old: 1.0
new: 2.0

path: .spaces[31].metrics.cyclomatic.average
old: 1.0
new: 2.0

path: .spaces[31].metrics.mi.mi_visual_studio
old: 70.74120820686706
new: 61.068911716884486

path: .spaces[31].metrics.mi.mi_original
old: 120.96746603374264
new: 104.42783903587248

path: .spaces[31].metrics.mi.mi_sei
old: 98.92013122317636
new: 75.16031323460031

path: .spaces[31].metrics.halstead.n1
old: 9.0
new: 14.0

path: .spaces[31].metrics.halstead.estimated_program_length
old: 57.05865002596162
new: 106.60593781761293

path: .spaces[31].metrics.halstead.length
old: 23.0
new: 53.0

path: .spaces[31].metrics.halstead.effort
old: 479.54137516586593
new: 2930.082824994109

path: .spaces[31].metrics.halstead.purity_ratio
old: 2.4808108706939835
new: 2.011432789011564

path: .spaces[31].metrics.halstead.volume
old: 95.90827503317318
new: 254.789810869053

path: .spaces[31].metrics.halstead.level
old: 0.2
new: 0.08695652173913043

path: .spaces[31].metrics.halstead.N2
old: 10.0
new: 23.0

path: .spaces[31].metrics.halstead.difficulty
old: 5.0
new: 11.5

path: .spaces[31].metrics.halstead.bugs
old: 0.02042189951099715
new: 0.06825461319287086

path: .spaces[31].metrics.halstead.n2
old: 9.0
new: 14.0

path: .spaces[31].metrics.halstead.N1
old: 13.0
new: 30.0

path: .spaces[31].metrics.halstead.time
old: 26.641187509214777
new: 162.7823791663394

path: .spaces[31].metrics.halstead.vocabulary
old: 18.0
new: 28.0

path: .spaces[31].metrics.loc.sloc
old: 5.0
new: 10.0

path: .spaces[31].metrics.loc.ploc
old: 5.0
new: 10.0

path: .spaces[31].metrics.loc.lloc
old: 3.0
new: 4.0

path: .spaces[31].metrics.nexits.sum
old: 0.0
new: 2.0

path: .spaces[31].metrics.nexits.average
old: 0.0
new: 2.0

path: .spaces[31].metrics.nargs.sum
old: 1.0
new: 3.0

path: .spaces[31].metrics.nargs.average
old: 1.0
new: 3.0

path: .spaces[31].metrics.cognitive.sum
old: 0.0
new: 1.0

path: .spaces[31].metrics.cognitive.average
old: 0.0
new: 1.0

Code

nsresult NS_NewStorageStream(uint32_t aSegmentSize, uint32_t aMaxSize,
                             nsIStorageStream** aResult) {
  RefPtr storageStream = new nsStorageStream();
  nsresult rv = storageStream->Init(aSegmentSize, aMaxSize);
  if (NS_FAILED(rv)) {
    return rv;
  }
  storageStream.forget(aResult);
  return NS_OK;
}

Minimal test - lines (628, 630)

path: .spaces[30].metrics.mi.mi_original
old: 131.75107096021492
new: 131.28771108481735

path: .spaces[30].metrics.mi.mi_visual_studio
old: 77.04740991825433
new: 76.77643923088733

path: .spaces[30].metrics.mi.mi_sei
old: 114.47758457350372
new: 113.8090975791207

path: .spaces[30].metrics.halstead.effort
old: 241.762061585218
new: 302.05015714990327

path: .spaces[30].metrics.halstead.length
old: 16.0
new: 17.0

path: .spaces[30].metrics.halstead.estimated_program_length
old: 35.161259458730164
new: 39.50977500432694

path: .spaces[30].metrics.halstead.time
old: 13.431225643623222
new: 16.780564286105736

path: .spaces[30].metrics.halstead.N1
old: 9.0
new: 10.0

path: .spaces[30].metrics.halstead.difficulty
old: 4.083333333333333
new: 4.666666666666667

path: .spaces[30].metrics.halstead.purity_ratio
old: 2.1975787161706353
new: 2.324104412019232

path: .spaces[30].metrics.halstead.vocabulary
old: 13.0
new: 14.0

path: .spaces[30].metrics.halstead.level
old: 0.2448979591836735
new: 0.21428571428571427

path: .spaces[30].metrics.halstead.n1
old: 7.0
new: 8.0

path: .spaces[30].metrics.halstead.bugs
old: 0.012936124267933504
new: 0.015005994719638868

path: .spaces[30].metrics.halstead.volume
old: 59.207035490257475
new: 64.72503367497927

path: .spaces[30].metrics.nexits.sum
old: 0.0
new: 1.0

path: .spaces[30].metrics.nexits.average
old: 0.0
new: 1.0

Code

nsStorageInputStream::Clone(nsIInputStream** aCloneOut) {
  return mStorageStream->NewInputStream(mLogicalCursor, aCloneOut);
}

Minimal test - lines (64, 64)

path: .spaces[1].metrics.mi.mi_sei
old: 79.04076114614766
new: 146.92819499625

path: .spaces[1].metrics.mi.mi_visual_studio
old: 62.641848283667386
new: 90.2012398141466

path: .spaces[1].metrics.mi.mi_original
old: 107.11756056507124
new: 154.24412008219068

path: .spaces[1].metrics.loc.ploc
old: 9.0
new: 1.0

path: .spaces[1].metrics.loc.lloc
old: 4.0
new: 1.0

path: .spaces[1].metrics.loc.sloc
old: 9.0
new: 1.0

path: .spaces[1].metrics.cognitive.average
old: 1.0
new: 0.0

path: .spaces[1].metrics.cognitive.sum
old: 1.0
new: 0.0

path: .spaces[1].metrics.nargs.average
old: 2.0
new: 0.0

path: .spaces[1].metrics.nargs.sum
old: 2.0
new: 0.0

path: .spaces[1].metrics.nexits.average
old: 2.0
new: 0.0

path: .spaces[1].metrics.nexits.sum
old: 2.0
new: 0.0

path: .spaces[1].metrics.cyclomatic.sum
old: 2.0
new: 1.0

path: .spaces[1].metrics.cyclomatic.average
old: 2.0
new: 1.0

path: .spaces[1].metrics.halstead.vocabulary
old: 24.0
new: 8.0

path: .spaces[1].metrics.halstead.length
old: 46.0
new: 8.0

path: .spaces[1].metrics.halstead.N1
old: 27.0
new: 6.0

path: .spaces[1].metrics.halstead.n2
old: 12.0
new: 2.0

path: .spaces[1].metrics.halstead.purity_ratio
old: 1.8704152177675597
new: 2.188721875540867

path: .spaces[1].metrics.halstead.estimated_program_length
old: 86.03910001730775
new: 17.509775004326936

path: .spaces[1].metrics.halstead.effort
old: 2003.628612815145
new: 72.0

path: .spaces[1].metrics.halstead.bugs
old: 0.052977349770601034
new: 0.0057689982812296325

path: .spaces[1].metrics.halstead.difficulty
old: 9.5
new: 3.0

path: .spaces[1].metrics.halstead.N2
old: 19.0
new: 2.0

path: .spaces[1].metrics.halstead.n1
old: 12.0
new: 6.0

path: .spaces[1].metrics.halstead.time
old: 111.3127007119525
new: 4.0

path: .spaces[1].metrics.halstead.volume
old: 210.90827503317317
new: 24.0

path: .spaces[1].metrics.halstead.level
old: 0.10526315789473684
new: 0.3333333333333333

Code

nsStorageStream::~nsStorageStream() { delete mSegmentedBuffer; }

Minimal test - lines (414, 416)

path: .spaces[18].metrics.halstead.time
old: 10.378294855911893
new: 31.727957683813365

path: .spaces[18].metrics.halstead.N2
old: 6.0
new: 9.0

path: .spaces[18].metrics.halstead.length
old: 15.0
new: 25.0

path: .spaces[18].metrics.halstead.vocabulary
old: 11.0
new: 14.0

path: .spaces[18].metrics.halstead.level
old: 0.2777777777777778
new: 0.16666666666666666

path: .spaces[18].metrics.halstead.volume
old: 51.89147427955946
new: 95.1838730514401

path: .spaces[18].metrics.halstead.n2
old: 5.0
new: 6.0

path: .spaces[18].metrics.halstead.purity_ratio
old: 1.8079610319175832
new: 1.5803910001730777

path: .spaces[18].metrics.halstead.N1
old: 9.0
new: 16.0

path: .spaces[18].metrics.halstead.bugs
old: 0.01089292262669305
new: 0.02294502281013948

path: .spaces[18].metrics.halstead.estimated_program_length
old: 27.11941547876375
new: 39.50977500432694

path: .spaces[18].metrics.halstead.effort
old: 186.8093074064141
new: 571.1032383086406

path: .spaces[18].metrics.halstead.difficulty
old: 3.6
new: 6.0

path: .spaces[18].metrics.halstead.n1
old: 6.0
new: 8.0

path: .spaces[18].metrics.nexits.average
old: 0.0
new: 1.0

path: .spaces[18].metrics.nexits.sum
old: 0.0
new: 1.0

path: .spaces[18].metrics.mi.mi_original
old: 132.43687749961728
new: 129.28226618459504

path: .spaces[18].metrics.mi.mi_sei
old: 115.46699426690871
new: 110.91585216679393

path: .spaces[18].metrics.mi.mi_visual_studio
old: 77.4484663740452
new: 75.6036644354357

path: .spaces[18].metrics.nargs.sum
old: 1.0
new: 3.0

path: .spaces[18].metrics.nargs.average
old: 1.0
new: 3.0

Code

nsStorageInputStream::Read(char* aBuffer, uint32_t aCount, uint32_t* aNumRead) {
  return ReadSegments(NS_CopySegmentToBuffer, aBuffer, aCount, aNumRead);
}

Minimal test - lines (145, 145)

path: .spaces[5].metrics.cognitive.average
old: 15.0
new: 0.0

path: .spaces[5].metrics.cognitive.sum
old: 15.0
new: 0.0

path: .spaces[5].metrics.cyclomatic.average
old: 85.0
new: 1.0

path: .spaces[5].metrics.cyclomatic.sum
old: 85.0
new: 1.0

path: .spaces[5].metrics.mi.mi_original
old: 16.823780476208185
new: 155.2836050228807

path: .spaces[5].metrics.mi.mi_sei
old: -27.409908304569413
new: 148.4278547652622

path: .spaces[5].metrics.mi.mi_visual_studio
old: 9.838468114741628
new: 90.80912574437468

path: .spaces[5].metrics.loc.sloc
old: 246.0
new: 1.0

path: .spaces[5].metrics.loc.ploc
old: 201.0
new: 1.0

path: .spaces[5].metrics.loc.blank
old: 35.0
new: 0.0

path: .spaces[5].metrics.loc.cloc
old: 10.0
new: 0.0

path: .spaces[5].metrics.loc.lloc
old: 49.0
new: 1.0

path: .spaces[5].metrics.halstead.purity_ratio
old: 0.6614321671410276
new: 1.944234353490973

path: .spaces[5].metrics.halstead.level
old: 0.024067388688327317
new: 0.4

path: .spaces[5].metrics.halstead.N2
old: 277.0
new: 2.0

path: .spaces[5].metrics.halstead.length
old: 931.0
new: 7.0

path: .spaces[5].metrics.halstead.bugs
old: 1.3550690339700184
new: 0.004471319041702271

path: .spaces[5].metrics.halstead.n2
old: 80.0
new: 2.0

path: .spaces[5].metrics.halstead.difficulty
old: 41.55
new: 2.5

path: .spaces[5].metrics.halstead.estimated_program_length
old: 615.7933476082967
new: 13.60964047443681

path: .spaces[5].metrics.halstead.time
old: 14399.635813268762
new: 2.7293728408893374

path: .spaces[5].metrics.halstead.vocabulary
old: 104.0
new: 7.0

path: .spaces[5].metrics.halstead.effort
old: 259193.4446388377
new: 49.12871113600807

path: .spaces[5].metrics.halstead.N1
old: 654.0
new: 5.0

path: .spaces[5].metrics.halstead.volume
old: 6238.109377589356
new: 19.651484454403228

path: .spaces[5].metrics.halstead.n1
old: 24.0
new: 5.0

Code

nsStorageStream::Flush() { return NS_OK; }

Minimal test - lines (324, 372)

path: .spaces[14].metrics.halstead.n1
old: 18.0
new: 16.0

path: .spaces[14].metrics.halstead.length
old: 93.0
new: 148.0

path: .spaces[14].metrics.halstead.level
old: 0.06734006734006734
new: 0.078125

path: .spaces[14].metrics.halstead.vocabulary
old: 38.0
new: 56.0

path: .spaces[14].metrics.halstead.purity_ratio
old: 1.7365291604699875
new: 1.8707913769965847

path: .spaces[14].metrics.halstead.N1
old: 60.0
new: 84.0

path: .spaces[14].metrics.halstead.volume
old: 488.0572587502534
new: 859.4885284645253

path: .spaces[14].metrics.halstead.difficulty
old: 14.85
new: 12.8

path: .spaces[14].metrics.halstead.estimated_program_length
old: 161.49721192370885
new: 276.8771237954945

path: .spaces[14].metrics.halstead.n2
old: 20.0
new: 40.0

path: .spaces[14].metrics.halstead.time
old: 402.6472384689591
new: 611.1918424636625

path: .spaces[14].metrics.halstead.N2
old: 33.0
new: 64.0

path: .spaces[14].metrics.halstead.bugs
old: 0.12483706950839343
new: 0.1648841012793654

path: .spaces[14].metrics.halstead.effort
old: 7247.650292441263
new: 11001.453164345923

path: .spaces[14].metrics.nom.functions
old: 1.0
new: 3.0

path: .spaces[14].metrics.nom.total
old: 1.0
new: 3.0

path: .spaces[14].metrics.loc.lloc
old: 14.0
new: 2.0

path: .spaces[14].metrics.loc.ploc
old: 20.0
new: 42.0

path: .spaces[14].metrics.loc.blank
old: 4.0
new: 2.0

path: .spaces[14].metrics.loc.sloc
old: 24.0
new: 49.0

path: .spaces[14].metrics.loc.cloc
old: 0.0
new: 5.0

path: .spaces[14].metrics.nexits.average
old: 3.0
new: 0.6666666666666666

path: .spaces[14].metrics.nexits.sum
old: 3.0
new: 2.0

path: .spaces[14].metrics.cognitive.sum
old: 2.0
new: 0.0

path: .spaces[14].metrics.cognitive.average
old: 2.0
new: 0.0

path: .spaces[14].metrics.nargs.average
old: 2.0
new: 1.3333333333333333

path: .spaces[14].metrics.nargs.sum
old: 2.0
new: 4.0

path: .spaces[14].metrics.cyclomatic.average
old: 4.0
new: 1.0

path: .spaces[14].metrics.mi.mi_sei
old: 49.362893147007654
new: 52.181496318437986

path: .spaces[14].metrics.mi.mi_visual_studio
old: 50.52940218683902
new: 42.04652414334223

path: .spaces[14].metrics.mi.mi_original
old: 86.40527773949472
new: 71.89955628511521

Code

class nsStorageInputStream final : public nsIInputStream,
                                   public nsISeekableStream,
                                   public nsIIPCSerializableInputStream,
                                   public nsICloneableInputStream {
 public:
  nsStorageInputStream(nsStorageStream* aStorageStream, uint32_t aSegmentSize)
      : mStorageStream(aStorageStream),
        mReadCursor(0),
        mSegmentEnd(0),
        mSegmentNum(0),
        mSegmentSize(aSegmentSize),
        mLogicalCursor(0),
        mStatus(NS_OK) {}

  NS_DECL_THREADSAFE_ISUPPORTS
  NS_DECL_NSIINPUTSTREAM
  NS_DECL_NSISEEKABLESTREAM
  NS_DECL_NSITELLABLESTREAM
  NS_DECL_NSIIPCSERIALIZABLEINPUTSTREAM
  NS_DECL_NSICLONEABLEINPUTSTREAM

 private:
  ~nsStorageInputStream() = default;

 protected:
  nsresult Seek(uint32_t aPosition);

  friend class nsStorageStream;

 private:
  RefPtr mStorageStream;
  uint32_t mReadCursor;     // Next memory location to read byte, or 0
  uint32_t mSegmentEnd;     // One byte past end of current buffer segment
  uint32_t mSegmentNum;     // Segment number containing read cursor
  uint32_t mSegmentSize;    // All segments, except the last, are of this size
  uint32_t mLogicalCursor;  // Logical offset into stream
  nsresult mStatus;

  uint32_t SegNum(uint32_t aPosition) {
    return aPosition >> mStorageStream->mSegmentSizeLog2;
  }
  uint32_t SegOffset(uint32_t aPosition) {
    return aPosition & (mSegmentSize - 1);
  }

  template 
  void SerializeInternal(InputStreamParams& aParams, bool aDelayedStart,
                         uint32_t aMaxSize, uint32_t* aSizeUsed, M* aManager);
};

Minimal test - lines (560, 565)

path: .spaces[26].metrics.halstead.effort
old: 186.8093074064141
new: 975.7624503375008

path: .spaces[26].metrics.halstead.length
old: 15.0
new: 39.0

path: .spaces[26].metrics.halstead.n2
old: 5.0
new: 10.0

path: .spaces[26].metrics.halstead.level
old: 0.2777777777777778
new: 0.16666666666666666

path: .spaces[26].metrics.halstead.n1
old: 6.0
new: 8.0

path: .spaces[26].metrics.halstead.purity_ratio
old: 1.8079610319175832
new: 1.4671610499711183

path: .spaces[26].metrics.halstead.time
old: 10.378294855911893
new: 54.209025018750054

path: .spaces[26].metrics.halstead.volume
old: 51.89147427955946
new: 162.62707505625016

path: .spaces[26].metrics.halstead.vocabulary
old: 11.0
new: 18.0

path: .spaces[26].metrics.halstead.estimated_program_length
old: 27.11941547876375
new: 57.219280948873624

path: .spaces[26].metrics.halstead.N1
old: 9.0
new: 24.0

path: .spaces[26].metrics.halstead.bugs
old: 0.01089292262669305
new: 0.03279252157043551

path: .spaces[26].metrics.halstead.N2
old: 6.0
new: 15.0

path: .spaces[26].metrics.halstead.difficulty
old: 3.6
new: 6.0

path: .spaces[26].metrics.loc.ploc
old: 3.0
new: 6.0

path: .spaces[26].metrics.loc.sloc
old: 3.0
new: 6.0

path: .spaces[26].metrics.mi.mi_visual_studio
old: 77.4484663740452
new: 67.40813226703975

path: .spaces[26].metrics.mi.mi_original
old: 132.43687749961728
new: 115.26790617663798

path: .spaces[26].metrics.mi.mi_sei
old: 115.46699426690871
new: 90.69740448208164

path: .spaces[26].metrics.nargs.sum
old: 1.0
new: 6.0

path: .spaces[26].metrics.nargs.average
old: 1.0
new: 6.0

Code

void nsStorageInputStream::Serialize(
    InputStreamParams& aParams, FileDescriptorArray&, bool aDelayedStart,
    uint32_t aMaxSize, uint32_t* aSizeUsed,
    mozilla::ipc::ChildToParentStreamActorManager* aManager) {
  SerializeInternal(aParams, aDelayedStart, aMaxSize, aSizeUsed, aManager);
}

Minimal test - lines (120, 142)

path: .spaces[4].metrics.loc.lloc
old: 67.0
new: 9.0

path: .spaces[4].metrics.loc.sloc
old: 100.0
new: 23.0

path: .spaces[4].metrics.loc.blank
old: 13.0
new: 6.0

path: .spaces[4].metrics.loc.cloc
old: 6.0
new: 2.0

path: .spaces[4].metrics.loc.ploc
old: 81.0
new: 15.0

path: .spaces[4].metrics.mi.mi_visual_studio
old: 29.098584320530147
new: 52.90962872422184

path: .spaces[4].metrics.mi.mi_original
old: 49.75857918810655
new: 90.47546511841936

path: .spaces[4].metrics.mi.mi_sei
old: 17.15266533825386
new: 77.18848055719076

path: .spaces[4].metrics.cognitive.sum
old: 11.0
new: 2.0

path: .spaces[4].metrics.cognitive.average
old: 11.0
new: 2.0

path: .spaces[4].metrics.halstead.N2
old: 163.0
new: 22.0

path: .spaces[4].metrics.halstead.length
old: 410.0
new: 56.0

path: .spaces[4].metrics.halstead.difficulty
old: 21.6484375
new: 7.5625

path: .spaces[4].metrics.halstead.effort
old: 56271.61708419726
new: 2013.6948571662288

path: .spaces[4].metrics.halstead.estimated_program_length
old: 453.48686830125575
new: 102.05374780501026

path: .spaces[4].metrics.halstead.vocabulary
old: 81.0
new: 27.0

path: .spaces[4].metrics.halstead.n2
old: 64.0
new: 16.0

path: .spaces[4].metrics.halstead.N1
old: 247.0
new: 34.0

path: .spaces[4].metrics.halstead.volume
old: 2599.338501182696
new: 266.2737001211542

path: .spaces[4].metrics.halstead.n1
old: 17.0
new: 11.0

path: .spaces[4].metrics.halstead.level
old: 0.04619271021291952
new: 0.1322314049586777

path: .spaces[4].metrics.halstead.purity_ratio
old: 1.1060655324420872
new: 1.8223883536608976

path: .spaces[4].metrics.halstead.bugs
old: 0.48948382196665374
new: 0.053154640579350806

path: .spaces[4].metrics.halstead.time
old: 3126.20094912207
new: 111.87193650923491

path: .spaces[4].metrics.nargs.sum
old: 1.0
new: 0.0

path: .spaces[4].metrics.nargs.average
old: 1.0
new: 0.0

path: .spaces[4].metrics.nexits.average
old: 15.0
new: 2.0

path: .spaces[4].metrics.nexits.sum
old: 15.0
new: 2.0

path: .spaces[4].metrics.cyclomatic.average
old: 25.0
new: 3.0

path: .spaces[4].metrics.cyclomatic.sum
old: 25.0
new: 3.0

Code

nsStorageStream::Close() {
  if (NS_WARN_IF(!mSegmentedBuffer)) {
    return NS_ERROR_NOT_INITIALIZED;
  }

  mWriteInProgress = false;

  int32_t segmentOffset = SegOffset(mLogicalLength);

  // Shrink the final segment in the segmented buffer to the minimum size
  // needed to contain the data, so as to conserve memory.
  if (segmentOffset) {
    mSegmentedBuffer->ReallocLastSegment(segmentOffset);
  }

  mWriteCursor = 0;
  mSegmentEnd = 0;

  LOG(("nsStorageStream [%p] Close mWriteCursor=%p mSegmentEnd=%p\n", this,
       mWriteCursor, mSegmentEnd));

  return NS_OK;
}

Minimal test - lines (83, 117)

path: .spaces[3].metrics.mi.mi_sei
old: 111.00881611745795
new: 63.992493099445205

path: .spaces[3].metrics.mi.mi_original
old: 129.34670388489153
new: 78.93103313860611

path: .spaces[3].metrics.mi.mi_visual_studio
old: 75.64134730110615
new: 46.15849891146556

path: .spaces[3].metrics.cyclomatic.average
old: 1.0
new: 8.0

path: .spaces[3].metrics.cyclomatic.sum
old: 1.0
new: 8.0

path: .spaces[3].metrics.cognitive.average
old: 0.0
new: 7.0

path: .spaces[3].metrics.cognitive.sum
old: 0.0
new: 7.0

path: .spaces[3].metrics.loc.blank
old: 0.0
new: 4.0

path: .spaces[3].metrics.loc.ploc
old: 3.0
new: 27.0

path: .spaces[3].metrics.loc.sloc
old: 3.0
new: 35.0

path: .spaces[3].metrics.loc.lloc
old: 1.0
new: 17.0

path: .spaces[3].metrics.loc.cloc
old: 0.0
new: 4.0

path: .spaces[3].metrics.nexits.sum
old: 1.0
new: 6.0

path: .spaces[3].metrics.nexits.average
old: 1.0
new: 6.0

path: .spaces[3].metrics.halstead.volume
old: 94.0116453487578
new: 531.3642432941529

path: .spaces[3].metrics.halstead.difficulty
old: 5.625
new: 12.613636363636363

path: .spaces[3].metrics.halstead.level
old: 0.17777777777777778
new: 0.07927927927927927

path: .spaces[3].metrics.halstead.N1
old: 13.0
new: 65.0

path: .spaces[3].metrics.halstead.bugs
old: 0.021797910521911084
new: 0.11849512969348272

path: .spaces[3].metrics.halstead.length
old: 23.0
new: 102.0

path: .spaces[3].metrics.halstead.effort
old: 528.8155050867626
new: 6702.435341551246

path: .spaces[3].metrics.halstead.n2
old: 8.0
new: 22.0

path: .spaces[3].metrics.halstead.N2
old: 10.0
new: 37.0

path: .spaces[3].metrics.halstead.n1
old: 9.0
new: 15.0

path: .spaces[3].metrics.halstead.vocabulary
old: 17.0
new: 37.0

path: .spaces[3].metrics.halstead.time
old: 29.378639171486817
new: 372.3575189750693

path: .spaces[3].metrics.halstead.purity_ratio
old: 2.2838836962165567
new: 1.536380926903415

path: .spaces[3].metrics.halstead.estimated_program_length
old: 52.529325012980806
new: 156.71085454414833

Code

nsStorageStream::GetOutputStream(int32_t aStartingOffset,
                                 nsIOutputStream** aOutputStream) {
  if (NS_WARN_IF(!aOutputStream)) {
    return NS_ERROR_INVALID_ARG;
  }
  if (NS_WARN_IF(!mSegmentedBuffer)) {
    return NS_ERROR_NOT_INITIALIZED;
  }

  if (mWriteInProgress) {
    return NS_ERROR_NOT_AVAILABLE;
  }

  nsresult rv = Seek(aStartingOffset);
  if (NS_FAILED(rv)) {
    return rv;
  }

  // Enlarge the last segment in the buffer so that it is the same size as
  // all the other segments in the buffer.  (It may have been realloc'ed
  // smaller in the Close() method.)
  if (mLastSegmentNum >= 0)
    if (mSegmentedBuffer->ReallocLastSegment(mSegmentSize)) {
      // Need to re-Seek, since realloc changed segment base pointer
      rv = Seek(aStartingOffset);
      if (NS_FAILED(rv)) {
        return rv;
      }
    }

  NS_ADDREF(this);
  *aOutputStream = static_cast(this);
  mWriteInProgress = true;
  return NS_OK;
}

Minimal test - lines (221, 224)

path: .spaces[8].metrics.nargs.sum
old: 1.0
new: 4.0

path: .spaces[8].metrics.nargs.average
old: 1.0
new: 4.0

path: .spaces[8].metrics.cyclomatic.sum
old: 10.0
new: 1.0

path: .spaces[8].metrics.cyclomatic.average
old: 10.0
new: 1.0

path: .spaces[8].metrics.halstead.purity_ratio
old: 1.2367194624922828
new: 2.1825742227201617

path: .spaces[8].metrics.halstead.length
old: 213.0
new: 20.0

path: .spaces[8].metrics.halstead.bugs
old: 0.2652814005998025
new: 0.015351809402487026

path: .spaces[8].metrics.halstead.time
old: 1247.2961438899558
new: 17.363958202704527

path: .spaces[8].metrics.halstead.estimated_program_length
old: 263.42124551085624
new: 43.65148445440323

path: .spaces[8].metrics.halstead.n2
old: 38.0
new: 7.0

path: .spaces[8].metrics.halstead.difficulty
old: 18.31578947368421
new: 4.0

path: .spaces[8].metrics.halstead.N2
old: 87.0
new: 7.0

path: .spaces[8].metrics.halstead.N1
old: 126.0
new: 13.0

path: .spaces[8].metrics.halstead.effort
old: 22451.330590019206
new: 312.5512476486815

path: .spaces[8].metrics.halstead.volume
old: 1225.7910379608188
new: 78.13781191217038

path: .spaces[8].metrics.halstead.n1
old: 16.0
new: 8.0

path: .spaces[8].metrics.halstead.vocabulary
old: 54.0
new: 15.0

path: .spaces[8].metrics.halstead.level
old: 0.05459770114942529
new: 0.25

path: .spaces[8].metrics.cognitive.average
old: 3.0
new: 0.0

path: .spaces[8].metrics.cognitive.sum
old: 3.0
new: 0.0

path: .spaces[8].metrics.loc.ploc
old: 44.0
new: 4.0

path: .spaces[8].metrics.loc.cloc
old: 8.0
new: 0.0

path: .spaces[8].metrics.loc.sloc
old: 52.0
new: 4.0

path: .spaces[8].metrics.loc.lloc
old: 30.0
new: 1.0

path: .spaces[8].metrics.nexits.average
old: 10.0
new: 1.0

path: .spaces[8].metrics.nexits.sum
old: 10.0
new: 1.0

path: .spaces[8].metrics.mi.mi_sei
old: 51.55021383644859
new: 105.6726654533256

path: .spaces[8].metrics.mi.mi_original
old: 67.71087512776504
new: 125.64796609700514

path: .spaces[8].metrics.mi.mi_visual_studio
old: 39.59700299869301
new: 73.47834274678662

Code

nsStorageStream::WriteSegments(nsReadSegmentFun aReader, void* aClosure,
                               uint32_t aCount, uint32_t* aResult) {
  return NS_ERROR_NOT_IMPLEMENTED;
}

Minimal test - lines (419, 480)

path: .spaces[19].metrics.cognitive.average
old: 0.0
new: 18.0

path: .spaces[19].metrics.cognitive.sum
old: 0.0
new: 18.0

path: .spaces[19].metrics.cyclomatic.average
old: 1.0
new: 12.0

path: .spaces[19].metrics.cyclomatic.sum
old: 1.0
new: 12.0

path: .spaces[19].metrics.nexits.sum
old: 0.0
new: 4.0

path: .spaces[19].metrics.nexits.average
old: 0.0
new: 4.0

path: .spaces[19].metrics.nargs.average
old: 1.0
new: 4.0

path: .spaces[19].metrics.nargs.sum
old: 1.0
new: 4.0

path: .spaces[19].metrics.mi.mi_original
old: 132.43687749961728
new: 64.16466394569191

path: .spaces[19].metrics.mi.mi_visual_studio
old: 77.4484663740452
new: 37.52319528987831

path: .spaces[19].metrics.mi.mi_sei
old: 115.46699426690871
new: 41.26561029791128

path: .spaces[19].metrics.loc.sloc
old: 3.0
new: 62.0

path: .spaces[19].metrics.loc.blank
old: 0.0
new: 8.0

path: .spaces[19].metrics.loc.lloc
old: 1.0
new: 32.0

path: .spaces[19].metrics.loc.ploc
old: 3.0
new: 48.0

path: .spaces[19].metrics.loc.cloc
old: 0.0
new: 6.0

path: .spaces[19].metrics.halstead.effort
old: 186.8093074064141
new: 42277.3151136991

path: .spaces[19].metrics.halstead.n2
old: 5.0
new: 33.0

path: .spaces[19].metrics.halstead.time
old: 10.378294855911893
new: 2348.739728538839

path: .spaces[19].metrics.halstead.length
old: 15.0
new: 219.0

path: .spaces[19].metrics.halstead.purity_ratio
old: 1.8079610319175832
new: 1.290234751978069

path: .spaces[19].metrics.halstead.volume
old: 51.89147427955946
new: 1282.8978379329385

path: .spaces[19].metrics.halstead.estimated_program_length
old: 27.11941547876375
new: 282.5614106831971

path: .spaces[19].metrics.halstead.vocabulary
old: 11.0
new: 58.0

path: .spaces[19].metrics.halstead.N2
old: 6.0
new: 87.0

path: .spaces[19].metrics.halstead.bugs
old: 0.01089292262669305
new: 0.404529636833066

path: .spaces[19].metrics.halstead.level
old: 0.2777777777777778
new: 0.030344827586206897

path: .spaces[19].metrics.halstead.n1
old: 6.0
new: 25.0

path: .spaces[19].metrics.halstead.N1
old: 9.0
new: 132.0

path: .spaces[19].metrics.halstead.difficulty
old: 3.6
new: 32.95454545454545

Code

nsStorageInputStream::ReadSegments(nsWriteSegmentFun aWriter, void* aClosure,
                                   uint32_t aCount, uint32_t* aNumRead) {
  *aNumRead = 0;
  if (mStatus == NS_BASE_STREAM_CLOSED) {
    return NS_OK;
  }
  if (NS_FAILED(mStatus)) {
    return mStatus;
  }

  uint32_t count, availableInSegment, remainingCapacity, bytesConsumed;
  nsresult rv;

  remainingCapacity = aCount;
  while (remainingCapacity) {
    availableInSegment = mSegmentEnd - mReadCursor;
    if (!availableInSegment) {
      uint32_t available = mStorageStream->mLogicalLength - mLogicalCursor;
      if (!available) {
        goto out;
      }

      // We have data in the stream, but if mSegmentEnd is zero, then we
      // were likely constructed prior to any data being written into
      // the stream.  Therefore, if mSegmentEnd is non-zero, we should
      // move into the next segment; otherwise, we should stay in this
      // segment so our input state can be updated and we can properly
      // perform the initial read.
      if (mSegmentEnd > 0) {
        mSegmentNum++;
      }
      mReadCursor = 0;
      mSegmentEnd = XPCOM_MIN(mSegmentSize, available);
      availableInSegment = mSegmentEnd;
    }
    const char* cur = mStorageStream->mSegmentedBuffer->GetSegment(mSegmentNum);

    count = XPCOM_MIN(availableInSegment, remainingCapacity);
    rv = aWriter(this, aClosure, cur + mReadCursor, aCount - remainingCapacity,
                 count, &bytesConsumed);
    if (NS_FAILED(rv) || (bytesConsumed == 0)) {
      break;
    }
    remainingCapacity -= bytesConsumed;
    mReadCursor += bytesConsumed;
    mLogicalCursor += bytesConsumed;
  }

out:
  *aNumRead = aCount - remainingCapacity;

  bool isWriteInProgress = false;
  if (NS_FAILED(mStorageStream->GetWriteInProgress(&isWriteInProgress))) {
    isWriteInProgress = false;
  }

  if (*aNumRead == 0 && isWriteInProgress) {
    return NS_BASE_STREAM_WOULD_BLOCK;
  }

  return NS_OK;
}