Index: vm/jitrino/src/codegenerator/ia32/Ia32CodeEmitter.cpp =================================================================== --- vm/jitrino/src/codegenerator/ia32/Ia32CodeEmitter.cpp (revision 476055) +++ vm/jitrino/src/codegenerator/ia32/Ia32CodeEmitter.cpp (working copy) @@ -134,7 +134,7 @@ }; class CompiledMethodInfo { public: - CompiledMethodInfo(MemoryManager& mm): locationList(mm) {} + CompiledMethodInfo(MemoryManager& mm): locationList(mm), codeSize(0) {} uint32 getCodeSize() { return codeSize; } void* getCodeAddr() { return codeAddr; } @@ -143,6 +143,7 @@ StlList* > locationList; uint32 codeSize; void* codeAddr; + void addCodeSize(uint32 size) { codeSize+= size; } void setCodeSize(uint32 size) { codeSize = size; } void setCodeAddr(void* addr) { codeAddr = addr; } void addLocation(std::pair* entry) { @@ -348,7 +349,12 @@ uint8 * blockStartIp = ip; bb->setCodeOffset( blockStartIp-codeStreamStart ); for (Inst* inst = (Inst*)bb->getFirstInst(); inst!=NULL; inst = inst->getNextInst()) { - if( inst->hasKind(Inst::Kind_PseudoInst)) continue; + if( inst->hasKind(Inst::Kind_PseudoInst)) { + + uint8 * instStartIp = ip; + inst->setCodeOffset( instStartIp-blockStartIp ); + continue; + } #ifdef _EM64T_ if (inst->hasKind(Inst::Kind_ControlTransferInst) && @@ -688,12 +694,6 @@ methMarkerInst = (MethodMarkerPseudoInst*)inst; assert(((MethodMarkerPseudoInst*)inlineStack.back())->getMethodDesc() == methMarkerInst->getMethodDesc()); entryExitMap[methMarkerInst] = inlineStack.back(); - if (methInfo != NULL) { - Inst* entryInst = inlineStack.back(); - POINTER_SIZE_INT codeSize = (POINTER_SIZE_INT)entryInst->getCodeStartAddr() - - (POINTER_SIZE_INT)methMarkerInst->getCodeStartAddr(); - methInfo->setCodeSize((uint32)codeSize); - } inlineStack.pop_back(); methMarkerInst = NULL; } else { //handle usual instructions @@ -701,6 +701,7 @@ assert(methInfo == methodLocationMap[methMarkerInst]); uint64 instID = inst->getId(); uint64 bcOffset = bc2LIRMapHandler->getVectorEntry(instID); + methInfo->addCodeSize(inst->getCodeSize()); if (bcOffset != ILLEGAL_VALUE) { POINTER_SIZE_INT instStartAddr = (POINTER_SIZE_INT) inst->getCodeStartAddr();