Re[18]: [Gc] GC + Windows Mobile + Threads + Patch for WINCE

Ivan Maidanski ivmai at
Tue Aug 25 23:03:20 PDT 2009


biosli <biosli at> wrote:
> >>> 2. remove SMALL_CONFIG (remove also GC_GCJ_SUPPORT if defined) and define THREAD_LOCAL_ALLOC;
> >> The test program crashed.
> ...
> >> In win32 the test program works well.
> It happens at called GC_gcollect(), and the call stack stopped at GC_mark_from().
> Line: 835 current = *(word *)current_p; or Line: 810 deferred = *(word *)limit;
> (I send a attachment of backtrace pic. I hope it is helpful.)
> And I found it is not crash every time

I'm looking at it now...

BTW. Do you have -DGC_ASSERTIONS ? (if not, retry with it defined).

> Case 3:
> > for (i = 0; i < 5; ++i) {
> > check_ints(reverse(reverse(ints(1,10))), 1, 10);
> > And try smaller values, say, 5 -> 3 and 10 -> 4. If it would work I'll set this values for VERY_SMALL_CONFIG case.
> I do it as you said. The test passed.(define THREAD_LOCAL_ALLOC, GC_GCJ_SUPPORT)

Just to make lesser changes to test.c, could you tell me whether it works without 5->3 change (should work I guess), and, if yes, whether it works with 10->6 or 10->8 (again without 5->3 change)?

> > PS. I've also made PARALLEL_MARK available on WinCE but it requires assembler AO_store() implementation on ARM for VC++.
> So far as I know, not all CPU with ARM supports assembler.
You mean not all embedded CPUs are ARMs, right?
The problem is VC++ fo ARM doesn't support inline assembler, so there should be an .asm file (implementing AO_store() and friends), or __emit() (and, possibly, __declspec(naked)) should be used for these inline functions (the latter is the better, I think). For now, I'm not going to implement it.

> There is a link for help(
> Best wishes,
> GC Beginner
> Zeyi Lee


More information about the Gc mailing list