another compiler better than gcj ?

Bryce McKinlay bryce@waitaki.otago.ac.nz
Tue Oct 23 23:23:00 GMT 2001


Anthony Green wrote:
>Bryce wrote:
>>>Wouldn't the best solution for x86 integer divides be to just emit
>>something like:
>>>>if (__builtin_expect (divisor== 0), false)
>> _Jv_ThrowDivideByZero()
>>else
>> .. do divide ..
>>>>Well, there's usually another goofy case we need to watch for. See _Jv_divI
>and friends in prims.cc. Do we want to put all of these tests inline?
>
On x86 at least, I don't think the special case is neccessary because 
the CPU's behaviour matches the Java spec anyway. Here's a test case 
which seems to show that:
#include <gcj/cni.h>
#include <java/lang/System.h>
#include <java/io/PrintStream.h>
#include <java/lang/Integer.h>
#include <java/lang/Long.h>
int main(int argc, char *argv)
{
 using namespace java::lang;
 
 _Jv_CreateJavaVM (NULL);
 _Jv_AttachCurrentThread (NULL, NULL);
 
 jint i = Integer::MIN_VALUE;
 jlong j = Long::MIN_VALUE;
 System::out->println(i / (jint) -1);
 System::out->println(j / (jlong) -1);
}
I don't know about other hardware though. I'll try it on my Powerbook 
tonight. If there is hardware that doesn't match the spec, maybe it 
would be nice to be able to tell the back-end that we want a 
divide-with-java-semantics, and let it deal with it?
regards
Bryce.


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /