[vmkit-commits] [vmkit] r138886 - in /vmkit/trunk: include/mvm/MethodInfo.h include/mvm/System.h lib/Mvm/Runtime/MethodInfo.cpp lib/Mvm/StaticGCPrinter/VmkitGCPrinter.cpp mmtk/mmtk-j3/ObjectModel.cpp tools/precompiler/trainer/Makefile
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Wed Aug 31 13:12:36 PDT 2011
Author: geoffray
Date: Wed Aug 31 15:12:36 2011
New Revision: 138886
URL: http://llvm.org/viewvc/llvm-project?rev=138886&view=rev
Log:
Additional fixes to get linux/x64 working.
Added:
vmkit/trunk/include/mvm/System.h
Modified:
vmkit/trunk/include/mvm/MethodInfo.h
vmkit/trunk/lib/Mvm/Runtime/MethodInfo.cpp
vmkit/trunk/lib/Mvm/StaticGCPrinter/VmkitGCPrinter.cpp
vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp
vmkit/trunk/tools/precompiler/trainer/Makefile
Modified: vmkit/trunk/include/mvm/MethodInfo.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/mvm/MethodInfo.h?rev=138886&r1=138885&r2=138886&view=diff
==============================================================================
--- vmkit/trunk/include/mvm/MethodInfo.h (original)
+++ vmkit/trunk/include/mvm/MethodInfo.h Wed Aug 31 15:12:36 2011
@@ -11,6 +11,7 @@
#define MVM_METHODINFO_H
#include "mvm/Allocator.h"
+#include "mvm/System.h"
#include "mvm/GC/GC.h"
namespace mvm {
@@ -33,9 +34,7 @@
static uint32_t FrameInfoSize(uint32_t NumOffsets) {
uint32_t FrameInfoSize = sizeof(FrameInfo) + (NumOffsets - 1) * sizeof(int16_t);
- if (FrameInfoSize & 2) {
- FrameInfoSize += sizeof(int16_t);
- }
+ FrameInfoSize = System::WordAlignUp(FrameInfoSize);
return FrameInfoSize;
}
};
@@ -46,13 +45,13 @@
uint32_t NumDescriptors;
FrameInfo* frames() const {
return reinterpret_cast<FrameInfo*>(
- reinterpret_cast<uintptr_t>(this) + sizeof(Frames));
+ reinterpret_cast<uintptr_t>(this) + kWordSize);
}
void* operator new(size_t sz, mvm::BumpPtrAllocator& allocator, uint32_t NumDescriptors, uint32_t NumOffsets) {
Frames* res = reinterpret_cast<Frames*>(
- allocator.Allocate(sizeof(Frames) + NumDescriptors * MethodInfoHelper::FrameInfoSize(NumOffsets), "Frames"));
- assert((reinterpret_cast<uintptr_t>(res) & 2) == 0);
+ allocator.Allocate(kWordSize + NumDescriptors * MethodInfoHelper::FrameInfoSize(NumOffsets), "Frames"));
+ assert(System::IsWordAligned(reinterpret_cast<uintptr_t>(res)));
return res;
}
};
Added: vmkit/trunk/include/mvm/System.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/mvm/System.h?rev=138886&view=auto
==============================================================================
--- vmkit/trunk/include/mvm/System.h (added)
+++ vmkit/trunk/include/mvm/System.h Wed Aug 31 15:12:36 2011
@@ -0,0 +1,36 @@
+//===-------------------- System.h - System utils -------------------------===//
+//
+// The VMKit project
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef MVM_SYSTEM_H
+#define MVM_SYSTEM_H
+
+#include <stdint.h>
+
+namespace mvm {
+
+const int kWordSize = sizeof(intptr_t);
+const int kWordSizeLog2 = kWordSize == 4 ? 2 : 3;
+
+class System {
+public:
+ static bool IsWordAligned(intptr_t ptr) {
+ return (ptr & (kWordSize - 1)) == 0;
+ }
+
+ static intptr_t WordAlignUp(intptr_t ptr) {
+ if (!IsWorldAligned(ptr)) {
+ return (ptr & ~(kWordSize - 1)) + kWordSize;
+ }
+ return ptr;
+ }
+};
+
+}
+
+#endif
Modified: vmkit/trunk/lib/Mvm/Runtime/MethodInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Runtime/MethodInfo.cpp?rev=138886&r1=138885&r2=138886&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/Runtime/MethodInfo.cpp (original)
+++ vmkit/trunk/lib/Mvm/Runtime/MethodInfo.cpp Wed Aug 31 15:12:36 2011
@@ -55,6 +55,7 @@
FrameInfo* frame = NULL;
while (iterator.hasNext()) {
frame = iterator.next();
+ assert(frame->ReturnAddress);
addFrameInfoNoLock(frame->ReturnAddress, frame);
}
if (frame != NULL) {
Modified: vmkit/trunk/lib/Mvm/StaticGCPrinter/VmkitGCPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/StaticGCPrinter/VmkitGCPrinter.cpp?rev=138886&r1=138885&r2=138886&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/StaticGCPrinter/VmkitGCPrinter.cpp (original)
+++ vmkit/trunk/lib/Mvm/StaticGCPrinter/VmkitGCPrinter.cpp Wed Aug 31 15:12:36 2011
@@ -178,6 +178,7 @@
NumMethodFrames++;
}
AP.EmitInt32(NumMethodFrames);
+ AP.EmitAlignment(IntPtrSize == 4 ? 2 : 3);
for (iterator I = begin(), IE = end(); I != IE; ++I) {
GCFunctionInfo &FI = **I;
Modified: vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp?rev=138886&r1=138885&r2=138886&view=diff
==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp Wed Aug 31 15:12:36 2011
@@ -7,6 +7,7 @@
//
//===----------------------------------------------------------------------===//
+#include "mvm/System.h"
#include "mvm/VirtualMachine.h"
#include "MMTkObject.h"
#include "debug.h"
@@ -40,17 +41,17 @@
extern "C" uint8_t Java_org_j3_mmtk_ObjectModel_readAvailableByte__Lorg_vmmagic_unboxed_ObjectReference_2 (MMTkObject* OM, gc* obj) {
#if defined(__PPC__)
- return ((uint8_t*)obj)[7];
+ return ((uint8_t*)obj)[2 * mvm::kWordSize - 1];
#else
- return ((uint8_t*)obj)[4];
+ return ((uint8_t*)obj)[mvm::kWordSize];
#endif
}
extern "C" void Java_org_j3_mmtk_ObjectModel_writeAvailableByte__Lorg_vmmagic_unboxed_ObjectReference_2B (MMTkObject* OM, gc* obj, uint8_t val) {
#if defined(__PPC__)
- ((uint8_t*)obj)[7] = val;
+ ((uint8_t*)obj)[2 * mvm::kWordSize - 1] = val;
#else
- ((uint8_t*)obj)[4] = val;
+ ((uint8_t*)obj)[mvm::kWordSize] = val;
#endif
}
Modified: vmkit/trunk/tools/precompiler/trainer/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/precompiler/trainer/Makefile?rev=138886&r1=138885&r2=138886&view=diff
==============================================================================
--- vmkit/trunk/tools/precompiler/trainer/Makefile (original)
+++ vmkit/trunk/tools/precompiler/trainer/Makefile Wed Aug 31 15:12:36 2011
@@ -22,7 +22,7 @@
HelloWorld.class: HelloWorld.java
$(Echo) "Compiling trainer"
- $(Verb) javac $<
+ $(Verb) javac $< -d .
generated.bc: $(PRECOMPILER) HelloWorld.class
$(Echo) "Pre-compiling bootstrap code"
More information about the vmkit-commits
mailing list