projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.43.46: Simplify some type tests to EQL comparisons
[sbcl.git]
/
src
/
runtime
/
coreparse.c
diff --git
a/src/runtime/coreparse.c
b/src/runtime/coreparse.c
index
3ccdc23
..
1757444
100644
(file)
--- a/
src/runtime/coreparse.c
+++ b/
src/runtime/coreparse.c
@@
-423,6
+423,7
@@
load_core_file(char *file, os_vm_offset_t file_offset)
size_t offset = 0;
long bytes_read;
unsigned long data[4096];
size_t offset = 0;
long bytes_read;
unsigned long data[4096];
+ unsigned long word;
lseek(fd, fdoffset + file_offset, SEEK_SET);
while ((bytes_read = read(fd, data, (size < 4096 ? size : 4096 )))
> 0)
lseek(fd, fdoffset + file_offset, SEEK_SET);
while ((bytes_read = read(fd, data, (size < 4096 ? size : 4096 )))
> 0)
@@
-435,9
+436,12
@@
load_core_file(char *file, os_vm_offset_t file_offset)
* core entry was rounded up to os_vm_page_size
* during the save, and might now have more
* elements than the page table.
* core entry was rounded up to os_vm_page_size
* during the save, and might now have more
* elements than the page table.
+ *
+ * The low bits of each word are allocation flags.
*/
*/
- if (data[i]) {
- page_table[offset].region_start_offset = data[i];
+ if (word=data[i]) {
+ page_table[offset].region_start_offset = word & ~0x03;
+ page_table[offset].allocated = word & 0x03;
}
i++;
offset++;
}
i++;
offset++;