00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 extern int Indent;
00028 void printIndent();
00029
00030 extern oop catchThisOne;
00031
00032
00033
00034 extern "C" void copy_oops_up(oop* from, oop* to, int count);
00035 extern "C" void set_oops(oop* to, int count, oop value = NULL);
00036
00037 char* copy_string(char* s);
00038 char* copy_string(char* s, smi len);
00039
00040 char* copy_c_heap_string(char* s);
00041
00042
00043 void copy_oops_down(oop* from, oop* to, int count);
00044 inline void copy_oops(oop* from, oop* to, int count) {
00045 copy_oops_up(from, to, count); }
00046 inline void copy_oops_overlapping(oop* from, oop* to, int count) {
00047 if (from < to) copy_oops_down(from + count, to + count, count);
00048 else if (from > to) copy_oops_up(from, to, count);
00049 }
00050
00051 inline void copy_words(int* from, int* to, int count) {
00052 copy_oops((oop*) from, (oop*) to, count);
00053 }
00054 inline void set_words(int* from, int count, int value = 0) {
00055 set_oops((oop*) from, count, (oop) value);
00056 }
00057
00058 inline int min(int a, int b) { return a < b ? a : b; }
00059 inline int max(int a, int b) { return a > b ? a : b; }
00060 inline int min(int a, int b, int c) { return a < b ? min(a, c) : min(b, c); }
00061 inline int max(int a, int b, int c) { return a > b ? max(a, c) : max(b, c); }
00062
00063
00064
00065
00066 const int K = 1024;
00067 const int M = K * K;
00068
00069 const int oopSize = sizeof(oop);
00070 const int floatSize = sizeof(double);
00071
00072 inline int byte_size(void* from, void* to) {
00073 return (char*) to - (char*) from;
00074 }
00075
00076
00077
00078 #ifdef __GNUC__
00079
00080 #define Unused(x)
00081 #else
00082 inline void Unused(int x) { x, 0; }
00083 inline void Unused(void *x) { x, 0; }
00084 #endif