projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.13.53: Minor changes to SB-COVER, SB-MD5 tests for Win32
[sbcl.git]
/
src
/
runtime
/
parse.c
diff --git
a/src/runtime/parse.c
b/src/runtime/parse.c
index
f8a0dd1
..
b4218e5
100644
(file)
--- a/
src/runtime/parse.c
+++ b/
src/runtime/parse.c
@@
-12,6
+12,7
@@
*/
#include <stdio.h>
*/
#include <stdio.h>
+#include <stdlib.h>
#include <ctype.h>
#include <signal.h>
#include <ctype.h>
#include <signal.h>
@@
-213,29
+214,30
@@
char *parse_addr(ptr)
char **ptr;
{
char *token = parse_token(ptr);
char **ptr;
{
char *token = parse_token(ptr);
- long result;
+ lispobj result;
if (token == NULL) {
printf("expected an address\n");
throw_to_monitor();
}
else if (token[0] == '$') {
if (token == NULL) {
printf("expected an address\n");
throw_to_monitor();
}
else if (token[0] == '$') {
- if (!lookup_variable(token+1, (lispobj *)&result)) {
+ if (!lookup_variable(token+1, &result)) {
printf("unknown variable: ``%s''\n", token);
throw_to_monitor();
}
result &= ~7;
}
else {
printf("unknown variable: ``%s''\n", token);
throw_to_monitor();
}
result &= ~7;
}
else {
- if (!string_to_long(token, &result)) {
+ long value;
+ if (!string_to_long(token, &value)) {
printf("invalid number: ``%s''\n", token);
throw_to_monitor();
}
printf("invalid number: ``%s''\n", token);
throw_to_monitor();
}
- result &= ~3;
+ result = (value & ~3);
}
if (!is_valid_lisp_addr((os_vm_address_t)result)) {
}
if (!is_valid_lisp_addr((os_vm_address_t)result)) {
- printf("invalid Lisp-level address: 0x%lx\n", result);
+ printf("invalid Lisp-level address: %p\n", (void *)result);
throw_to_monitor();
}
throw_to_monitor();
}
@@
-258,13
+260,14
@@
static boolean lookup_symbol(char *name, lispobj *result)
}
/* Search dynamic space. */
}
/* Search dynamic space. */
-#ifndef LISP_FEATURE_GENCGC
+#if defined(LISP_FEATURE_GENCGC)
+ headerptr = (lispobj *)DYNAMIC_SPACE_START;
+ count = (lispobj *)get_alloc_pointer() - headerptr;
+#else
headerptr = (lispobj *)current_dynamic_space;
count = dynamic_space_free_pointer - headerptr;
headerptr = (lispobj *)current_dynamic_space;
count = dynamic_space_free_pointer - headerptr;
-#else
- headerptr = (lispobj *)DYNAMIC_SPACE_START;
- count = ((lispobj *)SymbolValue(ALLOCATION_POINTER,0)) - headerptr;
#endif
#endif
+
if (search_for_symbol(name, &headerptr, &count)) {
*result = make_lispobj(headerptr, OTHER_POINTER_LOWTAG);
return 1;
if (search_for_symbol(name, &headerptr, &count)) {
*result = make_lispobj(headerptr, OTHER_POINTER_LOWTAG);
return 1;
@@
-310,24
+313,25
@@
char **ptr;
char *token = parse_token(ptr);
long pointer;
lispobj result;
char *token = parse_token(ptr);
long pointer;
lispobj result;
+ long value;
if (token == NULL) {
printf("expected an object\n");
throw_to_monitor();
} else if (token[0] == '$') {
if (isalpha(token[1])) {
if (token == NULL) {
printf("expected an object\n");
throw_to_monitor();
} else if (token[0] == '$') {
if (isalpha(token[1])) {
- int free;
+ int free_ici;
int regnum;
os_context_t *context;
int regnum;
os_context_t *context;
- free = SymbolValue(FREE_INTERRUPT_CONTEXT_INDEX,thread)>>2;
+ free_ici = fixnum_value(SymbolValue(FREE_INTERRUPT_CONTEXT_INDEX,thread));
- if (free == 0) {
+ if (free_ici == 0) {
printf("Variable ``%s'' is not valid -- there is no current interrupt context.\n", token);
throw_to_monitor();
}
printf("Variable ``%s'' is not valid -- there is no current interrupt context.\n", token);
throw_to_monitor();
}
- context = thread->interrupt_contexts[free - 1];
+ context = thread->interrupt_contexts[free_ici - 1];
regnum = parse_regnum(token);
if (regnum < 0) {
regnum = parse_regnum(token);
if (regnum < 0) {
@@
-355,8
+359,8
@@
char **ptr;
throw_to_monitor();
}
}
throw_to_monitor();
}
}
- else if (string_to_long(token, (long *)&result))
- ;
+ else if (string_to_long(token, &value))
+ result = value;
else if (lookup_symbol(token, &result))
;
else {
else if (lookup_symbol(token, &result))
;
else {