From 866d798b98c9e613c5dca6a22b5c292843d1ab48 Mon Sep 17 00:00:00 2001 From: Antonio Linares Date: Fri, 29 Jun 2001 14:56:12 +0000 Subject: [PATCH] Profiler support added --- harbour/source/vm/hvm.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/harbour/source/vm/hvm.c b/harbour/source/vm/hvm.c index 19ec8f45c8..1b32c64208 100644 --- a/harbour/source/vm/hvm.c +++ b/harbour/source/vm/hvm.c @@ -75,6 +75,7 @@ #endif #include +#include #include "hbapi.h" #include "hbstack.h" @@ -219,6 +220,9 @@ extern POBJSYMBOLS hb_firstsymbol, hb_lastsymbol; #endif #endif +extern void * hb_mthRequested( void ); /* profiler from classes.c */ +extern void hb_mthAddTime( void *, ULONG ); /* profiler from classes.c */ + /* virtual machine state */ HB_SYMB hb_symEval = { "__EVAL", HB_FS_PUBLIC, hb_vmDoBlock, NULL }; /* symbol to evaluate codeblocks */ @@ -2824,6 +2828,8 @@ void hb_vmDo( USHORT uiParams ) PHB_ITEM pSelf; PHB_FUNC pFunc; BOOL bDebugPrevState; + ULONG ulClock = ( ULONG ) clock(); + void * pMethod; HB_TRACE(HB_TR_DEBUG, ("hb_vmDo(%hu)", uiParams)); @@ -2855,7 +2861,11 @@ void hb_vmDo( USHORT uiParams ) } if( pFunc ) + { + pMethod = hb_mthRequested(); pFunc(); + hb_mthAddTime( pMethod, clock() - ulClock ); + } else if( pSym->szName[ 0 ] == '_' ) { PHB_ITEM pArgsArray = hb_arrayFromStack( uiParams ); @@ -2901,6 +2911,8 @@ void hb_vmSend( USHORT uiParams ) PHB_ITEM pSelf; PHB_FUNC pFunc; BOOL bDebugPrevState; + ULONG ulClock = ( ULONG ) clock(); + void * pMethod; HB_TRACE(HB_TR_DEBUG, ("hb_vmSend(%hu)", uiParams)); @@ -2928,7 +2940,9 @@ void hb_vmSend( USHORT uiParams ) if( pFunc ) { + pMethod = hb_mthRequested(); pFunc(); + hb_mthAddTime( pMethod, clock() - ulClock ); } else if( pSym->szName[ 0 ] == '_' ) { @@ -4382,4 +4396,4 @@ void hb_vmIsStaticRef( void ) /* statics are stored as an item of array type */ hb_gcItemRef( &s_aStatics ); -} +} \ No newline at end of file