cvsuser 04/09/25 07:44:25
Modified: jit/sun4 core.jit jit_emit.h
Log:
[perl #31720] [PATCH] fix make testj hang on solaris
The solaris port does not yet support jitted vtables (for instance function
Parrot_jit_vtable1_op is plain empty at the moment), so this patch comments
out the whole "jit vatbles" block until we get it properly implemented.
This fixes make testj on
t/op/gc (failing, passes ok now)
t/op/lexicals.t (this was hanging undefintly, now passes ok)
and also regain visibility on the jit tests, without having to manually
bypass lexicals.
[perl #31721] [PATCH] jit compare ops on solaris
This patch implements some compare ops (eq, ne, lt, le, gt, ge on
integers - template cmp_ix_ix_ic), for the JIT core on Sun/SPARC.
Courtesy of Stephane Peiry <[EMAIL PROTECTED]>
Revision Changes Path
1.7 +119 -1 parrot/jit/sun4/core.jit
Index: core.jit
===================================================================
RCS file: /cvs/public/parrot/jit/sun4/core.jit,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -w -r1.6 -r1.7
--- core.jit 15 Mar 2004 13:15:44 -0000 1.6
+++ core.jit 25 Sep 2004 14:44:22 -0000 1.7
@@ -1,7 +1,7 @@
;
; sun4/core.jit
;
-; $Id: core.jit,v 1.6 2004/03/15 13:15:44 leo Exp $
+; $Id: core.jit,v 1.7 2004/09/25 14:44:22 leo Exp $
;
Parrot_end {
@@ -583,6 +583,124 @@
emitm_nop(NATIVECODE);
}
+TEMPLATE Parrot_cmp_ix_ix_ic {
+ if(MAP[1] && MAP[2]){
+ emitm_subcc_r(NATIVECODE, MAP[1], MAP[2], emitm_g(0));
+ }
+ else if (MAP[1]) {
+ jit_emit_load_i(jit_info, interpreter, 2, ISR2);
+ emitm_subcc_r(NATIVECODE, MAP[1], ISR2, emitm_g(0));
+ }
+ else if (MAP[2]) {
+ jit_emit_load_i(jit_info, interpreter, 1, ISR1);
+ emitm_subcc_r(NATIVECODE, ISR1, MAP[2], emitm_g(0));
+ }
+ else {
+ jit_emit_load_i(jit_info, interpreter, 1, ISR1);
+ jit_emit_load_i(jit_info, interpreter, 2, ISR2);
+ emitm_subcc_r(NATIVECODE, ISR1, ISR2, emitm_g(0));
+ }
+
+ Parrot_jit_bicc(jit_info, emitm_<a>, 0, *INT_CONST[3]);
+ emitm_nop(NATIVECODE);
+}
+
+Parrot_eq_ic_ic_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/be/
+}
+
+Parrot_eq_i_ic_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/be/
+}
+
+Parrot_eq_ic_i_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/be/
+}
+
+Parrot_eq_i_i_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/be/
+}
+
+Parrot_ne_ic_ic_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/bne/
+}
+
+Parrot_ne_i_ic_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/bne/
+}
+
+Parrot_ne_ic_i_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/bne/
+}
+
+Parrot_ne_i_i_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/bne/
+}
+
+Parrot_lt_ic_ic_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/bl/
+}
+
+Parrot_lt_i_ic_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/bl/
+}
+
+Parrot_lt_ic_i_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/bl/
+}
+
+Parrot_lt_i_i_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/bl/
+}
+
+Parrot_le_ic_ic_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/ble/
+}
+
+Parrot_le_i_ic_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/ble/
+}
+
+Parrot_le_ic_i_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/ble/
+}
+
+Parrot_le_i_i_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/ble/
+}
+
+Parrot_gt_ic_ic_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/bg/
+}
+
+Parrot_gt_i_ic_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/bg/
+}
+
+Parrot_gt_ic_i_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/bg/
+}
+
+Parrot_gt_i_i_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/bg/
+}
+
+Parrot_ge_ic_ic_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/bge/
+}
+
+Parrot_ge_i_ic_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/bge/
+}
+
+Parrot_ge_ic_i_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/bge/
+}
+
+Parrot_ge_i_i_ic {
+ Parrot_cmp_ix_ix_ic s/<a>/bge/
+}
+
/*
* Local variables:
* c-indentation-style: bsd
1.28 +5 -5 parrot/jit/sun4/jit_emit.h
Index: jit_emit.h
===================================================================
RCS file: /cvs/public/parrot/jit/sun4/jit_emit.h,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -w -r1.27 -r1.28
--- jit_emit.h 23 Apr 2004 09:20:56 -0000 1.27
+++ jit_emit.h 25 Sep 2004 14:44:22 -0000 1.28
@@ -3,7 +3,7 @@
**
** SPARC
**
-** $Id: jit_emit.h,v 1.27 2004/04/23 09:20:56 jrieks Exp $
+** $Id: jit_emit.h,v 1.28 2004/09/25 14:44:22 leo Exp $
**/
#if !defined(PARROT_SUN4_JIT_EMIT_H_GUARD)
@@ -734,9 +734,9 @@
}
# ifndef NO_JIT_VTABLE_OPS
-
+/*
# undef Parrot_jit_vtable1_op
-/*# undef Parrot_jit_vtable1r_op
+# undef Parrot_jit_vtable1r_op
# undef Parrot_jit_vtable2rk_op
# undef Parrot_jit_vtable3k_op
@@ -752,14 +752,14 @@
# undef Parrot_jit_vtable_ifp_op
# undef Parrot_jit_vtable_unlessp_op
# undef Parrot_jit_vtable_newp_ic_op
-*/
+
static void
Parrot_jit_vtable1_op(Parrot_jit_info_t *jit_info,
Interp *interpreter)
{
}
-
+*/
#endif /* NO_JIT_VTABLE_OPS */
#else