[BACK]Return to gc_risa.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / parse

Annotation of OpenXM_contrib2/asir2000/parse/gc_risa.c, Revision 1.1

1.1     ! noro        1: #include "private/gc_priv.h"
        !             2: #include <time.h>
        !             3:
        !             4: void error(char *);
        !             5:
        !             6: int *StackBottom;
        !             7:
        !             8: void *Risa_GC_malloc(size_t d)
        !             9: {
        !            10:        void *ret;
        !            11:
        !            12:        ret = (void *)GC_malloc(d);
        !            13:        if ( !ret )
        !            14:                error("GC_malloc : failed to allocate memory");
        !            15:        return ret;
        !            16: }
        !            17:
        !            18: void *Risa_GC_malloc_atomic(size_t d)
        !            19: {
        !            20:        void *ret;
        !            21:
        !            22:        ret = (void *)GC_malloc_atomic(d);
        !            23:        if ( !ret )
        !            24:                error("GC_malloc_atomic : failed to allocate memory");
        !            25:        return ret;
        !            26: }
        !            27:
        !            28: void *Risa_GC_realloc(void *p,size_t d)
        !            29: {
        !            30:        void *ret;
        !            31:
        !            32:        ret = (void *)GC_realloc(p,d);
        !            33:        if ( !ret )
        !            34:                error("GC_realloc : failed to reallocate memory");
        !            35:        return ret;
        !            36: }
        !            37:
        !            38: int get_heapsize()
        !            39: {
        !            40:        return GC_heapsize;
        !            41: }
        !            42:
        !            43: int get_allocwords()
        !            44: {
        !            45:        return GC_words_allocd_before_gc;
        !            46: }
        !            47:
        !            48: double gctime;
        !            49: static double gcstart,asir_start_time;
        !            50:
        !            51: double get_clock(), get_rtime(), get_current_time();
        !            52:
        !            53: void rtime_init()
        !            54: {
        !            55: #if defined(i386) && defined(linux)
        !            56:        unsigned short cw;
        !            57:
        !            58: #define fldcw(addr)             __asm("fldcw %0" : : "m" (*addr))
        !            59: #define fnstcw(addr)            __asm("fnstcw %0" : "=m" (*addr) : "0" (*addr))
        !            60:        fnstcw(&cw); cw &= 0xfeff; cw |= 0x0200; fldcw(&cw);
        !            61: #endif
        !            62:        asir_start_time = get_current_time();
        !            63: }
        !            64:
        !            65: double get_rtime()
        !            66: {
        !            67:        return get_current_time() - asir_start_time;
        !            68: }
        !            69:
        !            70: #if defined(THINK_C) || defined(__MWERKS__) || defined(VISUAL) || defined(MSWIN32)
        !            71:
        !            72: #if defined(VISUAL)
        !            73: #include <windows.h>
        !            74:
        !            75: extern int recv_intr,doing_batch;
        !            76: void send_intr();
        !            77:
        !            78: BOOL set_ctrlc_flag(DWORD type)
        !            79: {
        !            80:        if ( doing_batch )
        !            81:                send_intr();
        !            82:        else
        !            83:                recv_intr = 1;
        !            84:        return TRUE;
        !            85: }
        !            86:
        !            87: void register_ctrlc_handler() {
        !            88:        SetConsoleCtrlHandler((PHANDLER_ROUTINE)set_ctrlc_flag,TRUE);
        !            89: }
        !            90:
        !            91: int mythreadid() {
        !            92:        return GetCurrentThreadId();
        !            93: }
        !            94:
        !            95: double get_current_time()
        !            96: {
        !            97: //     return (double)clock()/(double)CLOCKS_PER_SEC;
        !            98:        return ((double)GetTickCount())/1000.0;
        !            99: }
        !           100:
        !           101: double get_clock()
        !           102: {
        !           103:        static int initialized = 0;
        !           104:        static int is_winnt = 0;
        !           105:        static HANDLE curproc;
        !           106:
        !           107:        if ( !initialized ) {
        !           108:                OSVERSIONINFO vinfo;
        !           109:
        !           110:                curproc = GetCurrentProcess();
        !           111:                vinfo.dwOSVersionInfoSize = sizeof(vinfo);
        !           112:                GetVersionEx(&vinfo);
        !           113:                if ( vinfo.dwPlatformId == VER_PLATFORM_WIN32_NT )
        !           114:                        is_winnt = 1;
        !           115:                else
        !           116:                        is_winnt = 0;
        !           117:        }
        !           118:        if ( is_winnt ) {
        !           119:                FILETIME c,e,k,u;
        !           120:
        !           121:                GetProcessTimes(curproc,&c,&e,&k,&u);
        !           122:                return ((double)k.dwLowDateTime+(double)u.dwLowDateTime
        !           123:                        +4294967296.0*((double)k.dwHighDateTime+(double)u.dwHighDateTime))/10000000.0;
        !           124:        } else
        !           125:                return get_current_time();
        !           126: }
        !           127: #else
        !           128: double get_current_time()
        !           129: {
        !           130:        return get_clock();
        !           131: }
        !           132:
        !           133: double get_clock()
        !           134: {
        !           135:        clock_t c;
        !           136:
        !           137:        c = clock();
        !           138:        return (double)c/(double)CLOCKS_PER_SEC;
        !           139: }
        !           140: #endif
        !           141:
        !           142: #else
        !           143: #include <sys/time.h>
        !           144:
        !           145: double get_current_time()
        !           146: {
        !           147:        struct timeval t;
        !           148:        struct timezone z;
        !           149:
        !           150:        gettimeofday(&t,&z);
        !           151:        return (double)t.tv_sec + ((double)t.tv_usec)/((double)1000000);
        !           152: }
        !           153:
        !           154: #if defined(_PA_RISC1_1) || defined(__svr4__) || defined(__CYGWIN__)
        !           155:
        !           156: #include <sys/times.h>
        !           157: #include <limits.h>
        !           158:
        !           159: double get_clock()
        !           160: {
        !           161:        struct tms buf;
        !           162:
        !           163:        times(&buf);
        !           164:        return (double)(buf.tms_utime+buf.tms_stime)/(double)CLK_TCK;
        !           165: }
        !           166: #else
        !           167:
        !           168: #include <sys/time.h>
        !           169: #include <sys/resource.h>
        !           170:
        !           171: double get_clock()
        !           172: {
        !           173:        int tv_sec,tv_usec;
        !           174:        struct rusage ru;
        !           175:
        !           176:        getrusage(RUSAGE_SELF,&ru);
        !           177:        tv_sec = ru.ru_utime.tv_sec + ru.ru_stime.tv_sec;
        !           178:        tv_usec = ru.ru_utime.tv_usec + ru.ru_stime.tv_usec;
        !           179:        return (double)tv_sec+(double)tv_usec/(double)1000000;
        !           180: }
        !           181: #endif
        !           182: #endif
        !           183:
        !           184: void GC_timerstart() {
        !           185:        gcstart = get_clock();
        !           186: }
        !           187:
        !           188: void GC_timerstop() {
        !           189:        gctime += get_clock() - gcstart;
        !           190: }
        !           191:
        !           192: #if defined(MSWIN32) && !defined(VISUAL)
        !           193: #include <signal.h>
        !           194: void process_events() {
        !           195:        if ( check_break() )
        !           196:                raise(SIGINT);
        !           197: }
        !           198: #endif
        !           199:
        !           200: #if defined(THINK_C) || defined(__MWERKS__)
        !           201: #include <signal.h>
        !           202: #include <Events.h>
        !           203:
        !           204: int sigsetmask(int mask){ return 0; }
        !           205:
        !           206: void process_events() {
        !           207:
        !           208:        register EvQElPtr q;
        !           209: #if 0
        !           210:        extern void (*app_process_events)();
        !           211: #endif
        !           212:
        !           213:        for (q = (EvQElPtr) GetEventQueue()->qHead; q; q = (EvQElPtr) q->qLink)
        !           214:                if (q->evtQWhat == keyDown && (char) q->evtQMessage == '.')
        !           215:                        if (q->evtQModifiers & cmdKey) {
        !           216:                                raise(SIGINT); break;
        !           217:                        }
        !           218: #if 0
        !           219:        if ( app_process_events )
        !           220:                (*app_process_events)();
        !           221: #endif
        !           222: }
        !           223: #endif
        !           224:
        !           225: #if defined(VISUAL) && !defined(MSWIN32)
        !           226: int sigsetmask(mask) int mask; { return 0; }
        !           227:
        !           228: void process_events() {
        !           229: int c;
        !           230:
        !           231:        while ( c = read_cons() )
        !           232: #if defined(GO32)
        !           233:                if ( c == ('x' & 037 ) )
        !           234: #else
        !           235:                if ( c == ('c' & 037 ) )
        !           236: #endif
        !           237:                        int_handler();
        !           238: }
        !           239: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>