Hello, Archie
snowdosker wrote:
Today I've made changes to eliminate the requirement that
_JC_FULL_ALIGNMENT
be at most sizeof(_jc_word), so this will fix the assertion in heap.c.
Just compared my local version with svn repository at Harmony project..
Don't see any changes.
Do you commit this changes in JCVM repository ?
Yes, r378953.
Sorry for bothering you. This number is something not very clear for me.
I'm not guru in CVS but I just checkouted latest JCVM from
sourceforge ...latest modifications dates are
21.01.2006
How and where can I get diff for this changes to apply it for my local
JCHEVM installation ?
Also.. today started working on assertions..
This one in vm.c under cygwin
JC_ASSERT(vm->threads.prio_min <= vm->threads.prio_max);
caused by a bit strange implementation of * *sched.cc on cygwin
(source can be found here:
http://www.koders.com/cpp/fidFCD804607170E62E066B115DCE4FCB2BEA405E30.aspx )
All functions operates (accept as params and returns) with unix-like
thread priorities, mapping it to reverse windows style priorities.
But for some strange reason sched_get_priority_max (int policy) and
sched_get_priority_min (int policy) return windows style
reverse priorities from 15(min) to -14(max)
Just defined wrapping functions in i386_libjc.h and used these
functions instead of original ones.
This helps.
------------------------------------------------
#if defined(__CYGWIN__)
extern inline int _jc_sched_get_priority_max(int policy){
if (policy < 1 || policy > 3) {
set_errno (EINVAL);
return -1;
}
return 15;
}
extern inline int _jc_sched_get_priority_min(int policy){
if (policy < 1 || policy > 3) {
set_errno (EINVAL);
return -1;
}
return 1;
}
#else
extern inline int _jc_sched_get_priority_max(int policy){
return sched_get_priority_max(policy);
}
extern inline int _jc_sched_get_priority_min(int policy){
return sched_get_priority_min(policy);
}
#endif
------------------------------------------------
The next assertion which stopped me is one in heap.c
_JC_ASSERT(bs->hint == NULL || (((_jc_word)bs->hint &
(_JC_PAGE_SIZE - 1)) % bs->size) == _JC_HEAP_BLOCK_OFFSET);
Guess the one you was talking about...
Anyway some info which may be someway helpful with this assertion. I
just printout values
(_jc_word)bs->hint = 0
(_JC_PAGE_SIZE - 1) = 4095
bs->size = 24
_JC_HEAP_BLOCK_OFFSET = 8
Thank you, Ivan