Bug 300030 (reflow-refactor)

Refactor intrinsic width computation out of nsIFrame::Reflow

RESOLVED FIXED in mozilla1.9alpha1

Status

()

P1
major
RESOLVED FIXED
14 years ago
2 years ago

People

(Reporter: dbaron, Assigned: dbaron)

Tracking

(Depends on: 38 bugs, Blocks: 4 bugs)

Trunk
mozilla1.9alpha1
Points:
---
349760, 357527, 362880, 363044, 363391, 363423, 363443, 364434, 364933, 365131, 366791, 367042, 368553, 371829, 372498, 373960, 386662, 387866, 394154, 410233, 412572, 413028, 415166, 430608, 431403, 434317, 439323, 445134, 453967, 454555, 456328, 466835, 467932, 471763, 477004, 487860, 979834, 1165595, 134706, 271049, 333352, 349255, 349297, 355648, 357044, 357457, 357544, 359769, 360636, 360786, 362210, 363072, 363144, 363146, 363154, 363176, 363183, 363240, 363248, 363253, 363268, 363276, 363285, 363295, 363316, 363329, 363333, 363367, 363374, 363382, 363388, 363389, 363402, 363437, 363466, 363496, 363524, 363528, 363573, 363637, 363674, 363675, 363696, 363707, 363722, 363729, 363732, 363759, 363805, 363807, 363858, 363874, 363882, 363933, 364014, 364066, 364079, 364124, 364220, 364314, 364427, 364510, 364680, 364732, 364762, 364989, 365040, 365173, 365208, 365294, 365413, 365478, 365832, 365837, 365847, 366205, 366233, 366320, 366616, 366865, 367031, 367184, 367360, 367442, 368123, 368137, 368155, 368199, 368293, 368504, 368554, 368568, 368600, 368603, 368621, 368752, 368898, 369576, 369850, 370525, 370558, 370703, 370720, 370872, 371483, 372048, 373295, 373327, 373383, 373467, 373533, 373566, 373611, 374038, 374293, 374912, 375827, 376944, 376981, 377711, 377805, 379407, 380516, 380861, 381783, 382325, 382364, 382366, 383195, 383351, 383373, 383632, 384322, 384473, 384876, 385579, 385704, 385823, 386401, 387876, 389378, 389533, 390875, 391148, 392051, 393096, 393490, 393528, 393655, 395333, 396288, 396968, 400171, 400207, 400675, 402642, 403656, 403669, 404123, 413361, 413840, 414251, 416634, 418574, 418766, 419060, 420069, 422089, 422249, 422589, 423385, 423870, 425972, 428019, 428278, 431520, 433724, 434230, 434626, 442043, 443119, 443633, 444015, 444928, 445142, 451149, 457706, 458924, 459522, 469001, 479889, 497344, 850015, 1160635, 1196274
257552, 304686, 359555, 369582, inline-block, 30802, 50630, 61902, 66315, 69745, 97777, 103582, 105030, 124903, 129346, 130767, 139550, 142631, 148621, 152368, 157681, 164457, 167408, 185388, 189367, 191699, 195770, 201215, 201293, 206212, 206516, 210669, 210876, 218473, 218862, 219499, 220982, 222402, 223809, 223999, 231226, 235593, 242108, 242981, 243037, 243266, 243302, 244686, 244932, 245748, 249390, 249982, 249995, 251856, 253701, 254750, 260049, 260980, 261176, 262151, 265614, 265796, 266897, 267179, 267353, 267396, 268300, 268499, 269156, 269643, 270175, 270704, 271364, 271747, 271924, 271927, 272613, 273410, 273681, 274556, 274794, 274931, 275179, 275345, 277108, 277431, 278920, 280831, 281001, 282377, 283575, 285832, acid2, 290743, 291126, 292124, 292527, 293486, 293676, 294120, 295476, 295717, 296056, 296070, 297869, 298011, 298883, 299250, 299591, 299694, 301072, 302805, 302970, 303594, 304445, 305301, 305405, 307102, 307387, 307763, 309056, 309287, 310089, 311415, 312099, 313195, 313219, 313520, 313750, 316057, 317561, 318540, 319739, 320196, 320344, 321738, 322443, 322512, 322759, 323192, 323499, 323739, 323886, 324318, 324955, 325486, 325940, 328040, 328257, 329407, 331052, 331204, 331325, 332551, 332554, 332978, 334792, 334970, 336450, 336767, 337268, 337401, 337469, 337787, 338222, 338702, 338856, 340799, 343510, 346774, 346847, 348299, 348482, 348499, 348516, 348991, 348999, 349004, 350506, 353140, 353566, 358729, 360422, 360598, 362882, 363786, 365175, 367458, 375998, 408374, 836899
Dependency tree / graph

