Mercurial > hg > truffle
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;