2007-05-22 13:30 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/compiler/hbfix.c
! fixed local IND/DED when PARAMETERS is used
! fixed local names generated for debugger when PARAMETERS is used
* harbour/source/debug/dbgentry.c
! fixed very bad typo in my previous commit
% minor optimization
This commit is contained in:
@@ -8,6 +8,15 @@
|
||||
2002-12-01 13:30 UTC+0100 Foo Bar <foo.bar@foobar.org>
|
||||
*/
|
||||
|
||||
2007-05-22 13:30 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/source/compiler/hbfix.c
|
||||
! fixed local IND/DED when PARAMETERS is used
|
||||
! fixed local names generated for debugger when PARAMETERS is used
|
||||
|
||||
* harbour/source/debug/dbgentry.c
|
||||
! fixed very bad typo in my previous commit
|
||||
% minor optimization
|
||||
|
||||
2007-05-22 12:20 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/bin/hb-func.sh
|
||||
+ added -lpcreposix to system libraries when C_USR has -DHB_PCRE_REGEX
|
||||
|
||||
@@ -115,7 +115,7 @@ static HB_FIX_FUNC( hb_p_pushblocklarge )
|
||||
return HB_PCODE_MKUINT24( &pFunc->pCode[ lPCodePos + 1 ] );
|
||||
}
|
||||
|
||||
static HB_FIX_FUNC( hb_p_poplocal )
|
||||
static HB_FIX_FUNC( hb_p_localfix )
|
||||
{
|
||||
BYTE * pVar = &pFunc->pCode[ lPCodePos + 1 ];
|
||||
SHORT iVar = HB_PCODE_MKSHORT( pVar );
|
||||
@@ -126,52 +126,10 @@ static HB_FIX_FUNC( hb_p_poplocal )
|
||||
pVar[ 0 ] = HB_LOBYTE( iVar );
|
||||
pVar[ 1 ] = HB_HIBYTE( iVar );
|
||||
|
||||
return 3;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static HB_FIX_FUNC( hb_p_pushlocal )
|
||||
{
|
||||
BYTE * pVar = &pFunc->pCode[ lPCodePos + 1 ];
|
||||
SHORT iVar = HB_PCODE_MKSHORT( pVar );
|
||||
|
||||
HB_SYMBOL_UNUSED( cargo );
|
||||
|
||||
iVar += pFunc->wParamCount;
|
||||
pVar[ 0 ] = HB_LOBYTE( iVar );
|
||||
pVar[ 1 ] = HB_HIBYTE( iVar );
|
||||
|
||||
return 3;
|
||||
}
|
||||
|
||||
static HB_FIX_FUNC( hb_p_pushlocalref )
|
||||
{
|
||||
BYTE * pVar = &pFunc->pCode[ lPCodePos + 1 ];
|
||||
SHORT iVar = HB_PCODE_MKSHORT( pVar );
|
||||
|
||||
HB_SYMBOL_UNUSED( cargo );
|
||||
|
||||
iVar += pFunc->wParamCount;
|
||||
pVar[ 0 ] = HB_LOBYTE( iVar );
|
||||
pVar[ 1 ] = HB_HIBYTE( iVar );
|
||||
|
||||
return 3;
|
||||
}
|
||||
|
||||
static HB_FIX_FUNC( hb_p_localaddint )
|
||||
{
|
||||
BYTE * pVar = &pFunc->pCode[ lPCodePos + 1 ];
|
||||
SHORT iVar = HB_PCODE_MKSHORT( pVar );
|
||||
|
||||
HB_SYMBOL_UNUSED( cargo );
|
||||
|
||||
iVar += pFunc->wParamCount;
|
||||
pVar[ 0 ] = HB_LOBYTE( iVar );
|
||||
pVar[ 1 ] = HB_HIBYTE( iVar );
|
||||
|
||||
return 5;
|
||||
}
|
||||
|
||||
static HB_FIX_FUNC( hb_p_poplocalnear )
|
||||
static HB_FIX_FUNC( hb_p_localnearerr )
|
||||
{
|
||||
HB_SYMBOL_UNUSED( pFunc );
|
||||
HB_SYMBOL_UNUSED( lPCodePos );
|
||||
@@ -182,35 +140,7 @@ static HB_FIX_FUNC( hb_p_poplocalnear )
|
||||
*/
|
||||
hb_compGenError( cargo->HB_COMP_PARAM, hb_comp_szErrors, 'F', HB_COMP_ERR_OPTIMIZEDLOCAL_OUT_OF_RANGE, "", "" );
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
static HB_FIX_FUNC( hb_p_pushlocalnear )
|
||||
{
|
||||
HB_SYMBOL_UNUSED( pFunc );
|
||||
HB_SYMBOL_UNUSED( lPCodePos );
|
||||
/*
|
||||
* this code should never be executed because compiler should
|
||||
* generate only non size optimized HB_P_POPLOCAL pcodes
|
||||
* for function body
|
||||
*/
|
||||
hb_compGenError( cargo->HB_COMP_PARAM, hb_comp_szErrors, 'F', HB_COMP_ERR_OPTIMIZEDLOCAL_OUT_OF_RANGE, "", "" );
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
static HB_FIX_FUNC( hb_p_localnearaddint )
|
||||
{
|
||||
HB_SYMBOL_UNUSED( pFunc );
|
||||
HB_SYMBOL_UNUSED( lPCodePos );
|
||||
/*
|
||||
* this code should never be executed because compiler should
|
||||
* generate only non size optimized HB_P_POPLOCAL pcodes
|
||||
* for function body
|
||||
*/
|
||||
hb_compGenError( cargo->HB_COMP_PARAM, hb_comp_szErrors, 'F', HB_COMP_ERR_OPTIMIZEDLOCAL_OUT_OF_RANGE, "", "" );
|
||||
|
||||
return 4;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* NOTE: The order of functions have to match the order of opcodes
|
||||
@@ -255,7 +185,7 @@ static const HB_FIX_FUNC_PTR s_fixlocals_table[] =
|
||||
NULL, /* HB_P_LESSEQUAL, */
|
||||
NULL, /* HB_P_LESS, */
|
||||
NULL, /* HB_P_LINE, */
|
||||
NULL, /* HB_P_LOCALNAME, */
|
||||
hb_p_localfix, /* HB_P_LOCALNAME, */
|
||||
NULL, /* HB_P_MACROPOP, */
|
||||
NULL, /* HB_P_MACROPOPALIASED, */
|
||||
NULL, /* HB_P_MACROPUSH, */
|
||||
@@ -299,8 +229,8 @@ static const HB_FIX_FUNC_PTR s_fixlocals_table[] =
|
||||
NULL, /* HB_P_POPALIASEDFIELDNEAR, */
|
||||
NULL, /* HB_P_POPALIASEDVAR, */
|
||||
NULL, /* HB_P_POPFIELD, */
|
||||
hb_p_poplocal, /* HB_P_POPLOCAL, */
|
||||
hb_p_poplocalnear, /* HB_P_POPLOCALNEAR, */
|
||||
hb_p_localfix, /* HB_P_POPLOCAL, */
|
||||
hb_p_localnearerr, /* HB_P_POPLOCALNEAR, */
|
||||
NULL, /* HB_P_POPMEMVAR, */
|
||||
NULL, /* HB_P_POPSTATIC, */
|
||||
NULL, /* HB_P_POPVARIABLE, */
|
||||
@@ -314,9 +244,9 @@ static const HB_FIX_FUNC_PTR s_fixlocals_table[] =
|
||||
NULL, /* HB_P_PUSHFIELD, */
|
||||
NULL, /* HB_P_PUSHBYTE, */
|
||||
NULL, /* HB_P_PUSHINT, */
|
||||
hb_p_pushlocal, /* HB_P_PUSHLOCAL, */
|
||||
hb_p_pushlocalnear, /* HB_P_PUSHLOCALNEAR, */
|
||||
hb_p_pushlocalref, /* HB_P_PUSHLOCALREF, */
|
||||
hb_p_localfix, /* HB_P_PUSHLOCAL, */
|
||||
hb_p_localnearerr, /* HB_P_PUSHLOCALNEAR, */
|
||||
hb_p_localfix, /* HB_P_PUSHLOCALREF, */
|
||||
NULL, /* HB_P_PUSHLONG, */
|
||||
NULL, /* HB_P_PUSHMEMVAR, */
|
||||
NULL, /* HB_P_PUSHMEMVARREF, */
|
||||
@@ -346,7 +276,7 @@ static const HB_FIX_FUNC_PTR s_fixlocals_table[] =
|
||||
NULL, /* HB_P_MACROFUNC, */
|
||||
NULL, /* HB_P_MACRODO, */
|
||||
NULL, /* HB_P_MPUSHSTR, */
|
||||
hb_p_localnearaddint, /* HB_P_LOCALNEARADDINT, */
|
||||
hb_p_localnearerr, /* HB_P_LOCALNEARADDINT, */
|
||||
NULL, /* HB_P_MACROPUSHREF */
|
||||
NULL, /* HB_P_PUSHLONGLONG */
|
||||
NULL, /* HB_P_ENUMSTART */
|
||||
@@ -373,7 +303,7 @@ static const HB_FIX_FUNC_PTR s_fixlocals_table[] =
|
||||
NULL, /* HB_P_LARGEFRAME */
|
||||
NULL, /* HB_P_LARGEVFRAME */
|
||||
NULL, /* HB_P_PUSHSTRHIDDEN */
|
||||
hb_p_localaddint, /* HB_P_LOCALADDINT */
|
||||
hb_p_localfix, /* HB_P_LOCALADDINT */
|
||||
NULL, /* HB_P_MODEQPOP */
|
||||
NULL, /* HB_P_EXPEQPOP */
|
||||
NULL, /* HB_P_MODEQ */
|
||||
@@ -393,9 +323,9 @@ static const HB_FIX_FUNC_PTR s_fixlocals_table[] =
|
||||
NULL, /* HB_P_INCEQPOP */
|
||||
NULL, /* HB_P_DECEQ */
|
||||
NULL, /* HB_P_INCEQ */
|
||||
NULL, /* HB_P_LOCALDEC */
|
||||
NULL, /* HB_P_LOCALINC */
|
||||
NULL, /* HB_P_LOCALINCPUSH */
|
||||
hb_p_localfix, /* HB_P_LOCALDEC */
|
||||
hb_p_localfix, /* HB_P_LOCALINC */
|
||||
hb_p_localfix, /* HB_P_LOCALINCPUSH */
|
||||
NULL, /* HB_P_PUSHFUNCSYM */
|
||||
NULL /* HB_P_HASHGEN */
|
||||
};
|
||||
|
||||
@@ -76,9 +76,9 @@ static BOOL hb_clsSetScope( BOOL fScope ) { return fScope; }
|
||||
#define STRNDUP( dest, source, len ) ( dest = hb_strndup( (source), (len) ) )
|
||||
|
||||
#define ARRAY_ADD( type, array, length ) \
|
||||
( ( length++ == 0 ) ? array = ( type * ) hb_xgrab( sizeof( type ) ) : \
|
||||
( ( ++length == 1 ) ? ( array = ( type * ) hb_xgrab( sizeof( type ) ) ) : \
|
||||
( ( array = ( type * ) hb_xrealloc( array, sizeof( type ) * length ) ) + \
|
||||
sizeof( type ) * ( length - 1 ) ) )
|
||||
length - 1 ) )
|
||||
|
||||
#define ARRAY_DEL( type, array, length, index ) \
|
||||
do { \
|
||||
@@ -640,6 +640,7 @@ hb_dbgAddModule( HB_DEBUGINFO *info, char *szName )
|
||||
static void
|
||||
hb_dbgAddStack( HB_DEBUGINFO *info, char *szName, int nProcLevel )
|
||||
{
|
||||
char szBuff[ HB_SYMBOL_NAME_LEN + HB_SYMBOL_NAME_LEN + 5 ];
|
||||
HB_CALLSTACKINFO *top;
|
||||
char *szFunction = strrchr( szName, ':' );
|
||||
char *tmp;
|
||||
@@ -651,10 +652,9 @@ hb_dbgAddStack( HB_DEBUGINFO *info, char *szName, int nProcLevel )
|
||||
top = ARRAY_ADD( HB_CALLSTACKINFO, info->aCallStack, info->nCallStackLen );
|
||||
if ( info->bCodeBlock )
|
||||
{
|
||||
char tmp[ HB_SYMBOL_NAME_LEN + HB_SYMBOL_NAME_LEN + 5 ] = "(b)";
|
||||
|
||||
strcpy( tmp + 3, szFunction );
|
||||
top->szFunction = STRDUP( tmp );
|
||||
memcpy( szBuff, "(b)", 3 );
|
||||
hb_strncpy( szBuff + 3, szFunction, sizeof( szBuff ) - 4 );
|
||||
top->szFunction = STRDUP( szBuff );
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -665,10 +665,8 @@ hb_dbgAddStack( HB_DEBUGINFO *info, char *szName, int nProcLevel )
|
||||
else
|
||||
{
|
||||
/* We're in an (_INITSTATICSnnnnn) pseudo-function */
|
||||
char szName[ HB_SYMBOL_NAME_LEN + HB_SYMBOL_NAME_LEN + 5 ];
|
||||
|
||||
hb_procinfo( 0, szName, NULL, NULL );
|
||||
top->szFunction = STRDUP( szName );
|
||||
hb_procinfo( 0, szBuff, NULL, NULL );
|
||||
top->szFunction = STRDUP( szBuff );
|
||||
}
|
||||
}
|
||||
tmp = strrchr( szName, '/' );
|
||||
|
||||
Reference in New Issue
Block a user