2010-03-13 01:25 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/include/hbstack.h
  * harbour/src/vm/estack.c
    % declare hb_stack TLS pointer in MT HVM as static when HVM is compiled
      with HB_HVM_ALL=yes

  * harbour/src/compiler/hbcomp.c
    ! added protection against multiple freeing the same expression on
      some errors in compiled code. It's necessary after removing reference
      counters which made such protection indirectly. It fixed bug reported
      by Teo.

  * harbour/include/hbsetup.h
    ! check GCC version for hot and cold function attribute macros
This commit is contained in:
Przemyslaw Czerpak
2010-03-13 00:26:30 +00:00
parent 8e50cf7c40
commit d6d7154456
5 changed files with 35 additions and 12 deletions

View File

@@ -17,6 +17,21 @@
past entries belonging to author(s): Viktor Szakats.
*/
2010-03-13 01:25 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbstack.h
* harbour/src/vm/estack.c
% declare hb_stack TLS pointer in MT HVM as static when HVM is compiled
with HB_HVM_ALL=yes
* harbour/src/compiler/hbcomp.c
! added protection against multiple freeing the same expression on
some errors in compiled code. It's necessary after removing reference
counters which made such protection indirectly. It fixed bug reported
by Teo.
* harbour/include/hbsetup.h
! check GCC version for hot and cold function attribute macros
2010-03-12 14:32 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
* contrib/hbqt/doc/en/class_qapplication.txt
* contrib/hbqt/qtgui/QApplication.cpp

View File

@@ -468,10 +468,6 @@
__attribute__ (( format (printf, _nStr, _nParam)))
#define HB_MALLOC_ATTR \
__attribute__ (( malloc ))
#define HB_HOT_ATTR \
__attribute__ (( hot ))
#define HB_COLD_ATTR \
__attribute__ (( cold ))
#define HB_PURE_ATTR \
__attribute__ (( pure ))
#define HB_CONST_ATTR \
@@ -494,8 +490,14 @@
!defined( __ICC ) && !defined( __OPENCC__ )
#define HB_ALLOC_SIZE_ATTR( _nParam ) \
__attribute__ (( alloc_size (_nParam)))
#define HB_HOT_ATTR \
__attribute__ (( hot ))
#define HB_COLD_ATTR \
__attribute__ (( cold ))
# else
#define HB_ALLOC_SIZE_ATTR( _nParam )
#define HB_HOT_ATTR
#define HB_COLD_ATTR
# endif
#define HB_RESTRICT __restrict

View File

@@ -194,10 +194,18 @@ typedef struct
#if defined( HB_STACK_MACROS )
# if defined( HB_MT_VM )
# if defined( HB_USE_TLS )
# if defined( __BORLANDC__ )
extern PHB_STACK HB_TLS_ATTR hb_stack_ptr;
# if defined( HB_STACK_LOCAL_MACROS )
# if defined( __BORLANDC__ )
static PHB_STACK HB_TLS_ATTR hb_stack_ptr;
# else
static HB_TLS_ATTR PHB_STACK hb_stack_ptr;
# endif
# else
extern HB_TLS_ATTR PHB_STACK hb_stack_ptr;
# if defined( __BORLANDC__ )
extern PHB_STACK HB_TLS_ATTR hb_stack_ptr;
# else
extern HB_TLS_ATTR PHB_STACK hb_stack_ptr;
# endif
# endif
# else
extern HB_TLS_KEY hb_stack_key;

View File

@@ -88,6 +88,8 @@ static void hb_compExprDealloc( HB_COMP_DECL, HB_EXPR_PTR pExpr )
}
hb_xfree( pExpItm );
}
else
pExpr->ExprType = HB_ET_NONE;
}
static HB_EXPR_PTR hb_compExprNew( HB_COMP_DECL, HB_EXPRTYPE iType )

View File

@@ -87,14 +87,12 @@
# ifdef HB_USE_TLS
/* compiler has native support for TLS */
# if defined( HB_STACK_MACROS )
# if defined( HB_STACK_MACROS ) && !defined( HB_STACK_LOCAL_MACROS )
# if defined( __BORLANDC__ )
PHB_STACK HB_TLS_ATTR hb_stack_ptr = NULL;
# else
HB_TLS_ATTR PHB_STACK hb_stack_ptr = NULL;
# endif
# else
static HB_TLS_ATTR PHB_STACK hb_stack_ptr = NULL;
# endif
# define hb_stack_alloc() do { hb_stack_ptr = ( PHB_STACK ) \
@@ -136,8 +134,6 @@
/* no MT mode */
# if defined( HB_STACK_MACROS ) && !defined( HB_STACK_LOCAL_MACROS )
HB_STACK hb_stack;
# elif !defined( __cplusplus )
static HB_STACK hb_stack;
# endif
# define hb_stack_alloc()