Update GC intrinsics to take a pointer to the object as well as a pointer
to the field being updated.  Patch contributed by Tobias Nurmiranta


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15097 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/runtime/GC/GCInterface.h b/runtime/GC/GCInterface.h
index e2a9b68..e83abe0 100644
--- a/runtime/GC/GCInterface.h
+++ b/runtime/GC/GCInterface.h
@@ -38,11 +38,11 @@
 /* llvm_gc_read - This function should be implemented to include any read
  * barrier code that is needed by the garbage collector.
  */
-void *llvm_gc_read(void **P);
+void *llvm_gc_read(void *ObjPtr, void **FieldPtr);
 
 /* llvm_gc_write - This function should be implemented to include any write
  * barrier code that is needed by the garbage collector.
  */
-void llvm_gc_write(void *V, void **P);
+void llvm_gc_write(void *V, void *ObjPtr, void **FieldPtr);
 
 #endif
diff --git a/runtime/GC/SemiSpace/semispace.c b/runtime/GC/SemiSpace/semispace.c
index df60b62..cb5864b 100644
--- a/runtime/GC/SemiSpace/semispace.c
+++ b/runtime/GC/SemiSpace/semispace.c
@@ -89,8 +89,8 @@
 }
 
 /* We use no read/write barriers */
-void *llvm_gc_read(void **P) { return *P; }
-void llvm_gc_write(void *V, void **P) { *P = V; }
+void *llvm_gc_read(void *ObjPtr, void **FieldPtr) { return *FieldPtr; }
+void llvm_gc_write(void *V, void *ObjPtr, void **FieldPtr) { *FieldPtr = V; }
 
 
 /*===----------------------------------------------------------------------===**