changeset 8497:96ccefe5ab4e

-Integrate Lucas' patch with byte read
author Christos Kotselidis <christos.kotselidis@oracle.com>
date Wed, 27 Feb 2013 18:41:37 +0100
parents b089cde44076
children c158d128fae9
files graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/WriteBarrierSnippets.java graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java src/cpu/x86/vm/graalRuntime_x86.cpp
diffstat 3 files changed, 11 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/WriteBarrierSnippets.java	Wed Feb 27 17:25:28 2013 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/WriteBarrierSnippets.java	Wed Feb 27 18:41:37 2013 +0100
@@ -131,11 +131,11 @@
 
         if (xorResult.notEqual(Word.zero())) {
             if (writtenValue.notEqual(Word.zero())) {
-                Word cardValue = base.readWord(displacement);
-                char cardByte = base.readChar(displacement);
-                trace(WriteBarrierSnippets.TRACE, "     G1 POST cardValue: 0x%016lx\n", cardValue);
+                // Word cardValue = base.readWord(displacement);
+                short cardByte = base.readShort(displacement);
+                trace(WriteBarrierSnippets.TRACE, "     G1 POST cardValue: 0x%016lx\n", Word.signed((int) cardByte));
 
-                if (cardByte != (char) 0) {
+                if (cardByte != 0) {
                     base.writeWord(displacement, Word.zero()); // smash zero into card
                     if (indexValue.notEqual(Word.zero())) {
                         Word nextIndex = indexValue.subtract(HotSpotSnippetUtils.wordSize());
--- a/graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java	Wed Feb 27 17:25:28 2013 +0100
+++ b/graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java	Wed Feb 27 18:41:37 2013 +0100
@@ -265,6 +265,8 @@
     }
 
     private static ValueNode readOp(StructuredGraph graph, ValueNode base, ValueNode offset, Invoke invoke, Object locationIdentity) {
+        // IndexedLocationNode location = IndexedLocationNode.create(locationIdentity,
+// invoke.methodCallTarget().returnKind(), 0, offset, graph, false);
         Kind resultKind = invoke.node().kind() == Kind.Int ? invoke.methodCallTarget().returnKind() : invoke.node().kind();
         IndexedLocationNode location = IndexedLocationNode.create(locationIdentity, resultKind, 0, offset, graph, false);
         ReadNode read = graph.add(new ReadNode(base, location, invoke.node().stamp()));
--- a/src/cpu/x86/vm/graalRuntime_x86.cpp	Wed Feb 27 17:25:28 2013 +0100
+++ b/src/cpu/x86/vm/graalRuntime_x86.cpp	Wed Feb 27 18:41:37 2013 +0100
@@ -1195,17 +1195,17 @@
    case graal_wb_pre_call_id: {
       Register obj = j_rarg0;
       {
-        GraalStubFrame f(sasm, "graal_wb_pre_call", dont_gc_arguments);
-        OopMap* map = save_live_registers(sasm, 2, save_fpu_registers);
+       // GraalStubFrame f(sasm, "graal_wb_pre_call", dont_gc_arguments);
+        //OopMap* map = save_live_registers(sasm, 2, save_fpu_registers);
 
         // note: really a leaf routine but must setup last java sp
         //       => use call_RT for now (speed can be improved by
         //       doing last java sp setup manually)
         int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, graal_wb_pre_call), obj);
 
-        oop_maps = new OopMapSet();
-        oop_maps->add_gc_map(call_offset, map);
-        restore_live_registers(sasm, save_fpu_registers);
+        //oop_maps = new OopMapSet();
+        //oop_maps->add_gc_map(call_offset, map);
+        //restore_live_registers(sasm, save_fpu_registers);
       }
       __ ret(0);
       break;