You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by mf...@apache.org on 2007/08/02 14:41:28 UTC
svn commit: r562098 - in /harmony/enhanced/drlvm/trunk:
src/test/regression/H4595/ src/test/regression/H4595/Test.java
src/test/regression/H4595/run.test.xml
vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.cpp
vm/jitrino/src/jet/cg_regs.cpp
Author: mfursov
Date: Thu Aug 2 05:41:27 2007
New Revision: 562098
URL: http://svn.apache.org/viewvc?view=rev&rev=562098
Log:
Fix and regression test for HARMONY-4595
Fix for HARMONY-1874
Added:
harmony/enhanced/drlvm/trunk/src/test/regression/H4595/
harmony/enhanced/drlvm/trunk/src/test/regression/H4595/Test.java
harmony/enhanced/drlvm/trunk/src/test/regression/H4595/run.test.xml
Modified:
harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.cpp
harmony/enhanced/drlvm/trunk/vm/jitrino/src/jet/cg_regs.cpp
Added: harmony/enhanced/drlvm/trunk/src/test/regression/H4595/Test.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/src/test/regression/H4595/Test.java?view=auto&rev=562098
==============================================================================
--- harmony/enhanced/drlvm/trunk/src/test/regression/H4595/Test.java (added)
+++ harmony/enhanced/drlvm/trunk/src/test/regression/H4595/Test.java Thu Aug 2 05:41:27 2007
@@ -0,0 +1,58 @@
+package org.apache.harmony.drlvm.tests.regression.h4595;
+
+import junit.framework.*;
+
+public class Test extends TestCase {
+
+
+/// test 1
+ class A {
+ void in(long l1, long l2, long l3){
+ assertEquals(10000002, l1);
+ }
+ }
+
+ XGraphics2D g2d = new XGraphics2D();
+ A a = new A();
+
+ public void test1() {
+ long l = get();
+ before(l);
+ a.in(g2d.display, g2d.drawable, g2d.imageGC);
+ }
+
+ long get(){return 4;}
+ void before(long l){ /*do nothing*/}
+
+
+
+
+/// test 2
+ public void test2() {
+ long[] x = new long[] { g2d.drawable};
+ //check that no exception is thrown
+ }
+
+/// test 3
+
+ double d = 30d;
+ static Test t = new Test();
+ static long [] arr = new long [] {6, 25, 50};
+
+ public void test3() {
+ double v = t3();
+ assertEquals(v, 5d);
+ }
+
+ double t3() {
+ double d1 = t.d / arr[0];
+ return d1;
+ }
+
+}
+
+class XGraphics2D {
+ long drawable = 10000001;
+ long display = 10000002;
+ long imageGC = 10000003;
+}
Added: harmony/enhanced/drlvm/trunk/src/test/regression/H4595/run.test.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/src/test/regression/H4595/run.test.xml?view=auto&rev=562098
==============================================================================
--- harmony/enhanced/drlvm/trunk/src/test/regression/H4595/run.test.xml (added)
+++ harmony/enhanced/drlvm/trunk/src/test/regression/H4595/run.test.xml Thu Aug 2 05:41:27 2007
@@ -0,0 +1,9 @@
+<project name="RUN HARMONY-4514 Regression Test">
+ <target name="run-test">
+ <run-junit-test
+ test="org.apache.harmony.drlvm.tests.regression.h4595.Test"
+ vmarg="-Xem:jet">
+ </run-junit-test>
+ </target>
+</project>
+
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.cpp?view=diff&rev=562098&r1=562097&r2=562098
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.cpp Thu Aug 2 05:41:27 2007
@@ -1581,7 +1581,8 @@
appendInsts(irManager.newRuntimeHelperCallInst(
CompilationInterface::Helper_IsValidElemType, lengthof(args), args, flag));
- bzero(CompareZeroOp::Ref, flag);
+ // the helper returns boolean value
+ bzero(CompareZeroOp::I4, flag);
codeSelector.genTrueEdge(currentBasicBlock, throwBasicBlock, 0);
return getTauUnsafe();
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/jet/cg_regs.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/jet/cg_regs.cpp?view=diff&rev=562098&r1=562097&r2=562098
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/jet/cg_regs.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/jet/cg_regs.cpp Thu Aug 2 05:41:27 2007
@@ -164,7 +164,10 @@
for (unsigned i=0; is_gr(ar) && i<m_jframe->size(); i++) {
Val& s = m_jframe->dip(i);
if (!s.is_mem() || !s.uses(ar)) { continue; };
- bool need_double_slot = is_ia32() && is_wide(s.jt());
+
+ //WARN: both slots for i64 type have register assigned, but for dbl64 - only first slot is marked..
+ bool need_double_slot = is_ia32() && s.jt()==dbl64;
+
push(s.as_opnd(iplatf));
if (need_double_slot) {
Opnd hi_mem(iplatf, s.base(), s.disp() + STACK_SLOT_SIZE, s.index(), s.scale());
@@ -502,7 +505,7 @@
assert(op_lo.jt() != jvoid && is_big(op_lo.jt()));
assert(op_hi.jt() != jvoid && is_big(op_hi.jt()));
assert(op_hi.jt() == op_lo.jt());
- // not a big problem, just a self-check - this is expected usage sheme
+ // not a big problem, just a self-check - this is expected usage scheme
//assert(op_hi.kind() == op_lo.kind());
m_jframe->push(op_lo.jt());