Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 102226 Details for
Bug 194081
after re-attach, no more data is collected for methods already entered
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
patch
patch_194081.txt (text/plain), 14.39 KB, created by
Alexander N. Alexeev
on 2008-05-27 15:43:50 EDT
(
hide
)
Description:
patch
Filename:
MIME Type:
Creator:
Alexander N. Alexeev
Created:
2008-05-27 15:43:50 EDT
Size:
14.39 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.tptp.platform.jvmti.runtime >Index: src-native/src/BaseProf/ProfEnv.cpp >=================================================================== >RCS file: /cvsroot/tptp/platform/org.eclipse.tptp.platform.jvmti.runtime/src-native/src/BaseProf/ProfEnv.cpp,v >retrieving revision 1.29 >diff -u -r1.29 ProfEnv.cpp >--- src-native/src/BaseProf/ProfEnv.cpp 26 May 2008 21:11:19 -0000 1.29 >+++ src-native/src/BaseProf/ProfEnv.cpp 27 May 2008 19:36:19 -0000 >@@ -442,7 +442,7 @@ > > // Aggregated > void >-CProfEnv::AddNewStackEntry(TId threadId, TId methodId, U64 uiCpuNanos) >+CProfEnv::AddNewStackEntry(TId threadId, TId methodId, U64 enterTime, U64 uiCpuNanos) > { > CStackHead* stack = (CStackHead*)m_pAggStorage->GetValue(); > if (stack == 0) { >@@ -454,14 +454,15 @@ > lockAggObject->Leave(); > } > stack->lockThreadObject->Enter(); >- stack->AddStackEntry(methodId, uiCpuNanos); >+ stack->AddStackEntry(methodId, enterTime, uiCpuNanos); > stack->lockThreadObject->Leave(); > } > > // Aggregated >-void >-CProfEnv::FinalizeStackEntry(TId threadId, U64 uiCpuNanos) >+int >+CProfEnv::FinalizeStackEntry(TId threadId, TId methodId, U64 exitTime, U64 uiCpuNanos) > { >+ int result; > CStackHead* stack = (CStackHead*)m_pAggStorage->GetValue(); > if (stack == 0) { > stack = new CStackHead(ec_env, threadId); >@@ -472,8 +473,12 @@ > lockAggObject->Leave(); > } > stack->lockThreadObject->Enter(); >- stack->FinalizeStackEntry(uiCpuNanos); >+ if ((result = stack->FinalizeStackEntry(exitTime, uiCpuNanos)) == -1) { >+ stack->SetNewRoot(methodId, /*can be attachTime*/0, /*exitTime*/0, /*attachCPUTime*/0, 0/*uiCpuNanos*/); >+ // fake stack entry is added >+ } > stack->lockThreadObject->Leave(); >+ return result; > } > > // Aggregated >@@ -490,7 +495,7 @@ > void CProfEnv::DeleteAggCallGraphData() { > lockAggObject->Enter(); > if (m_pStackSet != 0) { >- m_pStackSet->Clear(); >+ m_pStackSet->ClearAll(); > } > lockAggObject->Leave(); > } >Index: src-native/src/BaseProf/Tickets.h >=================================================================== >RCS file: /cvsroot/tptp/platform/org.eclipse.tptp.platform.jvmti.runtime/src-native/src/BaseProf/Tickets.h,v >retrieving revision 1.9 >diff -u -r1.9 Tickets.h >--- src-native/src/BaseProf/Tickets.h 28 Feb 2008 03:55:29 -0000 1.9 >+++ src-native/src/BaseProf/Tickets.h 27 May 2008 19:36:19 -0000 >@@ -127,7 +127,7 @@ > > class CStackEntry { > public: >- CStackEntry(JPIAgent::EC_Env* ec_env, MPI::TId methodId, CStackEntry* caller, U64 uiCpuNanos) { >+ CStackEntry(JPIAgent::EC_Env* ec_env, MPI::TId methodId, CStackEntry* caller, U64 enterTime, U64 uiCpuNanos) { > m_ec_env = ec_env; > m_MethodId = methodId; > m_pCaller = caller; >@@ -140,7 +140,7 @@ > m_maxTime = 0; > m_count = 0; > >- m_EnterTime = m_ec_env->GetTime(); >+ m_EnterTime = enterTime; > m_InvokeTime = 0; > m_EnterCpuTime = uiCpuNanos; > m_InvokeCpuTime = 0; >@@ -156,17 +156,17 @@ > } > } > >- CStackEntry* AddStackEntry(MPI::TId methodId, U64 uiCpuNanos) { >+ CStackEntry* AddStackEntry(MPI::TId methodId, U64 enterTime, U64 uiCpuNanos) { > if (m_pCallSet == 0) { >- m_pCallSet = new CStackEntry(m_ec_env, methodId, this, uiCpuNanos); >+ m_pCallSet = new CStackEntry(m_ec_env, methodId, this, enterTime, uiCpuNanos); > return m_pCallSet; > } >- return m_pCallSet->AddSetEntry(methodId, uiCpuNanos); >+ return m_pCallSet->AddSetEntry(methodId, enterTime, uiCpuNanos); > } > >- CStackEntry* FinalizeStackEntry(U64 uiCpuNanos) { >+ CStackEntry* FinalizeStackEntry(U64 exitTime, U64 uiCpuNanos) { > m_count++; >- U64 cumulativeTime = m_ec_env->GetTime() - m_EnterTime; >+ U64 cumulativeTime = exitTime - m_EnterTime; > U64 baseTime = cumulativeTime - m_InvokeTime; > m_baseTime += baseTime; > U64 cumulativeCpuTime = uiCpuNanos - m_EnterCpuTime; >@@ -182,13 +182,12 @@ > m_minTime = baseTime; > } > isActive = false; >- // TODO > return m_pCaller; > } > >- CStackEntry* AddSetEntry(MPI::TId methodId, U64 uiCpuNanos) { >+ CStackEntry* AddSetEntry(MPI::TId methodId, U64 enterTime, U64 uiCpuNanos) { > if (m_MethodId == methodId) { >- m_EnterTime = m_ec_env->GetTime(); >+ m_EnterTime = enterTime; > m_InvokeTime = 0; > m_EnterCpuTime = uiCpuNanos; > m_InvokeCpuTime = 0; >@@ -196,9 +195,9 @@ > return this; > } > if (m_pNext != 0) { >- return m_pNext->AddSetEntry(methodId, uiCpuNanos); >+ return m_pNext->AddSetEntry(methodId, enterTime, uiCpuNanos); > } >- m_pNext = new CStackEntry(m_ec_env, methodId, m_pCaller, uiCpuNanos); >+ m_pNext = new CStackEntry(m_ec_env, methodId, m_pCaller, enterTime, uiCpuNanos); > return m_pNext; > } > >@@ -208,7 +207,7 @@ > } > > // Partial memory cleaning in cg, counters reset >- void CleanMemory() { >+ void ClearInactive() { > if (!isActive) { > m_baseTime = 0; > m_baseCPUTime = 0; >@@ -216,16 +215,32 @@ > m_maxTime = 0; > m_count = 0; > if (m_pCallSet != 0) { >+ m_pCallSet->ClearInactive(); > delete m_pCallSet; > m_pCallSet = 0; > } > } else { > if (m_pCallSet != 0) { >- m_pCallSet->CleanMemory(); >+ m_pCallSet->ClearInactive(); > } > } > if (m_pNext != 0) { >- m_pNext->CleanMemory(); >+ m_pNext->ClearInactive(); >+ delete m_pNext; >+ m_pNext = 0; >+ } >+ } >+ >+ void ClearAll() { >+ if (m_pCallSet != 0) { >+ m_pCallSet->ClearAll(); >+ delete m_pCallSet; >+ m_pCallSet = 0; >+ } >+ if (m_pNext != 0) { >+ m_pNext->ClearAll(); >+ delete m_pNext; >+ m_pNext = 0; > } > } > >@@ -240,6 +255,10 @@ > } > } > >+ void SetCallSet(CStackEntry* callee) { >+ m_pCallSet = callee; >+ } >+ > private: > JPIAgent::EC_Env* m_ec_env; > CStackEntry* m_pCaller; >@@ -285,23 +304,25 @@ > m_pNext = next; > } > >- void AddStackEntry(MPI::TId methodId, U64 uiCpuNanos) { >+ void AddStackEntry(MPI::TId methodId, U64 enterTime, U64 uiCpuNanos) { > if (m_pFirstStackEntry == 0) { >- m_pFirstStackEntry = m_pCurrentStackEntry = new CStackEntry(m_ec_env, methodId, 0, uiCpuNanos); >+ m_pFirstStackEntry = m_pCurrentStackEntry = new CStackEntry(m_ec_env, methodId, 0, enterTime, uiCpuNanos); > return; > } > if (m_pCurrentStackEntry == 0) { >- m_pCurrentStackEntry = m_pFirstStackEntry->AddSetEntry(methodId, uiCpuNanos); >+ m_pCurrentStackEntry = m_pFirstStackEntry->AddSetEntry(methodId, enterTime, uiCpuNanos); > return; > } >- m_pCurrentStackEntry = m_pCurrentStackEntry->AddStackEntry(methodId, uiCpuNanos); >+ m_pCurrentStackEntry = m_pCurrentStackEntry->AddStackEntry(methodId, enterTime, uiCpuNanos); > } > >- void FinalizeStackEntry(U64 uiCpuNanos) { >-// LOG_ASSERT(m_pCurrentStackEntry != 0); TODO check it >+ int FinalizeStackEntry(U64 enterTime, U64 uiCpuNanos) { > if (m_pCurrentStackEntry != 0) { >- m_pCurrentStackEntry = m_pCurrentStackEntry->FinalizeStackEntry(uiCpuNanos); >+ m_pCurrentStackEntry = m_pCurrentStackEntry->FinalizeStackEntry(enterTime, uiCpuNanos); >+ return 0; > } >+ //such situation have to be fixed by adding new parent stack entry >+ return -1; > } > > void PrintAggCallGraph() { >@@ -312,18 +333,38 @@ > if (m_pFirstStackEntry != 0) { > m_pFirstStackEntry->PrintStack(m_ThreadId); > if (m_ec_env->isStackMemoryFree()) { >- m_pFirstStackEntry->CleanMemory(); >+ m_pFirstStackEntry->ClearInactive(); > } > } > lockThreadObject->Leave(); > } > >- void Clear() { >+ void ClearInactive() { > if (m_pFirstStackEntry) { >- m_pFirstStackEntry->CleanMemory(); >+ m_pFirstStackEntry->ClearInactive(); > } > } > >+ void ClearAll() { >+ if (m_pFirstStackEntry) { >+ m_pFirstStackEntry->ClearAll(); >+ m_pFirstStackEntry = 0; >+ } >+ } >+ >+ >+ void SetNewRoot(MPI::TId methodId, U64 enterTime, U64 exitTime, U64 enterCpuNanos, U64 uiCpuNanos) { >+ //ASSERT (m_pCurrentStackEntry == NULL) >+ CStackEntry* newFirstStackEntry = new CStackEntry(m_ec_env, methodId, 0, enterTime, enterCpuNanos); >+ newFirstStackEntry->FinalizeStackEntry(exitTime, uiCpuNanos); >+ newFirstStackEntry->SetCallSet(m_pFirstStackEntry); >+ m_pFirstStackEntry = newFirstStackEntry; >+ m_pCurrentStackEntry = 0; >+ } >+ >+ >+ >+ > OSA::IThreadSync* lockThreadObject; > > private: >Index: src-native/src/BaseProf/ProfEnv.h >=================================================================== >RCS file: /cvsroot/tptp/platform/org.eclipse.tptp.platform.jvmti.runtime/src-native/src/BaseProf/ProfEnv.h,v >retrieving revision 1.22 >diff -u -r1.22 ProfEnv.h >--- src-native/src/BaseProf/ProfEnv.h 13 May 2008 05:28:29 -0000 1.22 >+++ src-native/src/BaseProf/ProfEnv.h 27 May 2008 19:36:19 -0000 >@@ -94,9 +94,9 @@ > // > U64 GetTimeOut(MPI::TId threadId); > // Aggregated >- void AddNewStackEntry(MPI::TId threadId, MPI::TId methodId, U64 uiCpuNanos); >+ void AddNewStackEntry(MPI::TId threadId, MPI::TId methodId, U64 enterTime, U64 uiCpuNanos); > // Aggregated >- void FinalizeStackEntry(MPI::TId threadId, U64 uiCpuNanos); >+ int FinalizeStackEntry(MPI::TId threadId, MPI::TId methodId, U64 exitTime, U64 uiCpuNanos); > // Aggregated > void PrintAggCallGraph(); > // Aggregated >Index: src-native/src/ACCollector/ACCollector.cpp >=================================================================== >RCS file: /cvsroot/tptp/platform/org.eclipse.tptp.platform.jvmti.runtime/src-native/src/ACCollector/ACCollector.cpp,v >retrieving revision 1.21 >diff -u -r1.21 ACCollector.cpp >--- src-native/src/ACCollector/ACCollector.cpp 24 Mar 2008 15:38:06 -0000 1.21 >+++ src-native/src/ACCollector/ACCollector.cpp 27 May 2008 19:36:17 -0000 >@@ -166,8 +166,8 @@ > if (!isAgentInitialized(cmdBlock->getContextID())) { > return 0; > } >- m_ACC_env->Detach(); > m_ACC_env->StopTracing(); >+ m_ACC_env->Detach(); > m_isTracing = false; > return BaseCollectorImpl::stop(cmdBlock); > } >Index: src-native/src/CGProf/MethodEnterEvent.cpp >=================================================================== >RCS file: /cvsroot/tptp/platform/org.eclipse.tptp.platform.jvmti.runtime/src-native/src/CGProf/MethodEnterEvent.cpp,v >retrieving revision 1.11 >diff -u -r1.11 MethodEnterEvent.cpp >--- src-native/src/CGProf/MethodEnterEvent.cpp 24 Aug 2007 17:29:24 -0000 1.11 >+++ src-native/src/CGProf/MethodEnterEvent.cpp 27 May 2008 19:36:19 -0000 >@@ -63,7 +63,7 @@ > m_pProfEnv->ec_env->PrintMethodEntryElement(data.threadId, data.methodId, classInfo.classId, ticket, stackDepth); > } > } else { >- m_pProfEnv->AddNewStackEntry(data.threadId, data.methodId, data.uiCpuNanos); >+ m_pProfEnv->AddNewStackEntry(data.threadId, data.methodId, m_pProfEnv->ec_env->GetTime(), data.uiCpuNanos); > } > } > >Index: src-native/src/CGProf/MethodLeaveEvent.cpp >=================================================================== >RCS file: /cvsroot/tptp/platform/org.eclipse.tptp.platform.jvmti.runtime/src-native/src/CGProf/MethodLeaveEvent.cpp,v >retrieving revision 1.13 >diff -u -r1.13 MethodLeaveEvent.cpp >--- src-native/src/CGProf/MethodLeaveEvent.cpp 28 Feb 2008 02:20:33 -0000 1.13 >+++ src-native/src/CGProf/MethodLeaveEvent.cpp 27 May 2008 19:36:19 -0000 >@@ -63,7 +63,10 @@ > m_pProfEnv->ec_env->PrintMethodExitElement(data.threadId, data.methodId, classInfo.classId, ticket, cpuTime); > } > } else { >- m_pProfEnv->FinalizeStackEntry(data.threadId, data.uiCpuNanos); >+ if (-1 == m_pProfEnv->FinalizeStackEntry(data.threadId, data.methodId, m_pProfEnv->ec_env->GetTime(), data.uiCpuNanos)) { >+ // Finalize has added fake stack entry without real enter to the method, hence methodID should be checked. >+ m_pProfEnv->CheckMethodId(data.methodId); >+ } > } > } > >Index: src-native/src/JPIAgent/PrintXML.cpp >=================================================================== >RCS file: /cvsroot/tptp/platform/org.eclipse.tptp.platform.jvmti.runtime/src-native/src/JPIAgent/PrintXML.cpp,v >retrieving revision 1.32 >diff -u -r1.32 PrintXML.cpp >--- src-native/src/JPIAgent/PrintXML.cpp 13 May 2008 05:28:30 -0000 1.32 >+++ src-native/src/JPIAgent/PrintXML.cpp 27 May 2008 19:36:20 -0000 >@@ -260,7 +260,7 @@ > CElementBuffer elb; > AppendEmptyEventHeader(&elb, threadId, AG_METHOD_ENTRY_ELEMENT, STRLEN_AG_METHOD_ENTRY_ELEMENT); > AppendInteger64Attribute(&elb, STATIC_METHOD_IDREF_ATTRIBUTE, STRLEN_STATIC_METHOD_IDREF_ATTRIBUTE, methodId); >- if (numCalls >> 0) { >+ if (numCalls > 0) { > AppendLabeledTimestamp(&elb, BASETIME1_ATTRIBUTE, STRLEN_BASETIME1_ATTRIBUTE, baseTime, TRUE); > AppendLabeledTimestamp(&elb, MINTIME_ATTRIBUTE, STRLEN_MINTIME_ATTRIBUTE, minTime, TRUE); > AppendLabeledTimestamp(&elb, MAXTIME_ATTRIBUTE, STRLEN_MAXTIME_ATTRIBUTE, maxTime, TRUE);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 194081
: 102226 |
133879
|
133881
|
135756
|
136422
|
139720
|
140395
|
140396
|
140397