version 1.31, 2005/06/16 05:07:23 |
version 1.34, 2006/02/01 00:30:05 |
|
|
/* $OpenXM: OpenXM/src/kan96xx/Kan/stackmachine.c,v 1.30 2005/06/09 04:47:16 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/kan96xx/Kan/stackmachine.c,v 1.33 2005/07/18 10:55:16 takayama Exp $ */ |
/* stackmachin.c */ |
/* stackmachin.c */ |
|
|
#include <stdio.h> |
#include <stdio.h> |
|
#include <stdlib.h> |
|
#include <string.h> |
#include "datatype.h" |
#include "datatype.h" |
#include "stackm.h" |
#include "stackm.h" |
#include "extern.h" |
#include "extern.h" |
Line 87 int OXlockSaved = 0; |
|
Line 89 int OXlockSaved = 0; |
|
char *UD_str; |
char *UD_str; |
int UD_attr; |
int UD_attr; |
|
|
|
struct object *MsgStackTraceInArrayp = NULL; |
|
char *MsgStackTrace = NULL; |
|
char *MsgSourceTrace = NULL; |
|
|
struct object * newObject() |
struct object * newObject() |
{ |
{ |
struct object *r; |
struct object *r; |
Line 1109 errorStackmachine(str) |
|
Line 1115 errorStackmachine(str) |
|
extern int RestrictedMode, RestrictedMode_saved; |
extern int RestrictedMode, RestrictedMode_saved; |
RestrictedMode = RestrictedMode_saved; |
RestrictedMode = RestrictedMode_saved; |
cancelAlarm(); |
cancelAlarm(); |
|
MsgStackTrace = NULL; |
|
MsgSourceTrace = NULL; |
if (ErrorMessageMode == 1 || ErrorMessageMode == 2) { |
if (ErrorMessageMode == 1 || ErrorMessageMode == 2) { |
pushErrorStack(KnewErrorPacket(SerialCurrent,-1,str)); |
pushErrorStack(KnewErrorPacket(SerialCurrent,-1,str)); |
} |
} |
Line 1142 errorStackmachine(str) |
|
Line 1150 errorStackmachine(str) |
|
fprintf(stderr,str); |
fprintf(stderr,str); |
} |
} |
fprintf(stderr,"\n"); |
fprintf(stderr,"\n"); |
(void) traceShowStack(); |
MsgStackTraceInArrayp = traceNameStackToArrayp(); |
|
MsgStackTrace = traceShowStack(); |
|
MsgSourceTrace = traceShowScannerBuf(); |
} |
} |
traceClearStack(); |
traceClearStack(); |
if (GotoP) { |
if (GotoP) { |
Line 1387 char *KSpopBinary(int *size) { |
|
Line 1397 char *KSpopBinary(int *size) { |
|
return((char *)NULL); |
return((char *)NULL); |
} |
} |
|
|
|
struct object KSnewObjectArray(int k) { |
|
return newObjectArray(k); |
|
} |
|
|
int pushErrorStack(struct object obj) |
int pushErrorStack(struct object obj) |
{ |
{ |
if (CurrentOperandStack == &ErrorStack) { |
if (CurrentOperandStack == &ErrorStack) { |
Line 1625 void traceClearStack(void) { |
|
Line 1639 void traceClearStack(void) { |
|
char *tracePopName(void) { |
char *tracePopName(void) { |
if (TraceNameStackp <= 0) return (char *) NULL; |
if (TraceNameStackp <= 0) return (char *) NULL; |
return TraceNameStack[--TraceNameStackp]; |
return TraceNameStack[--TraceNameStackp]; |
|
} |
|
struct object *traceNameStackToArrayp(void) { |
|
int n,i; |
|
struct object *op; |
|
op = sGC_malloc(sizeof(struct object)); |
|
n = TraceNameStackp; if (n < 0) n = 0; |
|
*op = newObjectArray(n); |
|
for (i=0; i<n; i++) { |
|
putoa((*op),i, KpoString(TraceNameStack[i])); |
|
} |
|
return op; |
} |
} |
#define TRACE_MSG_SIZE 320 |
#define TRACE_MSG_SIZE 320 |
char *traceShowStack(void) { |
char *traceShowStack(void) { |