[rvm-research] [patch] Remove some outdated comments and Make emit_unresolved_getstatic more like emit_resolved_getstatic

Lingyu Zhu <[email protected]> Sun, 26 Nov 2017 19:02:28 +0800
Newsgroups gmane.comp.java.jikes.rvm.devel
Message-ID <CACFGcbatwt5mvmf5-QCJp5exPrOATRyV2EL=3P65oLYk8u2q9A@mail.gmail.com>
 STATEMENT OF ORIGIN FOR MULTIPLE CONTRIBUTIONS FROM A SINGLE CONTRIBUTOR

For any software I, Lingyu Zhu,  contribute to the system, I

(a) represent that either:

  (i) I will be the only author and owner of the contributed software,
      which will be neither derived nor copied from any other software, or

 (ii) that any exception to (i) will be software which was obtained under
the
      EPL (Eclipse Public License),

and

(b)  hereby agree to license this contributed software under the EPL

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot

_______________________________________________
Jikesrvm-researchers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
0001-Remove-outdated-comments-in-emit_unresolved_getstati.patch (application/octet-stream, 3.5 KB)
From 83fa4360dca126cbc7c36642c4ffb5f029249385 Mon Sep 17 00:00:00 2001
From: Lingyu Zhu <[email protected]>
Date: Sun, 26 Nov 2017 18:45:02 +0800
Subject: [PATCH] Remove outdated comments in emit_unresolved_getstatic() and
 emit_resolved_getstatic() in ia32 BaselinecompilerImpl. Make
 emit_unresolved_getstatic() handle loading 64-bit field for 32-bit VM like
 emit_resolved_getstatic().

---
 .../baseline/ia32/BaselineCompilerImpl.java        | 28 +++++++++++++---------
 1 file changed, 17 insertions(+), 11 deletions(-)

diff --git a/rvm/src/org/jikesrvm/compilers/baseline/ia32/BaselineCompilerImpl.java b/rvm/src/org/jikesrvm/compilers/baseline/ia32/BaselineCompilerImpl.java
index e285f42..36e7efa 100644
--- a/rvm/src/org/jikesrvm/compilers/baseline/ia32/BaselineCompilerImpl.java
+++ b/rvm/src/org/jikesrvm/compilers/baseline/ia32/BaselineCompilerImpl.java
@@ -2323,25 +2323,31 @@ public final class BaselineCompilerImpl extends BaselineCompiler {
       return;
     }
     if (fieldRef.getSize() <= BYTES_IN_INT) {
-      // get static field - [SP--] = [T0<<0+JTOC]
+      // get static field - [SP--] = [T0 + JTOC]
       if (VM.BuildFor32Addr) {
         asm.emitPUSH_RegDisp(T0, Magic.getTocPointer().toWord().toOffset());
       } else {
         asm.generateJTOCloadInt(T0, T0);
         asm.emitPUSH_Reg(T0);
       }
-    } else { // field is two words (double or long)
+    } else {
       if (VM.VerifyAssertions) VM._assert(fieldRef.getSize() == BYTES_IN_LONG);
       if (VM.BuildFor32Addr) {
         // JMM: field could be volatile so we need to guarantee atomic access
-        if (SSE2_BASE) {
-          asm.emitMOVQ_Reg_RegDisp(XMM0, T0, Magic.getTocPointer().toWord().toOffset());
-          adjustStack(-2 * WORDSIZE, false);
-          asm.emitMOVQ_RegInd_Reg(SP, XMM0);
+        RVMField field = fieldRef.peekResolvedField();
+        if (field.isVolatile()) {
+          if (SSE2_BASE) {
+            asm.emitMOVQ_Reg_RegDisp(XMM0, T0, Magic.getTocPointer().toWord().toOffset());
+            adjustStack(-2 * WORDSIZE, false);
+            asm.emitMOVQ_RegInd_Reg(SP, XMM0);
+          } else {
+            asm.emitFLD_Reg_RegDisp_Quad(FP0, T0, Magic.getTocPointer().toWord().toOffset());
+            adjustStack(-2 * WORDSIZE, false);
+            asm.emitFSTP_RegInd_Reg_Quad(SP, FP0);
+          }
         } else {
-          asm.emitFLD_Reg_RegDisp_Quad(FP0, T0, Magic.getTocPointer().toWord().toOffset());
-          adjustStack(-2 * WORDSIZE, false);
-          asm.emitFSTP_RegInd_Reg_Quad(SP, FP0);
+          asm.emitPUSH_RegDisp(T0, Magic.getTocPointer().plus(WORDSIZE).toWord().toOffset());
+          asm.emitPUSH_RegDisp(T0, Magic.getTocPointer().toWord().toOffset());
         }
       } else {
         if (fieldRef.getNumberOfStackSlots() != 1) {
@@ -2360,14 +2366,14 @@ public final class BaselineCompilerImpl extends BaselineCompiler {
       Barriers.compileGetstaticBarrierImm(asm, fieldOffset, fieldRef.getId());
       return;
     }
-    if (fieldRef.getSize() <= BYTES_IN_INT) { // field is one word
+    if (fieldRef.getSize() <= BYTES_IN_INT) {
       if (VM.BuildFor32Addr) {
         asm.emitPUSH_Abs(Magic.getTocPointer().plus(fieldOffset));
       } else {
         asm.generateJTOCloadInt(T0, fieldOffset);
         asm.emitPUSH_Reg(T0);
       }
-    } else { // field is two words (double or long)
+    } else {
       if (VM.VerifyAssertions) VM._assert(fieldRef.getSize() == BYTES_IN_LONG);
       if (VM.BuildFor32Addr) {
         // JMM: we need to guarantee atomic access for volatile fields
-- 
2.7.4