harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From snowdosker <snowdos...@academ.org>
Subject Re: Classpath on Cygwin: failed to open native library error
Date Wed, 22 Feb 2006 17:54:25 GMT
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



Mime
View raw message