Firefox Tracking Flags

(Not tracked)

Details

(Whiteboard: [patch], URL)

Attachments

(2 attachments)

This bug describes a design change that I've been talking about for a
while (see various posts to mozilla-layout).  Many bugs likely to be
fixed by this change have "[reflow-refactor]" in the Status Whiteboard.
I've been working on the changes on various REFLOW_{YYYYMMDD}_BRANCH
branches.

The basic idea to make two closely related changes at the same time:
 1. Change intrinsic width computation so that it happens in separate
    methods on nsIFrame.  (Currently preferred with calculation using
    the nsIFrame API can happen in two different ways as well:  having
    only one codepath reduces incremental layout ("{inc}") bugs.)
 2. Change the way we handle incremental layout to use dirty bits on the
    frames rather than the reflow tree (which is essentially out-of-line
    dirty bits) and a complicated system of reflow reasons that often
    leads to weird incremental layout ("{inc}") bugs.

I hope to add more details of the new design here in the near future.
Much of it is still open to change; at this point the branch is close to
compiling and probably a ways from working, so the cost of changing
things is still relatively low.
Status: NEW → ASSIGNED
Priority: -- → P1
Target Milestone: --- → mozilla1.9alpha
What have you decided to do about the intrinsic width of scrollframes?
Currently, we do a full reflow of the scrolled content to see if we need a
horizontal scrollbar, which helps determine the intrinsic width.

Updated

12 years ago
Blocks: 359555
For the record, I've discussed landing plans with bzbarsky and roc, and they're comfortable with this landing without complete review.  I know bzbarsky has been looking at it a good bit (including having written almost all of the form control changes).
Fixed.
Status: ASSIGNED → RESOLVED
Last Resolved: 12 years ago
Resolution: --- → FIXED
diffstat says:
 201 files changed, 8726 insertions(+), 18253 deletions(-)

tinderbox numbers from Firefox tinderbox:

Linux argo-vm Dep Nightly:
  Z:14.08MB, Zdiff:-53276 (+57545/-110821)
balsa-trunk:
  RLk and Lk unchanged
  MH down from 13.1MB to 13.0MB
  A down from 486K to 485K
Linux bl-bldlnx01 Dep argo-vm test perf:
  Tp: 3 test mean fell from 704.3333 to 682.6667, 3%, p-value = 0.01854
  Tp2: 3 test mean fell from 530.8917 to 507.2333, 4.5%, p-value = 0.01977
  Tdhtml: 3 test mean fell from 1300.667 to 1290.667, 0.75%, p-value = 0.00748

Updated

12 years ago
Blocks: 348482

Updated

12 years ago
Blocks: 348299

Updated

12 years ago
Blocks: 152368

Updated

12 years ago
Blocks: 324318

Updated

12 years ago
Blocks: 61902

Updated

12 years ago
Blocks: 329407

Updated

12 years ago
Blocks: 337268
Blocks: 274556
Blocks: 277431
Blocks: 331052
Blocks: 338222
Blocks: 332978
Blocks: 282377
Blocks: 105030
Blocks: 338856
Blocks: 271924
Blocks: 336767
Blocks: 334792
Blocks: 322443
Blocks: 243302
Blocks: 257552
Blocks: 261176
Blocks: 273410
Blocks: 274794
Blocks: 274931
Blocks: 325940
Blocks: 277108
Blocks: 298883
Blocks: 304445
Blocks: 304686
Blocks: 305405
Blocks: 235593
Blocks: 218862
Blocks: 275179
Blocks: 268499

Updated

12 years ago
Depends on: 363240
Depends on: 363248
Blocks: 324955
Blocks: 348516
Blocks: 328040
Blocks: 272613
Blocks: 220982
Blocks: 293676

Updated

12 years ago
Depends on: 363276
Depends on: 363285
Blocks: 305301

Updated

12 years ago
Blocks: 285832

Updated

12 years ago
Blocks: 299694

Updated

12 years ago
Blocks: 219499
Blocks: 222402
Blocks: 275345

Updated

12 years ago
Blocks: 195770
Blocks: 148621

Updated

12 years ago
Depends on: 363253
Blocks: 353566
Blocks: 223999
Blocks: 129346
Blocks: 210669

Updated

