diff options
| author | Richard Kistruck | 2007-03-21 13:34:44 +0000 |
|---|---|---|
| committer | Richard Kistruck | 2007-03-21 13:34:44 +0000 |
| commit | fa6f33d5e506eff8fbf7b1557d1a93c3ead8be7c (patch) | |
| tree | 450cc87d383c1dfca1b80f1d3786ff267a019331 /mps/code | |
| parent | 75bc16ac8ef47dfd29cb18de93ed0958939859ef (diff) | |
| download | emacs-fa6f33d5e506eff8fbf7b1557d1a93c3ead8be7c.tar.gz emacs-fa6f33d5e506eff8fbf7b1557d1a93c3ead8be7c.zip | |
Mps branch unfixed-summary: if poolfix fails, aver that *refio is unchanged.
Copied from Perforce
Change: 161966
ServerID: perforce.ravenbrook.com
Diffstat (limited to 'mps/code')
| -rw-r--r-- | mps/code/trace.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/mps/code/trace.c b/mps/code/trace.c index b732a5d8075..ff76600689b 100644 --- a/mps/code/trace.c +++ b/mps/code/trace.c | |||
| @@ -1285,8 +1285,17 @@ Res TraceFix(ScanState ss, Ref *refIO) | |||
| 1285 | /* Could move the rank switch here from the class-specific */ | 1285 | /* Could move the rank switch here from the class-specific */ |
| 1286 | /* fix methods. */ | 1286 | /* fix methods. */ |
| 1287 | res = PoolFix(pool, ss, seg, refIO); | 1287 | res = PoolFix(pool, ss, seg, refIO); |
| 1288 | if (res != ResOK) | 1288 | if (res != ResOK) { |
| 1289 | /* Fix protocol (de facto): if Fix fails, ref must be unchanged */ | ||
| 1290 | /* Justification for this restriction: | ||
| 1291 | * A: it simplifies; | ||
| 1292 | * B: it's reasonable (given what may cause Fix to fail); | ||
| 1293 | * C: the code (here) already assumes this: it returns without | ||
| 1294 | * updating ss->fixedSummary. RHSK 2007-03-21. | ||
| 1295 | */ | ||
| 1296 | AVER(*refIO == ref); | ||
| 1289 | return res; | 1297 | return res; |
| 1298 | } | ||
| 1290 | } | 1299 | } |
| 1291 | } else { | 1300 | } else { |
| 1292 | /* Tract isn't white. Don't compute seg for non-statistical */ | 1301 | /* Tract isn't white. Don't compute seg for non-statistical */ |