2006-04-07 15:30 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu)

* harbour/source/vm/classes.c
     % Optimized __CLSADDMSG() to call hb_parc() only once instead
       of 25 times for most cases.
     ! Possible problem fixed in __CLSADDMSG() where message parameter
       was required to be uppercase when overloading operator .NOT.,
       .AND. or .OR.
     % hb_dynsymGet() calls replaced with hb_dynsymGetCase() where the
       parameter was an already uppercased constant.

   * harbour/source/vm/dynsym.c
     ! Fixed HB_TRACE() function name in hb_dynsymGetCase().
This commit is contained in:
Viktor Szakats
2006-04-07 13:50:40 +00:00
parent 130a3239d2
commit 23bb599ea9
3 changed files with 73 additions and 59 deletions

View File

@@ -8,6 +8,19 @@
2002-12-01 13:30 UTC+0100 Foo Bar <foo.bar@foobar.org>
*/
2006-04-09 14:55 UTC+0300 Alexander Kresin <alex@belacy.belgorod.su>
* contrib/rdd_ads/ads1.c
* Added possibility to save memo fields > 64K
2006-04-08 02:42 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rdd/dbfcdx/dbfcdx1.c
! update current order number after ordDestroy()
* harbour/source/rdd/dbfntx/dbfntx1.c
% Optimized __CLSADDMSG() to call hb_parc() only once instead
but I forgot to also change the record in DBF
! Possible problem fixed in __CLSADDMSG() where message parameter
was required to be uppercase when overloading operator .NOT.,
* harbour/source/vm/classes.c
% hb_dynsymGet() calls replaced with hb_dynsymGetCase() where the
of 25 times for most cases.

View File

@@ -879,12 +879,12 @@ PHB_FUNC hb_objGetMthd( PHB_ITEM pObject, PHB_SYMB pMessage, BOOL lAllowErrFunc
if( s_msgClassName == NULL )
{
s_msgClassName = hb_dynsymGet( "CLASSNAME" ); /* Standard messages */
s_msgClassH = hb_dynsymGet( "CLASSH" ); /* Not present in classdef. */
s_msgClassSel = hb_dynsymGet( "CLASSSEL" );
s_msgEval = hb_dynsymGet( "EVAL" );
/*s_msgClsParent = hb_dynsymGet( "ISDERIVEDFROM" );*/
/*s_msgClass = hb_dynsymGet( "CLASS" );*/
s_msgClassName = hb_dynsymGetCase( "CLASSNAME" ); /* Standard messages */
s_msgClassH = hb_dynsymGetCase( "CLASSH" ); /* Not present in classdef. */
s_msgClassSel = hb_dynsymGetCase( "CLASSSEL" );
s_msgEval = hb_dynsymGetCase( "EVAL" );
/*s_msgClsParent = hb_dynsymGetCase( "ISDERIVEDFROM" );*/
/*s_msgClass = hb_dynsymGetCase( "CLASS" );*/
}
if( pMsg == s_msgClassName )
@@ -1018,7 +1018,8 @@ HB_FUNC( __CLSADDMSG )
{
PCLASS pClass = s_pClasses + ( uiClass - 1 );
PHB_DYNS pMessage ;
PHB_DYNS pMessage;
char * szMessage = hb_parc( 2 );
USHORT uiBucket;
@@ -1026,58 +1027,58 @@ HB_FUNC( __CLSADDMSG )
USHORT uiAt;
PMETHOD pNewMeth;
if (strcmp("+",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpPlus" ) ;
else if (strcmp("-",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpMinus") ;
else if (strcmp("*",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpMult" ) ;
else if (strcmp("/",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpDivide") ;
else if (strcmp("%",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpMod" ) ;
else if (strcmp("^",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpPower") ;
else if (strcmp("**",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpPower" ) ;
else if (strcmp("++",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpInc" ) ;
else if (strcmp("--",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpDec" ) ;
else if (strcmp("==",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpEqual") ;
else if (strcmp("=",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpEqual") ;
else if (strcmp("!=",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpNotEqual") ;
else if (strcmp("<>",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpNotEqual") ;
else if (strcmp("#",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpNotEqual") ;
else if (strcmp("<",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpLess" ) ;
else if (strcmp("<=",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpLessEqual") ;
else if (strcmp(">",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpGreater") ;
else if (strcmp(">=",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpGreaterEqual") ;
else if (strcmp(":=",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpAssign") ;
else if (strcmp("$",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpInstring") ;
else if (strcmp("!",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpNot" ) ;
else if (strcmp(".NOT.",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpNot" ) ;
else if (strcmp(".AND.",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpAnd" ) ;
else if (strcmp(".OR.",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpOr" ) ;
else if( strcmp("[]",hb_parc(2)) == 0)
pMessage = hb_dynsymGet( "__OpArrayIndex" ) ;
if (strcmp("+", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPPLUS" );
else if (strcmp("-", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPMINUS" );
else if (strcmp("*", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPMULT" );
else if (strcmp("/", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPDIVIDE" );
else if (strcmp("%", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPMOD" );
else if (strcmp("^", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPPOWER" );
else if (strcmp("**", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPPOWER" );
else if (strcmp("++", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPINC" );
else if (strcmp("--", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPDEC" );
else if (strcmp("==", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPEQUAL" );
else if (strcmp("=", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPEQUAL" );
else if (strcmp("!=", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPNOTEQUAL" );
else if (strcmp("<>", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPNOTEQUAL" );
else if (strcmp("#", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPNOTEQUAL" );
else if (strcmp("<", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPLESS" );
else if (strcmp("<=", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPLESSEQUAL" );
else if (strcmp(">", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPGREATER" );
else if (strcmp(">=", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPGREATEREQUAL" );
else if (strcmp(":=", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPASSIGN" );
else if (strcmp("$", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPINSTRING" );
else if (strcmp("!", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPNOT" );
else if (hb_stricmp(".NOT.", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPNOT" );
else if (hb_stricmp(".AND.", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPAND" );
else if (hb_stricmp(".OR.", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPOR" );
else if( strcmp("[]", szMessage) == 0)
pMessage = hb_dynsymGetCase( "__OPARRAYINDEX" );
else
pMessage = hb_dynsymGet( hb_parc( 2 ) );
pMessage = hb_dynsymGet( szMessage );
if( wType == HB_OO_MSG_INLINE && hb_param( 3, HB_IT_BLOCK ) == NULL )
hb_errRT_BASE( EG_ARG, 3000, NULL, "__CLSADDMSG", 0 );

View File

@@ -165,7 +165,7 @@ HB_EXPORT PHB_DYNS hb_dynsymGetCase( char * szName ) /* finds and creates a sym
{
PHB_DYNS pDynSym;
HB_TRACE(HB_TR_DEBUG, ("hb_dynsymGet(%s)", szName));
HB_TRACE(HB_TR_DEBUG, ("hb_dynsymGetCase(%s)", szName));
pDynSym = hb_dynsymFind( szName );
if( ! pDynSym ) /* Does it exists ? */