12 years ago
Depends on: 359769
Blocks: 185388
Blocks: 139550
Depends on: 363329
Depends on: 134706
Depends on: 225548
Depends on: 363333
Blocks: 251856
Blocks: 320196
Blocks: 267396
Blocks: 302805
Depends on: 363367
Blocks: 307763
Blocks: 313750
Depends on: 363382
Depends on: 362210

Updated

12 years ago
Depends on: 363388
Depends on: 363389
Depends on: 363391
Depends on: 363374
Depends on: 363423
Blocks: 97777
Depends on: 363443

Updated

12 years ago
Depends on: 363466
Blocks: 290743
Depends on: 363528

Updated

12 years ago
Depends on: 363696

Updated

12 years ago
Depends on: 363707
Depends on: 363722
Depends on: 363732
Depends on: 363729
Depends on: 363759

Updated

12 years ago
Depends on: 358729
Blocks: 358729
No longer depends on: 358729
Blocks: 363805
Depends on: 363807
Blocks: 363786
Depends on: 363858
Depends on: 363933
Depends on: 364014

Updated

12 years ago
Blocks: 348991

Updated

12 years ago
Blocks: 331204
Blocks: 271364

Updated

12 years ago
Depends on: 364066
Depends on: 364079

Updated

12 years ago
Blocks: 292124

Updated

12 years ago
Blocks: 206516
Blocks: 337469
Depends on: 364220
Blocks: 231226
Blocks: 360598
Blocks: 348499
Depends on: 364314
Depends on: 364434
Depends on: 364427
Blocks: 362882
Depends on: 364510
Created attachment 249359 [details]
some detailed pageload test data

This was some detailed pageload test data that I did on Windows a few days before the branch landed.  (I should probably try to get the equivalent out of the tinderbox logs.)  It showed that the pageload improvements varied significantly between pages.
Depends on: 364933

Updated

12 years ago
Depends on: 365040
Depends on: 365208
Blocks: 253701

Updated

12 years ago
Depends on: 365294
Depends on: 364762
Depends on: 365478
Blocks: 337401
Depends on: 365832
Depends on: 365837

Updated

12 years ago
Depends on: 366112

Updated

12 years ago
Depends on: 366205
Depends on: 366320
Depends on: 367042
Depends on: 367360
Blocks: 323192

Updated

12 years ago
Blocks: 338702
Depends on: 368137
Depends on: 368155
Depends on: 368199
Depends on: 368504
Depends on: 368553
Depends on: 368554
Blocks: 343510
Depends on: 368568
Depends on: 368600

Updated

12 years ago
Depends on: 332551
Depends on: 368752
Depends on: 368898
Depends on: 369850

Updated

12 years ago
Depends on: 370491
Depends on: 368621
Depends on: 363496
Depends on: 370525
Depends on: 370558
No longer depends on: 370491
Depends on: 370248
Depends on: 370872
Depends on: 368603
Depends on: 371829
Depends on: 372048
Depends on: 372498
No longer blocks: 246179

Updated

12 years ago
Depends on: 373295
Depends on: 373327
Depends on: 373467
Depends on: 373533
Blocks: 298011
Depends on: 373960
Depends on: 374038
Depends on: 375827
Blocks: 271747
Blocks: 260049
Blocks: 244686
Depends on: 373400
No longer depends on: 373400

Updated

12 years ago
Depends on: 377711
Depends on: 379407
Blocks: 323886

Updated

12 years ago
Blocks: 189367

Updated

12 years ago
Blocks: 103582
Depends on: 380861
Depends on: 381783
Depends on: 382325
Depends on: 355648
Depends on: 383373
Depends on: 376944
Depends on: 385579
Depends on: 385704
No longer depends on: 370248
Depends on: 390875
Depends on: 391148
Depends on: 393490
Depends on: 393528
Blocks: 393528
No longer depends on: 393528
Depends on: 393655
Depends on: 394154

Updated

11 years ago
Depends on: 400171
No longer blocks: 393528
Depends on: 393528
Blocks: 265796
Depends on: 400675
Depends on: 402642

Updated

11 years ago
Depends on: 384322
Depends on: 403656
Depends on: 412572
Depends on: 403669
Depends on: 413361
Depends on: 414251
Depends on: 415166

Updated

11 years ago
Depends on: 416634
Depends on: 418574
Depends on: 422589
Depends on: 422249

Updated

11 years ago
Depends on: 425972
Depends on: 428278
No longer depends on: 428609
Depends on: 431403
Depends on: 434230
Depends on: 434626

Updated

11 years ago
Depends on: 442043
Depends on: 445142
Depends on: 443119
Depends on: 453967

Updated

11 years ago
Blocks: 295717