[vmkit-commits] [vmkit] r197813 - use my new safepoint class
Gael Thomas
gael.thomas at lip6.fr
Fri Dec 20 06:04:34 PST 2013
Author: gthomas
Date: Fri Dec 20 08:04:34 2013
New Revision: 197813
URL: http://llvm.org/viewvc/llvm-project?rev=197813&view=rev
Log:
use my new safepoint class
Modified:
vmkit/branches/mcjit/include/vmkit/safepoint.h
vmkit/branches/mcjit/lib/j3/vm/j3method.cc
Modified: vmkit/branches/mcjit/include/vmkit/safepoint.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/vmkit/safepoint.h?rev=197813&r1=197812&r2=197813&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/vmkit/safepoint.h (original)
+++ vmkit/branches/mcjit/include/vmkit/safepoint.h Fri Dec 20 08:04:34 2013
@@ -15,6 +15,7 @@ namespace vmkit {
void* addr() { return _addr; }
void* metaData() { return _metaData; }
void updateMetaData(void* metaData) { _metaData = metaData; }
+ uint32_t sourceIndex() { return _sourceIndex; }
uint32_t nbLives() { return _nbLives; }
uint32_t liveAt(uint32_t i) { return _lives[i]; }
Modified: vmkit/branches/mcjit/lib/j3/vm/j3method.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3method.cc?rev=197813&r1=197812&r2=197813&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3method.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3method.cc Fri Dec 20 08:04:34 2013
@@ -1,3 +1,5 @@
+#include "vmkit/safepoint.h"
+
#include "j3/j3method.h"
#include "j3/j3class.h"
#include "j3/j3classloader.h"
@@ -42,14 +44,6 @@ uint32_t J3Method::index() {
return _index;
}
-struct safepoint_t {
- void* addr;
- void* metaData;
- uint32_t sourceIndex;
- uint32_t nbLives;
- uint32_t lives[2];
-}; /* aligned on a 8-byte boundary on a 64 bit machine, on a 4-byte boundary otherwise */
-
uint8_t* J3Method::fnPtr() {
if(!_fnPtr) {
//fprintf(stderr, "materializing: %ls::%ls%ls\n", cl()->name()->cStr(), name()->cStr(), sign()->cStr());
@@ -76,21 +70,17 @@ uint8_t* J3Method::fnPtr() {
llvm::SmallString<256> symName;
symName += module->getModuleIdentifier();
symName += "__frametable";
- struct safepoint_t* sf = (safepoint_t*)ee->getGlobalValueAddress(symName.c_str());
+ vmkit::Safepoint* sf = (vmkit::Safepoint*)ee->getGlobalValueAddress(symName.c_str());
if(!sf)
cl()->loader()->vm()->internalError(L"unable to find safepoints");
- while(sf->addr) {
- fprintf(stderr, " [%p] safepoint at %p for function %p::%d\n", sf, sf->addr, sf->metaData, sf->sourceIndex);
- for(uint32_t i=0; i<sf->nbLives; i++)
- fprintf(stderr, " live at %d\n", sf->lives[i]);
-
- uintptr_t next = (uintptr_t)sf + sizeof(struct safepoint_t) - 2*sizeof(uint32_t) + sf->nbLives*sizeof(uint32_t);
- //fprintf(stderr, "next at 0x%lx %ld %ld %ld\n", next,
- //sizeof(struct safepoint_t), sf->nbLives*sizeof(uint32_t), 2*sizeof(uint32_t));
- sf = (struct safepoint_t*)(((next - 1) & -sizeof(uintptr_t)) + sizeof(uintptr_t));
- //fprintf(stderr, "=> %p\n", sf);
+ while(sf->addr()) {
+ fprintf(stderr, " [%p] safepoint at %p for function %p::%d\n", sf, sf->addr(), sf->metaData(), sf->sourceIndex());
+ for(uint32_t i=0; i<sf->nbLives(); i++)
+ fprintf(stderr, " live at %d\n", sf->liveAt(i));
+
+ sf = sf->getNext();
}
#endif
}
More information about the vmkit-commits
mailing list