[vmkit-commits] [vmkit] r180299 - Add memcpy for Address Objects.
Peter Senna Tschudin
peter.senna at gmail.com
Thu Apr 25 09:52:10 PDT 2013
Author: peter.senna
Date: Thu Apr 25 11:50:14 2013
New Revision: 180299
URL: http://llvm.org/viewvc/llvm-project?rev=180299&view=rev
Log:
Add memcpy for Address Objects.
(cherry picked from commit 5684342534953cb65bc5bb03df0d3d7ee2c82497)
Modified:
vmkit/trunk/mmtk/java/src/org/j3/bindings/Bindings.java
vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp
Modified: vmkit/trunk/mmtk/java/src/org/j3/bindings/Bindings.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/java/src/org/j3/bindings/Bindings.java?rev=180299&r1=180298&r2=180299&view=diff
==============================================================================
--- vmkit/trunk/mmtk/java/src/org/j3/bindings/Bindings.java (original)
+++ vmkit/trunk/mmtk/java/src/org/j3/bindings/Bindings.java Thu Apr 25 11:50:14 2013
@@ -118,16 +118,17 @@ public final class Bindings {
}
@Inline
- private static Address copy(ObjectReference from,
+ private static ObjectReference copy(ObjectReference from,
ObjectReference virtualTable,
int size,
int allocator) {
+ int wholeSize = size + hiddenHeaderSize();
Selected.Collector plan = Selected.Collector.get();
- allocator = plan.copyCheckAllocator(from, size, 0, allocator);
- Address to = plan.allocCopy(from, size, 0, 0, allocator);
- memcpy(to.toObjectReference(), from, size);
+ allocator = plan.copyCheckAllocator(from, wholeSize, 0, allocator);
+ Address to = plan.allocCopy(from, wholeSize, 0, 0, allocator);
+ memcpy(to, from.toAddress(), wholeSize);
plan.postCopy(to.toObjectReference(), virtualTable, size, allocator);
- return to;
+ return to.toObjectReference();
}
@Inline
@@ -138,8 +139,13 @@ public final class Bindings {
@Inline
private static native void memcpy(
+ Address to, Address from, int size);
+
+ @Inline
+ private static native void memcpy(
ObjectReference to, ObjectReference from, int size);
+
@Inline
private static void arrayWriteBarrier(ObjectReference ref, Address slot, ObjectReference value) {
if (Selected.Constraints.get().needsObjectReferenceWriteBarrier()) {
Modified: vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp?rev=180299&r1=180298&r2=180299&view=diff
==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp Thu Apr 25 11:50:14 2013
@@ -85,6 +85,15 @@ extern "C" void Java_org_j3_bindings_Bin
memcpy(res, src, size);
}
+extern "C" void Java_org_j3_bindings_Bindings_memcpy__Lorg_vmmagic_unboxed_Address_2Lorg_vmmagic_unboxed_Address_2I(
+ void* res, void* src, int size) ALWAYS_INLINE;
+
+extern "C" void Java_org_j3_bindings_Bindings_memcpy__Lorg_vmmagic_unboxed_Address_2Lorg_vmmagic_unboxed_Address_2I(
+ void* res, void* src, int size) {
+ memcpy(res, src, size);
+}
+
+
extern "C" word_t JnJVM_org_j3_bindings_Bindings_copy__Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_ObjectReference_2II(
gc* obj, VirtualTable* VT, int size, int allocator);
More information about the vmkit-commits
mailing list