blob: 5ae019dd4e626fa6714b3b702495032a8eeaa6b6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# 過去の割り当てコホート
[English](README.md) | 日本語
この文書は [Historical allocation cohorts](README.md) の日本語訳です。
`cohorts.tsv` は、第24章の `SpillStats` で測定した212件のコンパイル項目を固定したものです。
コホート20〜24の項目数は、それぞれ39、52、24、30、67です。
ソースファイルは内容で重複を除き、最初に参照したテストの名前を付けています。
マニフェストには、テストの識別情報、ターゲット、ABI、元の停止フェーズを保持しています。
`Win64` は、第25章で使う ABI の表記 `win64` に変更しています。
引数の型は i64、再実行のシードは全項目で123です。
これらの入力は、この最終監査で新たな正しさの回帰テストを追加する前に、
第24章のテストから取得しました。比較のための安定したコーパスです。
変更する場合は、比較可能性が失われる理由を説明する必要があります。
人工的なアロケータの回帰テストや命令の回帰テストでの割り当ては、これらのコホートには含めません。
第25章では、以前のソースをすべて無変更で解析できるわけではありません。適応のための変更を明記します。
- String、Scan、連結された S のコンストラクタでは、`new S { field=...; }` を、
宣言されたコンストラクタとその引数に置き換えています。
レシーバーを明示するスキャナ関数は、操作を保ったままインスタンスメソッドにしています。
- 保存した `Chapter21Test-testStringExport`、`Chapter21AllocTest-testString`、
`Chapter23AllocTest-testString` のソースは、必須の非 null フィールド `cs` を初期化するために、
`new String = { u8[] data -> cs=data; };` を宣言しています。
これによって10件の再実行項目(4件、3件、3件)を修正していますが、
等価性・ハッシュの本体やマニフェストの構成項目は変えていません。
これらの適応済みソースが新しい比較基準です。以前のコンストラクタなしのフィクスチャと
同一入力として、その集計値を比較することはできません。
- 短絡評価の右辺で初期化する2つのループは、同等のガード付きブロックにしています。
割り当て、副作用、最終結果を保持しています。
- 単純な I/O のケースには、以前の `write` の束縛と表示用の補助関数を直接含めています。
Bubble Sort には、名前空間の接頭辞を平坦化し、コンストラクタを明示し、
置換用バッファを可変にした、以前のライブラリの本体を含めています。
これにより、第25章で大幅に改訂した例に差し替えるのではなく、以前のワークロードを保持しています。
- 元の Newton の浮動小数点数版2種類を含め、ほかのソース本文は保持しています。
すべての項目を **RegAlloc まで**再実行し、スケジューリング済みのレジスタ制約を確認します。
過去のフェーズの列は来歴情報であり、第25章で以前のネイティブ実行ハーネスを動かすことを約束するものではありません。
適応済み Bubble Sort は、割り当ての比較可能性のために、過去の `i32 errno="C"` 宣言を保持しています。
直接のデータ束縛は現在、3つのターゲットすべてでエンコードできますが、
errno がスレッドローカルまたはアクセサ経由の libc とは、この宣言をリンクできません。
現在のシステムライブラリのコードは、代わりに `libc.errno()` を使います。
このコーパスを、過去のランタイムの実行カバレッジとして数えてはいけません。
その後 `SpillStats` は、シード456で現在のシステムライブラリをエンコーディングまでコンパイルし、
既存のシードとネイティブ検査を使って Chapter25Test を実行します。
これらを合わせてコホート25とします。ライブラリまたはテストが失敗すると、レポートも失敗します。
部分的な集計値では改善を示せません。現在のコンパイラの実行検証は、通常の章全体のテストスイートが担います。
|