calls instead of machine instructions, using the C calling
convention.
- $Id: builtin.c 686 2003-12-04 11:35:11Z stefan $
+ $Id: builtin.c 689 2003-12-05 18:03:47Z stefan $
*/
java_objectheader *builtin_throw_exception(java_objectheader *local_exceptionptr)
{
if (verbose) {
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "Builtin exception thrown: ");
if (local_exceptionptr)
utf_sprint(logtext + strlen(logtext), local_exceptionptr->vftbl->class->name);
if (!proto_java_lang_ThreadDeath) sprintf(logtext+strlen(logtext),"%s","proto_java_lang_ThreadDeath==0");
if (!proto_java_lang_ThreadDeath) sprintf(logtext+strlen(logtext),"%s","proto_java_lang_ThreadDeath==0");
}
- dolog();
+ dolog(logtext);
}
exceptionptr = local_exceptionptr;
return local_exceptionptr;
{
int i;
+ char logtext[MAXLOGTEXT];
for (i = 0; i < methodindent; i++)
logtext[i] = '\t';
sprintf(logtext + methodindent, "called: ");
#endif
}
sprintf (logtext+strlen(logtext), ")");
- dolog ();
+ dolog (logtext);
methodindent++;
}
void builtin_displaymethodstart(methodinfo *method)
{
+ char logtext[MAXLOGTEXT];
sprintf(logtext, " ");
sprintf(logtext + methodindent, "called: ");
utf_sprint(logtext + strlen(logtext), method->class->name);
sprintf(logtext + strlen(logtext), ".");
utf_sprint(logtext + strlen(logtext), method->name);
utf_sprint(logtext + strlen(logtext), method->descriptor);
- dolog();
+ dolog(logtext);
methodindent++;
}
void builtin_displaymethodstop(methodinfo *method, s8 l, double d, float f)
{
int i;
+ char logtext[MAXLOGTEXT];
for (i = 0; i < methodindent; i++)
logtext[i] = '\t';
methodindent--;
sprintf(logtext + strlen(logtext), "->%g", d);
break;
}
- dolog();
+ dolog(logtext);
}
void builtin_displaymethodexception(methodinfo *method)
{
int i;
+ char logtext[MAXLOGTEXT];
for (i = 0; i < methodindent; i++)
logtext[i] = '\t';
sprintf(logtext + methodindent, "exception abort: ");
sprintf(logtext + strlen(logtext), ".");
utf_sprint(logtext + strlen(logtext), method->name);
utf_sprint(logtext + strlen(logtext), method->descriptor);
- dolog();
+ dolog(logtext);
}
Changes: Mark Probst
Philipp Tomsich
- $Id: headers.c 685 2003-12-04 01:25:54Z jowenn $
+ $Id: headers.c 689 2003-12-05 18:03:47Z stefan $
*/
void throw_classnotfoundexception2(utf* classname)
{
+ /* [stefan] code was useless
sprintf (logtext, "Loading class: ");
- utf_sprint (logtext+strlen(logtext), classname);
+ utf_sprint (logtext+strlen(logtext), classname);
+ */
panic("******class not found");
}
Authors: Andreas Krall
Christian Thalinger
- $Id: codegen.c 688 2003-12-04 23:50:25Z jowenn $
+ $Id: codegen.c 689 2003-12-05 18:03:47Z stefan $
*/
default:
d = 0;
- sprintf(logtext, "Unkown ICMD-Command: %d", iptr->opc);
- error();
+ error("Unkown ICMD-Command: %d", iptr->opc);
}
/* d contains return type */
break;
- default: sprintf (logtext, "Unknown pseudo command: %d", iptr->opc);
- error();
+ default: error ("Unknown pseudo command: %d", iptr->opc);
Authors: Dieter Thuernbeck
- $Id: inline.c 662 2003-11-21 18:06:25Z jowenn $
+ $Id: inline.c 689 2003-12-05 18:03:47Z stefan $
*/
cummethods++;
if (verbose) {
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "Going to inline: ");
utf_sprint(logtext +strlen(logtext), imi->class->name);
strcpy(logtext + strlen(logtext), ".");
utf_sprint(logtext + strlen(logtext), imi->name);
utf_sprint(logtext + strlen(logtext), imi->descriptor);
- dolog();
+ dolog(logtext);
}
tmp = inlining_analyse_method(imi, level + 1, gp, firstlocal + m->maxlocals, maxstackdepth + m->maxstack);
Authors: Andreas Krall
Reinhard Grafl
- $Id: jit.c 640 2003-11-15 12:14:05Z stefan $
+ $Id: jit.c 689 2003-12-05 18:03:47Z stefan $
*/
/* if there is no javacode print error message and return empty method */
if (!m->jcode) {
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "No code given for: ");
utf_sprint(logtext+strlen(logtext), m->class->name);
strcpy(logtext+strlen(logtext), ".");
utf_sprint(logtext+strlen(logtext), m->name);
utf_sprint(logtext+strlen(logtext), m->descriptor);
- dolog();
+ dolog(logtext);
intsRestore(); /* enable interrupts again */
return (methodptr) do_nothing_function; /* return empty method */
}
/* print log message for compiled method */
if (compileverbose) {
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "Compiling: ");
utf_sprint(logtext+strlen(logtext), m->class->name);
strcpy(logtext+strlen(logtext), ".");
utf_sprint(logtext+strlen(logtext), m->name);
utf_sprint(logtext+strlen(logtext), m->descriptor);
- dolog();
+ dolog(logtext);
}
Changes: Carolyn Oates
- $Id: parse.c 669 2003-11-23 14:04:20Z edwin $
+ $Id: parse.c 689 2003-12-05 18:03:47Z stefan $
*/
return;
if (cl == NULL) {
if (runverbose) {
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "compiler_addinitclass: ");
utf_sprint(logtext+strlen(logtext), c->name);
- dolog();
+ dolog(logtext);
}
chain_addlast(uninitializedclasses, c);
return;
}
if (c < cl) {
if (runverbose) {
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "compiler_addinitclass: ");
utf_sprint(logtext+strlen(logtext), c->name);
- dolog();
+ dolog(logtext);
}
chain_addbefore(uninitializedclasses, c);
return;
Authors: Andreas Krall
Christian Thalinger
- $Id: codegen.c 626 2003-11-13 14:30:08Z twisti $
+ $Id: codegen.c 689 2003-12-05 18:03:47Z stefan $
*/
default:
d = 0;
- sprintf(logtext, "Unkown ICMD-Command: %d", iptr->opc);
- error();
+ error("Unkown ICMD-Command: %d", iptr->opc);
}
/* d contains return type */
store_reg_to_var_int(iptr->dst, s1);
break;
- default: sprintf(logtext, "Unknown pseudo command: %d", iptr->opc);
- error();
+ default: error("Unknown pseudo command: %d", iptr->opc);
} /* switch */
} /* for instruction */
Roman Obermaiser
Mark Probst
- $Id: loader.c 687 2003-12-04 22:29:54Z edwin $
+ $Id: loader.c 689 2003-12-05 18:03:47Z stefan $
*/
}
}
if (verbose) {
- sprintf(logtext, "Warning: Can not open class file '%s'", filename);
- dolog();
+ dolog("Warning: Can not open class file '%s'", filename);
}
return false;
if (classdata_left > 0) {
/* surplus */
- sprintf(logtext, "There are %d access bytes at end of classfile",
+ dolog("There are %d access bytes at end of classfile",
classdata_left);
- dolog();
}
/* free memory */
/* check type of constantpool entry */
if (c->cptags[pos] != ctype) {
- sprintf (logtext, "Type mismatch on constant: %d requested, %d here (innerclass_getconstant)",
+ error ("Type mismatch on constant: %d requested, %d here (innerclass_getconstant)",
(int) ctype, (int) c->cptags[pos] );
- error();
}
return c->cpinfos[pos];
if (c->cptags[pos] != ctype) {
class_showconstantpool(c);
- sprintf (logtext, "Type mismatch on constant: %d requested, %d here (class_getconstant)",
+ error ("Type mismatch on constant: %d requested, %d here (class_getconstant)",
(int) ctype, (int) c->cptags[pos] );
- error();
}
return c->cpinfos[pos];
}
default:
- sprintf (logtext, "Unkown constant type: %d",(int) t);
- error ();
+ error ("Unkown constant type: %d",(int) t);
} /* end switch */
/* output for debugging purposes */
if (loadverbose) {
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "Loading class: ");
utf_sprint(logtext+strlen(logtext), c->name);
- dolog();
+ dolog(logtext);
}
/* load classdata, throw exception on error */
mi = suck_u2();
ma = suck_u2();
if (ma != MAJOR_VERSION && (ma != MAJOR_VERSION+1 || mi != 0)) {
- sprintf (logtext, "File version %d.%d is not supported",
+ error ("File version %d.%d is not supported",
(int) ma, (int) mi);
- error();
}
class_loadcpool (c);
s4 i;
if ( ! (c->flags & ACC_INTERFACE) ) {
+ char logtext[MAXLOGTEXT];
sprintf (logtext, "Interface-methods count requested for non-interface: ");
utf_sprint (logtext+strlen(logtext), c->name);
- error();
+ error(logtext);
}
h = c->index;
if (linkverbose) {
+ char logtext[MAXLOGTEXT];
sprintf (logtext, "Linking Class: ");
utf_sprint (logtext+strlen(logtext), c->name );
- dolog ();
+ dolog (logtext);
}
/* compute vftbl length */
m = class_findmethod (c, utf_clinit, utf_fidesc);
if (!m) {
if (initverbose) {
+ char logtext[MAXLOGTEXT];
sprintf (logtext, "Class ");
utf_sprint (logtext+strlen(logtext), c->name);
sprintf (logtext+strlen(logtext), " has no initializer");
- dolog ();
+ dolog (logtext);
}
/* goto callinitialize;*/
return;
panic ("Class initializer is not static!");
if (initverbose) {
+ char logtext[MAXLOGTEXT];
sprintf (logtext, "Starting initializer for class: ");
utf_sprint (logtext+strlen(logtext), c->name);
- dolog ();
+ dolog (logtext);
}
#ifdef USE_THREADS
}
if (initverbose) {
+ char logtext[MAXLOGTEXT];
sprintf (logtext, "Finished initializer for class: ");
utf_sprint (logtext+strlen(logtext), c->name);
- dolog ();
+ dolog (logtext);
}
if (c->name == utf_systemclass) {
/* class java.lang.System requires explicit initialization */
- Calling the class loader
- Running the main method
- $Id: main.c 687 2003-12-04 22:29:54Z edwin $
+ $Id: main.c 689 2003-12-05 18:03:47Z stefan $
*/
{
long int totaltime = getcputime();
long int runtime = totaltime - loadingtime - compilingtime;
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "Time for loading classes: %ld secs, %ld millis",
loadingtime / 1000000, (loadingtime % 1000000) / 1000);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Time for compiling code: %ld secs, %ld millis",
compilingtime / 1000000, (compilingtime % 1000000) / 1000);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Time for running program: %ld secs, %ld millis",
runtime / 1000000, (runtime % 1000000) / 1000);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Total time: %ld secs, %ld millis",
totaltime / 1000000, (totaltime % 1000000) / 1000);
- dolog();
+ dolog(logtext);
}
static void print_stats()
{
+ char logtext[MAXLOGTEXT];
+
sprintf(logtext, "Number of JitCompiler Calls: %d", count_jit_calls);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of compiled Methods: %d", count_methods);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of max basic blocks per method: %d", count_max_basic_blocks);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of compiled basic blocks: %d", count_basic_blocks);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of max JavaVM-Instructions per method: %d", count_max_javainstr);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of compiled JavaVM-Instructions: %d", count_javainstr);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of compiled JavaVM-Instructions: %d(%d)", count_javacodesize,
count_javacodesize - count_methods * 18);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of compiled Exception Tables: %d", count_javaexcsize);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Value of extended instruction set var: %d", has_ext_instr_set);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Machine-Instructions: %d", count_code_len >> 2);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Spills: %d", count_spills);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Activ Pseudocommands: %5d", count_pcmd_activ);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Drop Pseudocommands: %5d", count_pcmd_drop);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Const Pseudocommands: %5d (zero:%5d)", count_pcmd_load, count_pcmd_zero);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of ConstAlu Pseudocommands: %5d (cmp: %5d, store:%5d)", count_pcmd_const_alu, count_pcmd_const_bra, count_pcmd_const_store);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Move Pseudocommands: %5d", count_pcmd_move);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Load Pseudocommands: %5d", count_load_instruction);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Store Pseudocommands: %5d (combined: %5d)", count_pcmd_store, count_pcmd_store - count_pcmd_store_comb);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of OP Pseudocommands: %5d", count_pcmd_op);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of DUP Pseudocommands: %5d", count_dup_instruction);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Mem Pseudocommands: %5d", count_pcmd_mem);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Method Pseudocommands: %5d", count_pcmd_met);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Branch Pseudocommands: %5d (rets:%5d, Xrets: %5d)",
count_pcmd_bra, count_pcmd_return, count_pcmd_returnx);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Table Pseudocommands: %5d", count_pcmd_table);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Useful Pseudocommands: %5d", count_pcmd_table +
count_pcmd_bra + count_pcmd_load + count_pcmd_mem + count_pcmd_op);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Null Pointer Checks: %5d", count_check_null);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Array Bound Checks: %5d", count_check_bound);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Try-Blocks: %d", count_tryblocks);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Maximal count of stack elements: %d", count_max_new_stack);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Upper bound of max stack elements: %d", count_upper_bound_new_stack);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Distribution of stack sizes at block boundary");
- dolog();
+ dolog(logtext);
sprintf(logtext, " 0 1 2 3 4 5 6 7 8 9 >=10");
- dolog();
+ dolog(logtext);
sprintf(logtext, "%5d%5d%5d%5d%5d%5d%5d%5d%5d%5d%5d", count_block_stack[0],
count_block_stack[1], count_block_stack[2], count_block_stack[3], count_block_stack[4],
count_block_stack[5], count_block_stack[6], count_block_stack[7], count_block_stack[8],
count_block_stack[9], count_block_stack[10]);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Distribution of store stack depth");
- dolog();
+ dolog(logtext);
sprintf(logtext, " 0 1 2 3 4 5 6 7 8 9 >=10");
- dolog();
+ dolog(logtext);
sprintf(logtext, "%5d%5d%5d%5d%5d%5d%5d%5d%5d%5d%5d", count_store_depth[0],
count_store_depth[1], count_store_depth[2], count_store_depth[3], count_store_depth[4],
count_store_depth[5], count_store_depth[6], count_store_depth[7], count_store_depth[8],
count_store_depth[9], count_store_depth[10]);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Distribution of store creator chains first part");
- dolog();
+ dolog(logtext);
sprintf(logtext, " 0 1 2 3 4 5 6 7 8 9 ");
- dolog();
+ dolog(logtext);
sprintf(logtext, "%5d%5d%5d%5d%5d%5d%5d%5d%5d%5d", count_store_length[0],
count_store_length[1], count_store_length[2], count_store_length[3], count_store_length[4],
count_store_length[5], count_store_length[6], count_store_length[7], count_store_length[8],
count_store_length[9]);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Distribution of store creator chains second part");
- dolog();
+ dolog(logtext);
sprintf(logtext, " 10 11 12 13 14 15 16 17 18 19 >=20");
- dolog();
+ dolog(logtext);
sprintf(logtext, "%5d%5d%5d%5d%5d%5d%5d%5d%5d%5d%5d", count_store_length[10],
count_store_length[11], count_store_length[12], count_store_length[13], count_store_length[14],
count_store_length[15], count_store_length[16], count_store_length[17], count_store_length[18],
count_store_length[19], count_store_length[20]);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Distribution of analysis iterations");
- dolog();
+ dolog(logtext);
sprintf(logtext, " 1 2 3 4 >=5");
- dolog();
+ dolog(logtext);
sprintf(logtext, "%5d%5d%5d%5d%5d", count_analyse_iterations[0], count_analyse_iterations[1],
count_analyse_iterations[2], count_analyse_iterations[3], count_analyse_iterations[4]);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Distribution of basic blocks per method");
- dolog();
+ dolog(logtext);
sprintf(logtext, " <= 5 <=10 <=15 <=20 <=30 <=40 <=50 <=75 >75");
- dolog();
+ dolog(logtext);
sprintf(logtext, "%5d%5d%5d%5d%5d%5d%5d%5d%5d", count_method_bb_distribution[0],
count_method_bb_distribution[1], count_method_bb_distribution[2], count_method_bb_distribution[3],
count_method_bb_distribution[4], count_method_bb_distribution[5], count_method_bb_distribution[6],
count_method_bb_distribution[7], count_method_bb_distribution[8]);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Distribution of basic block sizes");
- dolog();
+ dolog(logtext);
sprintf(logtext,
" 0 1 2 3 4 5 6 7 8 9 <13 <15 <17 <19 <21 <26 <31 >30");
- dolog();
+ dolog(logtext);
sprintf(logtext, "%3d%5d%5d%5d%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d",
count_block_size_distribution[0], count_block_size_distribution[1], count_block_size_distribution[2],
count_block_size_distribution[3], count_block_size_distribution[4], count_block_size_distribution[5],
count_block_size_distribution[9], count_block_size_distribution[10], count_block_size_distribution[11],
count_block_size_distribution[12], count_block_size_distribution[13], count_block_size_distribution[14],
count_block_size_distribution[15], count_block_size_distribution[16], count_block_size_distribution[17]);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of Code Area (Kb): %10.3f", (float) count_code_len / 1024);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of data Area (Kb): %10.3f", (float) count_data_len / 1024);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of Class Infos (Kb):%10.3f", (float) (count_class_infos) / 1024);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of Const Pool (Kb): %10.3f", (float) (count_const_pool_len + count_utf_len) / 1024);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of Vftbl (Kb): %10.3f", (float) count_vftbl_len / 1024);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of comp stub (Kb): %10.3f", (float) count_cstub_len / 1024);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of native stub (Kb):%10.3f", (float) count_nstub_len / 1024);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of Utf (Kb): %10.3f", (float) count_utf_len / 1024);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of VMCode (Kb): %10.3f(%d)", (float) count_vmcode_len / 1024,
count_vmcode_len - 18 * count_all_methods);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of ExTable (Kb): %10.3f", (float) count_extable_len / 1024);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of class loads: %d", count_class_loads);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of class inits: %d", count_class_inits);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of loaded Methods: %d\n\n", count_all_methods);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Calls of utf_new: %22d", count_utf_new);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Calls of utf_new (element found): %6d\n\n", count_utf_new_found);
- dolog();
+ dolog(logtext);
}
if (getcompilingtime)
print_times();
mem_usagelog(0);
- sprintf(logtext, "Exit status: %d\n", (int) status);
- dolog();
+ dolog("Exit status: %d\n", (int) status);
}
exit(status);
Authors: Stefan Ring
- $Id: boehm.c 662 2003-11-21 18:06:25Z jowenn $
+ $Id: boehm.c 689 2003-12-05 18:03:47Z stefan $
*/
void gc_call()
{
- if (collectverbose) {
- sprintf(logtext, "Garbage Collection: previous/now = %d / %d ",
+ if (collectverbose)
+ dolog("Garbage Collection: previous/now = %d / %d ",
0, 0);
- dolog();
- }
GC_gcollect();
}
(m->descriptor == create_methodsig(this->parameterTypes,"V"))))*/
{
if (verbose) {
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "Warning: class has no instance-initializer of specified type: ");
utf_sprint(logtext + strlen(logtext), ((struct classinfo*)clazz)->name);
- dolog();
+ dolog(logtext);
utf_display( create_methodsig(this->parameterTypes,"V"));
printf("\n");
class_showconstantpool(clazz);
The .hh files created with the header file generator are all
included here as are the C functions implementing these methods.
- $Id: native.c 682 2003-12-01 15:33:30Z jowenn $
+ $Id: native.c 689 2003-12-05 18:03:47Z stefan $
*/
if (!m) { /* initializer not found */
if (verbose) {
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "Warning: class has no instance-initializer: ");
utf_sprint(logtext + strlen(logtext), c->name);
- dolog();
+ dolog(logtext);
}
return o;
}
if (!m) { /* initializer not found */
if (verbose) {
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "Warning: class has no instance-initializer: ");
utf_sprint(logtext + strlen(logtext), c->name);
- dolog();
+ dolog(logtext);
}
return o;
}
- Calling the class loader
- Running the main method
- $Id: cacao.c 687 2003-12-04 22:29:54Z edwin $
+ $Id: cacao.c 689 2003-12-05 18:03:47Z stefan $
*/
{
long int totaltime = getcputime();
long int runtime = totaltime - loadingtime - compilingtime;
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "Time for loading classes: %ld secs, %ld millis",
loadingtime / 1000000, (loadingtime % 1000000) / 1000);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Time for compiling code: %ld secs, %ld millis",
compilingtime / 1000000, (compilingtime % 1000000) / 1000);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Time for running program: %ld secs, %ld millis",
runtime / 1000000, (runtime % 1000000) / 1000);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Total time: %ld secs, %ld millis",
totaltime / 1000000, (totaltime % 1000000) / 1000);
- dolog();
+ dolog(logtext);
}
static void print_stats()
{
+ char logtext[MAXLOGTEXT];
+
sprintf(logtext, "Number of JitCompiler Calls: %d", count_jit_calls);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of compiled Methods: %d", count_methods);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of max basic blocks per method: %d", count_max_basic_blocks);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of compiled basic blocks: %d", count_basic_blocks);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of max JavaVM-Instructions per method: %d", count_max_javainstr);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of compiled JavaVM-Instructions: %d", count_javainstr);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of compiled JavaVM-Instructions: %d(%d)", count_javacodesize,
count_javacodesize - count_methods * 18);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of compiled Exception Tables: %d", count_javaexcsize);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Value of extended instruction set var: %d", has_ext_instr_set);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Machine-Instructions: %d", count_code_len >> 2);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Spills: %d", count_spills);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Activ Pseudocommands: %5d", count_pcmd_activ);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Drop Pseudocommands: %5d", count_pcmd_drop);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Const Pseudocommands: %5d (zero:%5d)", count_pcmd_load, count_pcmd_zero);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of ConstAlu Pseudocommands: %5d (cmp: %5d, store:%5d)", count_pcmd_const_alu, count_pcmd_const_bra, count_pcmd_const_store);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Move Pseudocommands: %5d", count_pcmd_move);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Load Pseudocommands: %5d", count_load_instruction);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Store Pseudocommands: %5d (combined: %5d)", count_pcmd_store, count_pcmd_store - count_pcmd_store_comb);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of OP Pseudocommands: %5d", count_pcmd_op);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of DUP Pseudocommands: %5d", count_dup_instruction);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Mem Pseudocommands: %5d", count_pcmd_mem);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Method Pseudocommands: %5d", count_pcmd_met);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Branch Pseudocommands: %5d (rets:%5d, Xrets: %5d)",
count_pcmd_bra, count_pcmd_return, count_pcmd_returnx);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Table Pseudocommands: %5d", count_pcmd_table);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Useful Pseudocommands: %5d", count_pcmd_table +
count_pcmd_bra + count_pcmd_load + count_pcmd_mem + count_pcmd_op);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Null Pointer Checks: %5d", count_check_null);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Array Bound Checks: %5d", count_check_bound);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of Try-Blocks: %d", count_tryblocks);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Maximal count of stack elements: %d", count_max_new_stack);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Upper bound of max stack elements: %d", count_upper_bound_new_stack);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Distribution of stack sizes at block boundary");
- dolog();
+ dolog(logtext);
sprintf(logtext, " 0 1 2 3 4 5 6 7 8 9 >=10");
- dolog();
+ dolog(logtext);
sprintf(logtext, "%5d%5d%5d%5d%5d%5d%5d%5d%5d%5d%5d", count_block_stack[0],
count_block_stack[1], count_block_stack[2], count_block_stack[3], count_block_stack[4],
count_block_stack[5], count_block_stack[6], count_block_stack[7], count_block_stack[8],
count_block_stack[9], count_block_stack[10]);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Distribution of store stack depth");
- dolog();
+ dolog(logtext);
sprintf(logtext, " 0 1 2 3 4 5 6 7 8 9 >=10");
- dolog();
+ dolog(logtext);
sprintf(logtext, "%5d%5d%5d%5d%5d%5d%5d%5d%5d%5d%5d", count_store_depth[0],
count_store_depth[1], count_store_depth[2], count_store_depth[3], count_store_depth[4],
count_store_depth[5], count_store_depth[6], count_store_depth[7], count_store_depth[8],
count_store_depth[9], count_store_depth[10]);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Distribution of store creator chains first part");
- dolog();
+ dolog(logtext);
sprintf(logtext, " 0 1 2 3 4 5 6 7 8 9 ");
- dolog();
+ dolog(logtext);
sprintf(logtext, "%5d%5d%5d%5d%5d%5d%5d%5d%5d%5d", count_store_length[0],
count_store_length[1], count_store_length[2], count_store_length[3], count_store_length[4],
count_store_length[5], count_store_length[6], count_store_length[7], count_store_length[8],
count_store_length[9]);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Distribution of store creator chains second part");
- dolog();
+ dolog(logtext);
sprintf(logtext, " 10 11 12 13 14 15 16 17 18 19 >=20");
- dolog();
+ dolog(logtext);
sprintf(logtext, "%5d%5d%5d%5d%5d%5d%5d%5d%5d%5d%5d", count_store_length[10],
count_store_length[11], count_store_length[12], count_store_length[13], count_store_length[14],
count_store_length[15], count_store_length[16], count_store_length[17], count_store_length[18],
count_store_length[19], count_store_length[20]);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Distribution of analysis iterations");
- dolog();
+ dolog(logtext);
sprintf(logtext, " 1 2 3 4 >=5");
- dolog();
+ dolog(logtext);
sprintf(logtext, "%5d%5d%5d%5d%5d", count_analyse_iterations[0], count_analyse_iterations[1],
count_analyse_iterations[2], count_analyse_iterations[3], count_analyse_iterations[4]);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Distribution of basic blocks per method");
- dolog();
+ dolog(logtext);
sprintf(logtext, " <= 5 <=10 <=15 <=20 <=30 <=40 <=50 <=75 >75");
- dolog();
+ dolog(logtext);
sprintf(logtext, "%5d%5d%5d%5d%5d%5d%5d%5d%5d", count_method_bb_distribution[0],
count_method_bb_distribution[1], count_method_bb_distribution[2], count_method_bb_distribution[3],
count_method_bb_distribution[4], count_method_bb_distribution[5], count_method_bb_distribution[6],
count_method_bb_distribution[7], count_method_bb_distribution[8]);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Distribution of basic block sizes");
- dolog();
+ dolog(logtext);
sprintf(logtext,
" 0 1 2 3 4 5 6 7 8 9 <13 <15 <17 <19 <21 <26 <31 >30");
- dolog();
+ dolog(logtext);
sprintf(logtext, "%3d%5d%5d%5d%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d",
count_block_size_distribution[0], count_block_size_distribution[1], count_block_size_distribution[2],
count_block_size_distribution[3], count_block_size_distribution[4], count_block_size_distribution[5],
count_block_size_distribution[9], count_block_size_distribution[10], count_block_size_distribution[11],
count_block_size_distribution[12], count_block_size_distribution[13], count_block_size_distribution[14],
count_block_size_distribution[15], count_block_size_distribution[16], count_block_size_distribution[17]);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of Code Area (Kb): %10.3f", (float) count_code_len / 1024);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of data Area (Kb): %10.3f", (float) count_data_len / 1024);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of Class Infos (Kb):%10.3f", (float) (count_class_infos) / 1024);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of Const Pool (Kb): %10.3f", (float) (count_const_pool_len + count_utf_len) / 1024);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of Vftbl (Kb): %10.3f", (float) count_vftbl_len / 1024);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of comp stub (Kb): %10.3f", (float) count_cstub_len / 1024);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of native stub (Kb):%10.3f", (float) count_nstub_len / 1024);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of Utf (Kb): %10.3f", (float) count_utf_len / 1024);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of VMCode (Kb): %10.3f(%d)", (float) count_vmcode_len / 1024,
count_vmcode_len - 18 * count_all_methods);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Size of ExTable (Kb): %10.3f", (float) count_extable_len / 1024);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of class loads: %d", count_class_loads);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of class inits: %d", count_class_inits);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Number of loaded Methods: %d\n\n", count_all_methods);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Calls of utf_new: %22d", count_utf_new);
- dolog();
+ dolog(logtext);
sprintf(logtext, "Calls of utf_new (element found): %6d\n\n", count_utf_new_found);
- dolog();
+ dolog(logtext);
}
if (getcompilingtime)
print_times();
mem_usagelog(0);
- sprintf(logtext, "Exit status: %d\n", (int) status);
- dolog();
+ dolog("Exit status: %d\n", (int) status);
}
exit(status);
Changes: Mark Probst
Philipp Tomsich
- $Id: headers.c 685 2003-12-04 01:25:54Z jowenn $
+ $Id: headers.c 689 2003-12-05 18:03:47Z stefan $
*/
void throw_classnotfoundexception2(utf* classname)
{
+ /* [stefan] code was useless
sprintf (logtext, "Loading class: ");
- utf_sprint (logtext+strlen(logtext), classname);
+ utf_sprint (logtext+strlen(logtext), classname);
+ */
panic("******class not found");
}
Authors: Stefan Ring
- $Id: boehm.c 662 2003-11-21 18:06:25Z jowenn $
+ $Id: boehm.c 689 2003-12-05 18:03:47Z stefan $
*/
void gc_call()
{
- if (collectverbose) {
- sprintf(logtext, "Garbage Collection: previous/now = %d / %d ",
+ if (collectverbose)
+ dolog("Garbage Collection: previous/now = %d / %d ",
0, 0);
- dolog();
- }
GC_gcollect();
}
Authors: Reinhard Grafl
- $Id: memory.c 662 2003-11-21 18:06:25Z jowenn $
+ $Id: memory.c 689 2003-12-05 18:03:47Z stefan $
*/
{
# define LINESIZE 16
int z, i;
+ char logtext[MAXLOGTEXT];
for (z = 0; z < len; z += LINESIZE) {
sprintf(logtext, " ");
"%c", (m[i] >= ' ' && m[i] <= 127) ? m[i] : '.');
}
- dolog();
+ dolog(logtext);
}
}
void mem_usagelog (int givewarnings)
{
if ((memoryusage!=0) && givewarnings) {
- sprintf (logtext, "Allocated memory not returned: %d",
+ dolog ("Allocated memory not returned: %d",
(int)memoryusage);
- dolog();
#ifdef DEBUG
{
memblock *mb = firstmemblock;
while (mb) {
- sprintf (logtext, " Memory block size: %d",
+ dolog (" Memory block size: %d",
(int)(mb->length) );
- dolog();
mem_characterlog ( ((unsigned char*)mb) + BLOCKOFFSET, mb->length);
mb = mb->next;
}
}
if ((dumpsize!=0) && givewarnings) {
- sprintf (logtext, "Dump memory not returned: %d",(int)dumpsize);
- dolog();
+ dolog ("Dump memory not returned: %d",(int)dumpsize);
}
- sprintf(logtext, "Random/Dump - memory usage: %dK/%dK",
+ dolog("Random/Dump - memory usage: %dK/%dK",
(int)((maxmemusage+1023)/1024),
(int)((maxdumpsize+1023)/1024) );
- dolog();
}
The .hh files created with the header file generator are all
included here as are the C functions implementing these methods.
- $Id: native.c 682 2003-12-01 15:33:30Z jowenn $
+ $Id: native.c 689 2003-12-05 18:03:47Z stefan $
*/
if (!m) { /* initializer not found */
if (verbose) {
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "Warning: class has no instance-initializer: ");
utf_sprint(logtext + strlen(logtext), c->name);
- dolog();
+ dolog(logtext);
}
return o;
}
if (!m) { /* initializer not found */
if (verbose) {
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "Warning: class has no instance-initializer: ");
utf_sprint(logtext + strlen(logtext), c->name);
- dolog();
+ dolog(logtext);
}
return o;
}
(m->descriptor == create_methodsig(this->parameterTypes,"V"))))*/
{
if (verbose) {
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "Warning: class has no instance-initializer of specified type: ");
utf_sprint(logtext + strlen(logtext), ((struct classinfo*)clazz)->name);
- dolog();
+ dolog(logtext);
utf_display( create_methodsig(this->parameterTypes,"V"));
printf("\n");
class_showconstantpool(clazz);
calls instead of machine instructions, using the C calling
convention.
- $Id: builtin.c 686 2003-12-04 11:35:11Z stefan $
+ $Id: builtin.c 689 2003-12-05 18:03:47Z stefan $
*/
java_objectheader *builtin_throw_exception(java_objectheader *local_exceptionptr)
{
if (verbose) {
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "Builtin exception thrown: ");
if (local_exceptionptr)
utf_sprint(logtext + strlen(logtext), local_exceptionptr->vftbl->class->name);
if (!proto_java_lang_ThreadDeath) sprintf(logtext+strlen(logtext),"%s","proto_java_lang_ThreadDeath==0");
if (!proto_java_lang_ThreadDeath) sprintf(logtext+strlen(logtext),"%s","proto_java_lang_ThreadDeath==0");
}
- dolog();
+ dolog(logtext);
}
exceptionptr = local_exceptionptr;
return local_exceptionptr;
{
int i;
+ char logtext[MAXLOGTEXT];
for (i = 0; i < methodindent; i++)
logtext[i] = '\t';
sprintf(logtext + methodindent, "called: ");
#endif
}
sprintf (logtext+strlen(logtext), ")");
- dolog ();
+ dolog (logtext);
methodindent++;
}
void builtin_displaymethodstart(methodinfo *method)
{
+ char logtext[MAXLOGTEXT];
sprintf(logtext, " ");
sprintf(logtext + methodindent, "called: ");
utf_sprint(logtext + strlen(logtext), method->class->name);
sprintf(logtext + strlen(logtext), ".");
utf_sprint(logtext + strlen(logtext), method->name);
utf_sprint(logtext + strlen(logtext), method->descriptor);
- dolog();
+ dolog(logtext);
methodindent++;
}
void builtin_displaymethodstop(methodinfo *method, s8 l, double d, float f)
{
int i;
+ char logtext[MAXLOGTEXT];
for (i = 0; i < methodindent; i++)
logtext[i] = '\t';
methodindent--;
sprintf(logtext + strlen(logtext), "->%g", d);
break;
}
- dolog();
+ dolog(logtext);
}
void builtin_displaymethodexception(methodinfo *method)
{
int i;
+ char logtext[MAXLOGTEXT];
for (i = 0; i < methodindent; i++)
logtext[i] = '\t';
sprintf(logtext + methodindent, "exception abort: ");
sprintf(logtext + strlen(logtext), ".");
utf_sprint(logtext + strlen(logtext), method->name);
utf_sprint(logtext + strlen(logtext), method->descriptor);
- dolog();
+ dolog(logtext);
}
Authors: Andreas Krall
Christian Thalinger
- $Id: codegen.c 688 2003-12-04 23:50:25Z jowenn $
+ $Id: codegen.c 689 2003-12-05 18:03:47Z stefan $
*/
default:
d = 0;
- sprintf(logtext, "Unkown ICMD-Command: %d", iptr->opc);
- error();
+ error("Unkown ICMD-Command: %d", iptr->opc);
}
/* d contains return type */
break;
- default: sprintf (logtext, "Unknown pseudo command: %d", iptr->opc);
- error();
+ default: error ("Unknown pseudo command: %d", iptr->opc);
Authors: Dieter Thuernbeck
- $Id: inline.c 662 2003-11-21 18:06:25Z jowenn $
+ $Id: inline.c 689 2003-12-05 18:03:47Z stefan $
*/
cummethods++;
if (verbose) {
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "Going to inline: ");
utf_sprint(logtext +strlen(logtext), imi->class->name);
strcpy(logtext + strlen(logtext), ".");
utf_sprint(logtext + strlen(logtext), imi->name);
utf_sprint(logtext + strlen(logtext), imi->descriptor);
- dolog();
+ dolog(logtext);
}
tmp = inlining_analyse_method(imi, level + 1, gp, firstlocal + m->maxlocals, maxstackdepth + m->maxstack);
Authors: Andreas Krall
Reinhard Grafl
- $Id: jit.c 640 2003-11-15 12:14:05Z stefan $
+ $Id: jit.c 689 2003-12-05 18:03:47Z stefan $
*/
/* if there is no javacode print error message and return empty method */
if (!m->jcode) {
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "No code given for: ");
utf_sprint(logtext+strlen(logtext), m->class->name);
strcpy(logtext+strlen(logtext), ".");
utf_sprint(logtext+strlen(logtext), m->name);
utf_sprint(logtext+strlen(logtext), m->descriptor);
- dolog();
+ dolog(logtext);
intsRestore(); /* enable interrupts again */
return (methodptr) do_nothing_function; /* return empty method */
}
/* print log message for compiled method */
if (compileverbose) {
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "Compiling: ");
utf_sprint(logtext+strlen(logtext), m->class->name);
strcpy(logtext+strlen(logtext), ".");
utf_sprint(logtext+strlen(logtext), m->name);
utf_sprint(logtext+strlen(logtext), m->descriptor);
- dolog();
+ dolog(logtext);
}
Changes: Carolyn Oates
- $Id: parse.c 669 2003-11-23 14:04:20Z edwin $
+ $Id: parse.c 689 2003-12-05 18:03:47Z stefan $
*/
return;
if (cl == NULL) {
if (runverbose) {
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "compiler_addinitclass: ");
utf_sprint(logtext+strlen(logtext), c->name);
- dolog();
+ dolog(logtext);
}
chain_addlast(uninitializedclasses, c);
return;
}
if (c < cl) {
if (runverbose) {
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "compiler_addinitclass: ");
utf_sprint(logtext+strlen(logtext), c->name);
- dolog();
+ dolog(logtext);
}
chain_addbefore(uninitializedclasses, c);
return;
Authors: Andreas Krall
Christian Thalinger
- $Id: codegen.c 626 2003-11-13 14:30:08Z twisti $
+ $Id: codegen.c 689 2003-12-05 18:03:47Z stefan $
*/
default:
d = 0;
- sprintf(logtext, "Unkown ICMD-Command: %d", iptr->opc);
- error();
+ error("Unkown ICMD-Command: %d", iptr->opc);
}
/* d contains return type */
store_reg_to_var_int(iptr->dst, s1);
break;
- default: sprintf(logtext, "Unknown pseudo command: %d", iptr->opc);
- error();
+ default: error("Unknown pseudo command: %d", iptr->opc);
} /* switch */
} /* for instruction */
Roman Obermaiser
Mark Probst
- $Id: loader.c 687 2003-12-04 22:29:54Z edwin $
+ $Id: loader.c 689 2003-12-05 18:03:47Z stefan $
*/
}
}
if (verbose) {
- sprintf(logtext, "Warning: Can not open class file '%s'", filename);
- dolog();
+ dolog("Warning: Can not open class file '%s'", filename);
}
return false;
if (classdata_left > 0) {
/* surplus */
- sprintf(logtext, "There are %d access bytes at end of classfile",
+ dolog("There are %d access bytes at end of classfile",
classdata_left);
- dolog();
}
/* free memory */
/* check type of constantpool entry */
if (c->cptags[pos] != ctype) {
- sprintf (logtext, "Type mismatch on constant: %d requested, %d here (innerclass_getconstant)",
+ error ("Type mismatch on constant: %d requested, %d here (innerclass_getconstant)",
(int) ctype, (int) c->cptags[pos] );
- error();
}
return c->cpinfos[pos];
if (c->cptags[pos] != ctype) {
class_showconstantpool(c);
- sprintf (logtext, "Type mismatch on constant: %d requested, %d here (class_getconstant)",
+ error ("Type mismatch on constant: %d requested, %d here (class_getconstant)",
(int) ctype, (int) c->cptags[pos] );
- error();
}
return c->cpinfos[pos];
}
default:
- sprintf (logtext, "Unkown constant type: %d",(int) t);
- error ();
+ error ("Unkown constant type: %d",(int) t);
} /* end switch */
/* output for debugging purposes */
if (loadverbose) {
+ char logtext[MAXLOGTEXT];
sprintf(logtext, "Loading class: ");
utf_sprint(logtext+strlen(logtext), c->name);
- dolog();
+ dolog(logtext);
}
/* load classdata, throw exception on error */
mi = suck_u2();
ma = suck_u2();
if (ma != MAJOR_VERSION && (ma != MAJOR_VERSION+1 || mi != 0)) {
- sprintf (logtext, "File version %d.%d is not supported",
+ error ("File version %d.%d is not supported",
(int) ma, (int) mi);
- error();
}
class_loadcpool (c);
s4 i;
if ( ! (c->flags & ACC_INTERFACE) ) {
+ char logtext[MAXLOGTEXT];
sprintf (logtext, "Interface-methods count requested for non-interface: ");
utf_sprint (logtext+strlen(logtext), c->name);
- error();
+ error(logtext);
}
h = c->index;
if (linkverbose) {
+ char logtext[MAXLOGTEXT];
sprintf (logtext, "Linking Class: ");
utf_sprint (logtext+strlen(logtext), c->name );
- dolog ();
+ dolog (logtext);
}
/* compute vftbl length */
m = class_findmethod (c, utf_clinit, utf_fidesc);
if (!m) {
if (initverbose) {
+ char logtext[MAXLOGTEXT];
sprintf (logtext, "Class ");
utf_sprint (logtext+strlen(logtext), c->name);
sprintf (logtext+strlen(logtext), " has no initializer");
- dolog ();
+ dolog (logtext);
}
/* goto callinitialize;*/
return;
panic ("Class initializer is not static!");
if (initverbose) {
+ char logtext[MAXLOGTEXT];
sprintf (logtext, "Starting initializer for class: ");
utf_sprint (logtext+strlen(logtext), c->name);
- dolog ();
+ dolog (logtext);
}
#ifdef USE_THREADS
}
if (initverbose) {
+ char logtext[MAXLOGTEXT];
sprintf (logtext, "Finished initializer for class: ");
utf_sprint (logtext+strlen(logtext), c->name);
- dolog ();
+ dolog (logtext);
}
if (c->name == utf_systemclass) {
/* class java.lang.System requires explicit initialization */
- the heap
- additional support functions
- $Id: tables.c 687 2003-12-04 22:29:54Z edwin $
+ $Id: tables.c 689 2003-12-05 18:03:47Z stefan $
*/
u2 desc_to_type(utf *descriptor)
{
char *utf_ptr = descriptor->text; /* current position in utf text */
+ char logtext[MAXLOGTEXT];
if (descriptor->blength < 1) panic("Type-Descriptor is empty string");
sprintf(logtext, "Invalid Type-Descriptor: ");
utf_sprint(logtext+strlen(logtext), descriptor);
- error();
+ error(logtext);
return 0;
}
- the heap
- additional support functions
- $Id: tables.c 687 2003-12-04 22:29:54Z edwin $
+ $Id: tables.c 689 2003-12-05 18:03:47Z stefan $
*/
u2 desc_to_type(utf *descriptor)
{
char *utf_ptr = descriptor->text; /* current position in utf text */
+ char logtext[MAXLOGTEXT];
if (descriptor->blength < 1) panic("Type-Descriptor is empty string");
sprintf(logtext, "Invalid Type-Descriptor: ");
utf_sprint(logtext+strlen(logtext), descriptor);
- error();
+ error(logtext);
return 0;
}
Authors: Reinhard Grafl
- $Id: loging.c 684 2003-12-02 16:50:17Z twisti $
+ $Id: loging.c 689 2003-12-05 18:03:47Z stefan $
*/
#include <stdio.h>
+#include <stdarg.h>
#include <sys/time.h>
#include <sys/resource.h>
LOG FILE HANDLING
***************************************************************************/
-char logtext[MAXLOGTEXT]; /* Needs to be filled with desired text before */
- /* call to dolog() */
-
-
FILE *logfile = NULL;
**************************************************************************/
-void dolog()
+void dolog(char *txt, ...)
{
+ char logtext[MAXLOGTEXT];
+ va_list ap;
+
+ va_start(ap, txt);
+ vsprintf(logtext, txt, ap);
+ va_end(ap);
+
if (logfile) {
fprintf(logfile, "%s\n",logtext);
fflush(logfile);
void log_text(char *text)
{
- sprintf(logtext, "%s",text);
- dolog();
+ dolog("%s", text);
}
{
long int t;
int sec, usec;
+ char logtext[MAXLOGTEXT];
t = getcputime();
sec = t / 1000000;
sprintf(logtext, "Total CPU usage: %d seconds and %d milliseconds",
sec, usec / 1000);
- dolog();
+ dolog(logtext);
}
**************************************************************************/
-void error()
+void error(char *txt, ...)
{
+ char logtext[MAXLOGTEXT];
+ va_list ap;
+
+ va_start(ap, txt);
+ vsprintf(logtext, txt, ap);
+ va_end(ap);
+
if (logfile) {
fprintf(logfile, "ERROR: %s\n", logtext);
}
- printf("ERROR: %s\n",logtext);
+ fprintf(stderr, "ERROR: %s\n", logtext);
exit(10);
}
void panic(char *txt)
{
- sprintf(logtext, "%s", txt);
- error();
+ error("%s", txt);
}
Authors: Reinhard Grafl
- $Id: loging.h 684 2003-12-02 16:50:17Z twisti $
+ $Id: loging.h 689 2003-12-05 18:03:47Z stefan $
*/
#define PANICIF(when,txt) if(when)panic(txt)
#define MAXLOGTEXT 500
-extern char logtext[MAXLOGTEXT];
-
/* function prototypes */
void log_cputime();
-void dolog();
-void error();
+void dolog(char *txt, ...);
+void error(char *txt, ...);
void panic(char *txt);
long int getcputime();
Authors: Reinhard Grafl
- $Id: memory.c 662 2003-11-21 18:06:25Z jowenn $
+ $Id: memory.c 689 2003-12-05 18:03:47Z stefan $
*/
{
# define LINESIZE 16
int z, i;
+ char logtext[MAXLOGTEXT];
for (z = 0; z < len; z += LINESIZE) {
sprintf(logtext, " ");
"%c", (m[i] >= ' ' && m[i] <= 127) ? m[i] : '.');
}
- dolog();
+ dolog(logtext);
}
}
void mem_usagelog (int givewarnings)
{
if ((memoryusage!=0) && givewarnings) {
- sprintf (logtext, "Allocated memory not returned: %d",
+ dolog ("Allocated memory not returned: %d",
(int)memoryusage);
- dolog();
#ifdef DEBUG
{
memblock *mb = firstmemblock;
while (mb) {
- sprintf (logtext, " Memory block size: %d",
+ dolog (" Memory block size: %d",
(int)(mb->length) );
- dolog();
mem_characterlog ( ((unsigned char*)mb) + BLOCKOFFSET, mb->length);
mb = mb->next;
}
}
if ((dumpsize!=0) && givewarnings) {
- sprintf (logtext, "Dump memory not returned: %d",(int)dumpsize);
- dolog();
+ dolog ("Dump memory not returned: %d",(int)dumpsize);
}
- sprintf(logtext, "Random/Dump - memory usage: %dK/%dK",
+ dolog("Random/Dump - memory usage: %dK/%dK",
(int)((maxmemusage+1023)/1024),
(int)((maxdumpsize+1023)/1024) );
- dolog();
}