From: Eric B. <er...@go...> - 2008-03-24 17:35:26
|
Colin Paul Adams wrote: >>>>>> "Eric" == Eric Bezault <er...@go...> writes: > > Eric> Can you send me the C code generated for T122f10? I don't > Eric> understand how we can have 35 seconds self and 7214 seconds > Eric> cumulative. Unless its thread is blocked when the GC is > Eric> doing something special on its own thread. > > > /* DS_ARRAYED_LIST [INTEGER_32].item */ > T6 T122f10(T0* C, T6 a1) > { > T6 R = 0; > R = (((T112*)(GE_void(((T122*)(C))->a2)))->z2[a1]); > return R; > } > Hmmm, unless you have calls-on-void-target, GE_void is a macro that does not call another function: #define GE_void (!(obj)?GE_check_void(obj):(obj)) So T122f10 does not call any other C function. So I would believe that the values for self and cumulative should be the same. The only explanation that I can think of is that the GC thread is blocking the other thread while executing T12f10. I know nothing about threads, and even less about how it works in the Boehm GC, so what I just said might be completely stupid. -- Eric Bezault mailto:er...@go... http://www.gobosoft.com |