Commit Graph

1419 Commits

Author SHA1 Message Date
Przemyslaw Czerpak
12ac680ed3 2008-10-06 12:38 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbclass.ch
  * harbour/include/hboo.ch
    + added SYNC attribute to accepted syntax in class declaration
      it allows to compile code which uses this attribute but low
      level implementation is not ready yet - work in progress

  * harbour/source/vm/garbage.c
    ! added #define INCL_DOSPROCESS for OS2 builds. For some reasons
      #define INCL_DOSDATETIME I've found in DosSleep() documentation
      is note enough
2008-10-06 10:38:22 +00:00
Przemyslaw Czerpak
3dc7a9f679 2008-10-06 11:17 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/thread.c
    ! fixed typo in recent modification
2008-10-06 09:17:27 +00:00
Przemyslaw Czerpak
423391977e 2008-10-06 02:18 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/tests/speedtst.prg
    * marked T054 as memory tests

  * harbour/source/vm/hvm.c
  * harbour/source/vm/thread.c
    * added hb_threadOnce( @<onceControl> [, <bAction> ] ) -> <lFirstCall>
      This function allow to execute some code only once. It's usefull in
      MT environment for initialization.
      <onceControl> is variable which holds the execution status and have
      to be initialized to NIL. In most of cases it will be simple static
      variable in user code.
      <bAction> is optional codeblock which is executed only once (on 1-st
      call with given <onceControl>)

  * harbour/source/rtl/filesys.c
    ! do not make any file name conversions in hb_fsNameConv() if HVM stack
      is not allocated

  * harbour/source/rtl/gtcrs/gtcrs.c
    * casting
2008-10-06 00:19:10 +00:00
Przemyslaw Czerpak
01fb05675c 2008-10-05 17:53 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/tests/speedtst.prg
    + added support for --scale switch - it enables special mode
      which compare scalability, f.e.:
         ./speedtst --thread=4 --scale
      executes each test loop 4 times by single thread then
      by 4 simultaneous threads, counts total real times in both
      cases and presents them with the scale factor.
      Please note that exactly the same loop tests are executed
      simultaneously so this test should well show all places which
      are not well scalable.
      This test allows me to locate yet another memory variable written by
      each thread on each function call just like uiPolls in main HVM loop.
      It's s_bDebugging which is not used in MT mode because we do not have
      any MT debugger yet but is was effectively killing the scalability
      in my hardware.
      If possible I would like to see some Windows results from multi CPU
      machine with --scale parameter, f.e.:
         speedtst --thread=8 --scale > speedtst.log
      Please make some tests.

  * harbour/source/vm/hvm.c
    % do not assign s_bDebugging in hb_vmDo()/hb_vmSend() when debugger
      is not linked

  * harbour/source/vm/garbage.c
    % enabled spinlocks in all x86 GCC builds
2008-10-05 15:53:51 +00:00
Przemyslaw Czerpak
38684fe9c1 2008-10-05 15:53 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/thread.c
    ! fixed hb_mutexSubscribe*() in ST mode
2008-10-05 13:53:36 +00:00
Przemyslaw Czerpak
628b9840f1 2008-10-04 21:23 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/fm.c
    ! do not build DL-MM when HB_FM_WIN32_ALLOC is set

  * harbour/tests/speedtst.prg
    + added support for --exclude=<tests,...> option to exclude some tests,
      f.e.:
         ./speetest --exclude=029.030.023.025.027.040.041.043.052.053.019.022.031.032
      disables all tests which allocates memory. The same tests can be also
      excluded by --exclude=mem
2008-10-04 19:23:36 +00:00
Przemyslaw Czerpak
23eae1e22c 2008-10-03 20:20 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/garbage.c
    * Use spinlock instead of mutex in OS2 builds - performance test.
2008-10-03 18:20:50 +00:00
Przemyslaw Czerpak
4062ccfff3 2008-10-03 13:50 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/estack.c
    * pacified OS2 warning
2008-10-03 11:51:12 +00:00
Viktor Szakats
41a0c0c1c1 2008-10-03 09:37 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* source/vm/extrap.c
    + Now using standard internal error call for Windows too.
    + Implemented //BATCH for OS/2. (please test)

  * source/rtl/errorint.c
    * Upped internal buffer.
2008-10-03 07:38:19 +00:00
Viktor Szakats
b7a7705eee 2008-10-03 09:04 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* contrib/hbole/oleauto.prg
  * contrib/hbole/ole2.c
  * contrib/hbwin/win_tole.prg
  * contrib/hbwin/win_ole.c
    * OLESHOWEXCEPTION() implemented on the .prg level, using 
      Alert() rather than MessageBox().
    ! All MessageBox()es converted to Alert()s.
    + Added OLEEXCEPTIONSOURCE(), OLEEXCEPTIONDESCRIPTION() 
      to hbole.

  * source/vm/maindllp.c
    ! Changed MessageBox() call to internal error.

  * contrib/gtwvg/gtwvg.c
  * source/rtl/gtwvt/gtwvt.c
    ! Changed MessageBox() calls to internal error.

  * contrib/gtwvg/gtwvg.c
    * Internal error calls synced with GTWVT.

  * source/rtl/hbgtcore.c
    - Removed "Internal error" text from two internal error descriptions.

  * make_vc.mak
    - Removed reference to MessageBox() from comment.

  ; NOTE: No more MessageBox() calls in Harbour.
          (except some wrappers for user .prg code)
2008-10-03 07:06:16 +00:00
Viktor Szakats
011d73157d 2008-10-02 23:16 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbsetup.ch
    ! Removed some company names from comments.

  * source/vm/extrap.c
    + Added //BATCH internal switch to indicate exception handler 
      to suppress the Windows exception dialog when an exception 
      occurs. Useful for programs running without user interaction.
      NOTE: This may not be the ultimate method. If we can gather 
            more such situations where such "batch" mode might 
            be useful, we may as well implement it as a Set().
    - Removed Harbour specific exception MessageBox(). Besides 
      having gotten rid of a MessageBox() call in core VM, Harbour now 
      got back the standard Windows error handling dialog, which is 
      more standard and easy to get by than the previous default 
      method, where several clicks were needed to pass through 
      the (sometimes hidden) popups. The details of all GPFs are 
      still logged into hb_out.log.
    + Removed size limit for the logged exception call stack.
2008-10-02 21:49:11 +00:00
Przemyslaw Czerpak
c16b13e573 2008-10-02 21:12 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rdd/sdf1.c
    ! fixed stupid typo (missing !) in last modification which broke
      SDF RDD read mode. Thanks to Marco for information and example.

  * harbour/include/hbstack.h
  * harbour/source/vm/estack.c
    * small cleanup in used macros
2008-10-02 19:12:30 +00:00
Viktor Szakats
738b3391e8 2008-10-02 20:25 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* contrib/hbct/Makefile
  * contrib/hbct/common.mak
  * contrib/hbct/ctmisc.prg
  + contrib/hbct/ctdummy.prg
    * Recently added dummy CT functions moved to a separate file.

  * source/vm/thread.c
    ! Fixed warning in HB_THREADID().
2008-10-02 18:30:09 +00:00
Maurilio Longo
f25e456ddb 2008-10-02 15:54 UTC+0200 Maurilio Longo (maurilio.longo@libero.it)
* harbour/source/vm/thread.c
    * hb_ThreadID() returns 0 when built in ST mode.
2008-10-02 13:53:54 +00:00
Maurilio Longo
c2f6b15424 2008-10-02 15:50 UTC+0200 Maurilio Longo (maurilio.longo@libero.it)
* harbour/source/vm/thread.c
    + added hb_ThreadID() function which returns thread ID of current thread.
2008-10-02 13:47:59 +00:00
Viktor Szakats
3271afe446 2008-10-02 15:19 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* source/vm/extrap.c
    + Upped internal buffer to store the exception dump 
      and stack trace.
2008-10-02 13:20:00 +00:00
Viktor Szakats
693f75900d 2008-10-02 11:49 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* source/vm/extrap.c
    * Added "error" text in exception message.
2008-10-02 09:50:05 +00:00
Przemyslaw Czerpak
0ef0ce6b1c 2008-09-29 22:55 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/hvm.c
    ! restored some item type settings I wrongly removed few days ago
2008-09-29 20:56:23 +00:00
Przemyslaw Czerpak
f06af57f7e 2008-09-29 17:41 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbset.h
  * harbour/source/vm/set.c
    + divided __SETCENTURY() PRG function into two functions:
      __SETCENTURY() and public C function hb_setSetCentury()
      to manipulate century setting from C code.
      Modyfication by Francesco Saverio Giudice
2008-09-29 15:42:21 +00:00
Przemyslaw Czerpak
cce3e73961 2008-09-29 11:18 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbvm.h
  * harbour/include/hbthread.h
  * harbour/source/vm/hvm.c
  * harbour/source/vm/thread.c
    + added hb_vmThreadRegister() funtion which allows to register new
      thread in HVM without HVM stack allocation
    + added hb_vmThreadRelease() which removes registered thread which
      does not have allocated HVM stack yet
    + added hb_threadStateNew() which returns new thread control state
      which can be used as parameter to hb_vmThreadInit(),
      hb_vmThreadRegister(), hb_vmThreadRelease()
    * register thread control state also for main thread
      Now hb_threadSelf() returns thread pointer also for main thread
    ! fixed possible race condition in hb_threadWaitForAll() and
      hb_threadTerminateAll() by using hb_vmThreadRegister() before
      starting thread.

  * harbour/source/rtl/idle.c
    * interrupt hb_idleSleep() on QUIT or BREAK requests

  * harbour/tests/mt/mttest09.prg
    * small cleanup
2008-09-29 09:19:46 +00:00
Przemyslaw Czerpak
88d4f41e4f 2008-09-26 21:28 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/thread.c
    * release thread return value when is retrieve

  * harbour/common.mak
  * harbour/source/rtl/Makefile
  + harbour/source/rtl/tthreadx.prg
    + added xBase++ compatible signal class

  * harbour/source/rdd/wacore.c
    ! added missing alias setting after attaching work area

  + harbour/tests/mt/mttest09.prg
    + added test code for using the same work area in different threads
2008-09-26 19:28:54 +00:00
Przemyslaw Czerpak
893c372e0b 2008-09-26 19:34 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbstack.h
  * harbour/source/vm/estack.c
    + added assembler inline macros for TLS access in BCC and MinGW32
      They are enabled when Harbour is compiled with -DHB_NO_TLS.
      Please check the speed difference. If it will be noticeable
      then we keep them probably as default. Otherwise they will be
      removed.
2008-09-26 17:35:37 +00:00
Przemyslaw Czerpak
acd86c6f02 2008-09-26 02:42 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/thread.c
    ! fixed thread cleanup code when startthread() fails, f.e.
      OS refuse to create new thread.
2008-09-26 00:42:41 +00:00
Przemyslaw Czerpak
e58b37da88 2008-09-24 20:30 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/estack.c
    ! fixed stack preloading - it should be after checking if stack
      exist :)
2008-09-24 18:31:00 +00:00
Viktor Szakats
cb7b1a831c 2008-09-24 16:18 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* source/vm/fm.c
    + Enabled dlmalloc (HB_FM_DL_ALLOC) for MSVC, BCC and MINGW builds.
    ; It's possible to disable dlmalloc with HB_FM_STD_ALLOC 
      for testing purposes.
2008-09-24 14:19:05 +00:00
Przemyslaw Czerpak
b0a49b7ba1 2008-09-24 14:53 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/dynsym.c
  * harbour/source/vm/arrays.c
  * harbour/source/vm/memvars.c
    ! fixed three typos which broke HB_TR_DEBUG messages
2008-09-24 12:54:41 +00:00
Viktor Szakats
6b8ec38aec 2008-09-24 12:31 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* source/vm/vmmt/Makefile
    ! Possible fix for mingw build error:
      make: *** mainstd: No such file or directory.  Stop.
      make[3]: *** [first] Error 2
      make[2]: *** [first] Error 2
    ; Please review.

    ; TOFIX: These DLALLOC warnings are present with MinGW 4.3.2
             In file included from ../../fm.c:127:
             ../../dlmalloc.c:1144: warning: ignoring #pragma warning 
             In file included from ../../fm.c:127:
             ../../dlmalloc.c: In function 'sys_alloc':
             ../../dlmalloc.c:3396: warning: statement with no effect
2008-09-24 10:31:40 +00:00
Viktor Szakats
15b49556a2 2008-09-24 00:18 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* tests/memtst.prg
    + Added #include "simpleio.ch" to allow output redirection.

  * bin/bld.bat
  * bin/bld_os2.cmd
    * Removed any HB_GT_LIB "selection" logic. Selection is to 
      be done from source code, from now on all supported core GTs 
      are included in the lib list.
    * Few other minor cleanups.

  * source/vm/cmdarg.c
    * Commented code turned into HB_C52_STRICT branch.

  * source/vm/vmmt/Makefile
    ! Fixed cemgw -> mingwce

  * config/dos/global.cf
  * config/os2/global.cf
  * config/w32/global.cf
    % Removed unnecessary logic to select default GT. This is 
      done in Harbour source code now.

  ; TOFIX: After MT changes, mingw32 build gives this new error:
           make: *** mainstd: No such file or directory.  Stop.
           make[3]: *** [first] Error 2
           make[2]: *** [first] Error 2
2008-09-23 22:24:26 +00:00
Viktor Szakats
09b0509b08 2008-09-23 20:41 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* source/vm/extrap.c
    ! Fixed to close .log file before showing MessageBox().
      [TOMERGE 1.0]

    + Don't attempt to write into .log file if the _SET_HBOUTLOG 
      filename is empty.

    ; TOFIX: Remove all remaining MessageBox() calls from 
             Harbour sources.
2008-09-23 18:42:29 +00:00
Viktor Szakats
2db644f214 2008-09-23 18:56 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* contrib/rddads/adsmgmnt.c
    ! Blind fix to ADSMGGETWORKERTHREADACTIVITY() where the 
      first element in list wasn't returned.
      Please test, I couldn't.

  * source/vm/fm.c
    ! Stupid typo. (I guess I'm completely confused by separated 
      "#" and preprocessor command :/ Second typo in two lines.)
2008-09-23 16:57:24 +00:00
Przemyslaw Czerpak
c8d341cefb 2008-09-23 15:38 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/codebloc.c
    * updated old and not longer valid comment

  * harbour/source/vm/memvars.c
    * minor code formatting

  * harbour/source/common/expropt2.c
    ! fixed bug in power math expression optimization caused
      by two lines left in the code by mistake. Many thanks to
      Maurilio for locating the problem.

  * harbour/include/hbstack.h
  * harbour/source/vm/estack.c
  * harbour/source/vm/hvm.c
    % added support for buffering hb_stack TLS access be preloading
      the stack pointer into C stack function local variables.
      Please make speed tests for MT mode with different C compilers
      and different platforms.
2008-09-23 13:39:35 +00:00
Viktor Szakats
454b3b49e0 2008-09-23 14:38 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* contrib/hbole/ole2.c
  * contrib/hbgf/hbgfwin/winapi.c
  * contrib/hbgf/hbgfos2/os2pm.c
  * contrib/hbwin/win_ole.c
  * contrib/hbwhat/wincorec.c
  * source/rtl/do.c
  * source/rdd/workarea.c
    % hb_vmPushSymbol( hb_dynsymSymbol( p ) ) -> hb_vmPushDynSym( p )

  * contrib/hbwhat/wincorec.c
    ! WHT__GETDLGPROC() fixed.
    ! hb_vmPushSymbol( hb_itemGetSymbol( p ) ) -> hb_vmPushDynSym( p )

  * contrib/hbgf/hbgfwin/winapi.c
  * contrib/hbwhat/wincorec.c
  * contrib/hbwhat/whtmsg.c
  * contrib/hbwhat/whtbmp.c
  * contrib/hbwhat/whtcomm.c
  * contrib/hbwhat/whthead.c
  * contrib/hbwhat/whthead.c
  * contrib/hbwhat/whtkbrd.c
  * contrib/hbwhat/whtlv.c
  * contrib/hbwhat/whttext.c
  * contrib/hbwhat/whtwnd.c
  * contrib/hbwhat/whtdlg.c
  * contrib/hbwhat/whttab.c
    ! Fixed few LPARAM/WPARAM passings to be 64-bit compatible.
      (hb_parnl()/hb_parni() -> hb_parnint())

  * source/vm/thread.c
  * source/rtl/do.c
  * source/rdd/usrrdd/usrrdd.c
  * contrib/hbwhat/whtlv.c
  * contrib/hbwhat/whtfont.c
    % hb_vmPushSymbol( hb_itemGetSymbol( p ) ) -> hb_vmPush()
    ; QUESTION/TOFIX: In whtlv.c and whtfont.c this may be wrong, 
                      and hb_vmPushDynSym() could be needed instead.
                      Can someone take a look pls?
2008-09-23 12:48:23 +00:00
Viktor Szakats
ebaa3ee424 2008-09-23 11:27 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* source/vm/fm.c
    ! Enabled USE_DL_PREFIX for _MSC_VER compilers.
      This may be refined, but without this setting MSVS 2008 
      would give an error on exit and GPF.
2008-09-23 09:28:39 +00:00
Przemyslaw Czerpak
afd254adc2 2008-09-22 22:08 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/thread.c
    ! fixed GPF when hb_threadSelf() was executed from thread without
      allocated ID object (f.e. main thread)
2008-09-22 20:09:27 +00:00
Przemyslaw Czerpak
afb1c7cd2d 2008-09-22 20:40 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/classes.c
  * harbour/source/rdd/workarea.c
    * pacified BCC warnings

  * harbour/source/debug/dbgwa.prg
  * harbour/source/debug/debugger.prg
  * harbour/source/debug/dbghelp.prg
    * eliminated two static variables
2008-09-22 18:41:29 +00:00
Przemyslaw Czerpak
f05cbbaaaf 2008-09-22 19:32 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/ChangeLog
   ! corrected previous ChangeLog entry: instead of hb_waDetach()/
     hb_waRequest() should be db_dbDetach()/hb_dbRequest()

  * harbour/source/vm/hvm.c
   * disabled PRG tracing in default builds. If someone wants to
     use this feature then he should recompile Harbour with HB_PRG_TRACE
     macro. In such case tracing can be enabled/disabled by __TRACEPRGCALLS()
     function. HB_NO_TRACE macro is not longer usable - it's default in
     current code.

  * harbour/source/vm/classes.c
    + added PRG function __clsPreallocate() which extends the size of
      classes buffer to given value to avoid later RT reallocations.
      It may be useful in some very seldom cases for MT programs which
      will allocate dynamically at runtime more then 16386 classes.
      In practice rather impossible though who knows ;-)

  * harbour/source/rdd/workarea.c
    * set default preallocation size for RDD nodes to 128
    + added PRG function __rddPreallocate() which extends the size of
      RDD nodes buffer to given value to avoid later RT reallocations.
      It may be useful in some very seldom cases for MT programs which
      will register dynamically at runtime more then 128 RDDs when other
      threads are active and may use RDD nodes.

  * harbour/include/hbrddcdx.h
  * harbour/source/rdd/dbfcdx/dbfcdx1.c
    + added ORDLSTDELETE() method.
      Now ordbagClear() should work for DBFCDX.
2008-09-22 17:32:36 +00:00
Przemyslaw Czerpak
d9e592e202 2008-09-22 16:14 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbstack.h
  * harbour/source/vm/estack.c
    + added support for using stack macros without native compiler TLS
      support in MT mode.
    * enabled stack macros by default for OS2 MT builds
      David, if possible please try speedtst.prg with current MT HVM
2008-09-22 14:15:18 +00:00
Przemyslaw Czerpak
b34b792443 2008-09-22 03:49 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbstack.h
  * harbour/source/vm/estack.c
  * harbour/source/vm/hvm.c
    + added support for nested hb_vmUnlock()/hb_vmLock() calls

  * harbour/source/rtl/hbinet.c
    * encapsulated all potentially slow inet functions inside
      hb_vmUnlock()/hb_vmLock() calls
2008-09-22 01:50:21 +00:00
Przemyslaw Czerpak
a8aac5cae5 2008-09-22 02:34 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbvm.h
  * harbour/source/vm/hvm.c
  * harbour/source/vm/thread.c
    + added .prg function hb_threadSelf() -> <pThID> | NIL
      It returns thread ID pointer variable or NIL when thread was
      registered without it (main thread and some 3-rd party threads
      created by C API)

  * harbour/source/vm/hvm.c
    * protect s_InitFunctions and s_ExitFunctions by mutex

  * harbour/source/common/hbverdsp.c
    * use hb_verBuildDate() instead of __DATE__ and __TIME__ in
      hb_verBuildInfo() function to report the same time in both
      cases.
2008-09-22 00:34:52 +00:00
Przemyslaw Czerpak
c1c574142e 2008-09-21 23:03 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/source/vm/arrays.c
    + added hb_arrayGetPtrGC(), hb_arrayGetSymbol(), hb_arraySetSymbol()

  * harbour/include/hbapi.h
  * harbour/source/vm/dynsym.c
    + added hb_dynsymProtectEval(). Works like hb_dynsymEval() but
      keeps dynamic symbol table locked during whole execution.
      It's faster then hb_dynsymEval() but user function may not
      access dynamic symbol tbale to not cause recursive locks
    + added protection against possible dynamic symbol table resizing
      during hb_dynsymEval() by other threads.

  * harbour/include/hbapi.h
  * harbour/source/vm/memvars.c
    + added hb_memvarSaveInArray( int iScope, BOOL fCopy ) and
      hb_memvarRestoreFromArray( PHB_ITEM pArray )
    % use hb_dynsymProtectEval() in places where it's safe

  * harbour/include/Makefile
  + harbour/include/hbthread.ch
    + added header file with thread constant definitions:
         HB_THREAD_INHERIT_PUBLIC
         HB_THREAD_INHERIT_PRIVATE
         HB_THREAD_INHERIT_MEMVARS
         HB_THREAD_MEMVARS_COPY

  * harbour/include/hbthread.h
  * harbour/source/vm/hvm.c
  * harbour/source/vm/thread.c
    + added support for inheriting visible memvars from current
      thread when new thread is created. Memvars in child thread
      can be shared with parrent or they can be copied. See HB_THREAD_*
      attributes defined in hbthread.ch, f.e.:
         hb_threadStart( HB_THREAD_INHERIT_PUBLIC, @thFunc() )
      or:
         hb_threadStart( HB_BITOR( HB_THREAD_INHERIT_MEMVARS + ;
                                   HB_THREAD_MEMVARS_COPY ), ;
                          @thFunc() )
      Please note that when child thread creates new PUBLIC variable
      which didn't existed when thread was started then it's visible
      only for this thread and optionally for its child threads but
      not for parent thread.
      Please also remember that write access to shared memvars have
      to be protected by users.

  + harbour/tests/mt/mttest08.prg
    + added test code for thread memvars inheritance
2008-09-21 21:04:47 +00:00
Przemyslaw Czerpak
2f2dc484a8 2008-09-20 05:37 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/common.mak
  * harbour/source/rdd/Makefile
    ! restored dbdetach.* in makefiles

  + harbour/source/rdd/dbdetach.c
    + added file I forgot to add in previous commit

  * harbour/source/vm/thread.c
    + added support for using function name as string in HB_THREADSTART()
    + added support for thread attributes. They will be used in the future.
2008-09-20 03:37:41 +00:00
Przemyslaw Czerpak
d94370e84e 2008-09-20 03:38 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/hvm.c
    * minor modification: #ifdef ... => #if defined( ... )

  * harbour/source/rtl/gtcrs/gtcrs.c
  * harbour/source/rtl/gttrm/gttrm.c
    ! fixed reentrance counter resetting
2008-09-20 01:39:17 +00:00
Przemyslaw Czerpak
7cc11cf5e2 2008-09-19 22:27 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/set.c
    ! fixed casting

  * harbour/contrib/xhb/xhbcopyf.c
    * replaced TABs with SPACEs

  * harbour/include/hbapirdd.h
  * harbour/source/rdd/workarea.c
  * harbour/source/rdd/wacore.c
  * harbour/source/rdd/wafunc.c
    + added support for detaching and attaching workareas

  * harbour/source/vm/hvm.c
    % minor cleanup in thread return code

  * harbour/include/hbthread.h
  * harbour/source/vm/thread.c
    * unlock HVM stack during thread join operation
    * added workaround for DosWaitThread() which seems to fail if thread
      terminated before
    ; added TOFIX note for OS2 and join code
2008-09-19 20:28:26 +00:00
Viktor Szakats
57707cd31e 2008-09-18 22:00 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* source/vm/fm.c
    ! Suppressing warnings for foreign dmalloc.c code for BCC.
2008-09-18 20:01:14 +00:00
Przemyslaw Czerpak
a6f735db01 2008-09-18 20:41 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/thread.c
    * detach local parameters passed by reference to hb_threadStart()
      to avoid possible calling thread HVM stack corruption
2008-09-18 18:42:15 +00:00
Przemyslaw Czerpak
86333ba271 2008-09-18 07:21 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbthread.h
    * use assembler version of atomic inc/dec operation in all x86 based
      GCC builds - it should noticeable improve OS2 MT build speed,
      please test.

  * harbour/include/hbcomp.h
  * harbour/include/hbapicdp.h
  * harbour/include/hbcompdf.h
  * harbour/include/hbgtcore.h
  * harbour/include/hbapifs.h
  * harbour/include/hbwince.h
  * harbour/include/hbexpra.c
  * harbour/include/hbexprop.h
  * harbour/include/hbmacro.h
  * harbour/include/hbapigt.h
  * harbour/include/hbapi.h
  * harbour/include/hbapiitm.h
  * harbour/include/hbexprb.c
  * harbour/source/pp/ppcore.c
  * harbour/source/pp/hbpp.c
  * harbour/source/vm/macro.c
  * harbour/source/vm/cmdarg.c
  * harbour/source/vm/arrays.c
  * harbour/source/vm/extrap.c
  * harbour/source/vm/memvars.c
  * harbour/source/vm/eval.c
  * harbour/source/vm/extend.c
  * harbour/source/vm/set.c
  * harbour/source/main/harbour.c
  * harbour/source/common/hbfsapi.c
  * harbour/source/common/reserved.c
  * harbour/source/common/expropt1.c
  * harbour/source/macro/macro.yyc
  * harbour/source/macro/macro.y
  * harbour/source/macro/macro.yyh
  * harbour/source/macro/macrolex.c
  * harbour/source/rtl/gtdos/gtdos.c
  * harbour/source/rtl/gtwin/gtwin.c
  * harbour/source/rtl/gtxwc/gtxwc.c
  * harbour/source/rtl/gtos2/gtos2.c
  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/cdpapi.c
  * harbour/source/rtl/gtcrs/gtcrs.c
  * harbour/source/rtl/hbtoken.c
  * harbour/source/rtl/gtchrmap.c
  * harbour/source/rtl/gtstd/gtstd.c
  * harbour/source/rtl/gtsln/mousesln.c
  * harbour/source/rtl/gtsln/gtsln.c
  * harbour/source/rtl/gtsln/kbsln.c
  * harbour/source/rtl/gttrm/gttrm.c
  * harbour/source/rtl/gtpca/gtpca.c
  * harbour/source/rtl/hbhex.c
  * harbour/source/rtl/gtgui/gtgui.c
  * harbour/source/rtl/gt_tpl/gt_tpl.c
  * harbour/source/rtl/gtcgi/gtcgi.c
  * harbour/source/rtl/gtwvt/gtwvt.c
  * harbour/source/rtl/strtran.c
  * harbour/source/rtl/hbinet.c
  * harbour/source/rtl/gtapi.c
  * harbour/source/rtl/filesys.c
  * harbour/source/rdd/dbfntx/dbfntx1.c
  * harbour/source/rdd/dbsql.c
  * harbour/source/rdd/dbfcdx/dbfcdx1.c
  * harbour/source/rdd/dbffpt/dbffpt1.c
  * harbour/source/rdd/hbsix/sxfname.c
  * harbour/source/compiler/ppcomp.c
  * harbour/source/compiler/hbmain.c
  * harbour/source/compiler/cmdcheck.c
  * harbour/source/compiler/hbdbginf.c
  * harbour/source/compiler/genc.c
  * harbour/source/compiler/hbident.c
  * harbour/source/compiler/hbusage.c
  * harbour/source/compiler/gencc.c
  * harbour/source/compiler/harbour.yyc
  * harbour/source/compiler/harbour.y
  * harbour/contrib/gtalleg/gtalleg.c
  * harbour/contrib/hbct/charlist.c
  * harbour/contrib/hbct/charmix.c
  * harbour/contrib/hbct/screen1.c
  * harbour/contrib/hbct/atrepl.c
  * harbour/contrib/xhb/hboutdbg.c
  * harbour/contrib/xhb/hbxml.c
  * harbour/contrib/xhb/hbxml.h
  * harbour/contrib/hbgt/strexpan.c
  * harbour/contrib/hbsqlit3/sqlite3/sqlite3.c
  * harbour/contrib/gtwvg/gtwvg.c
  * harbour/contrib/hbclipsm/status.c
  * harbour/contrib/hbclipsm/gauge.c
  * harbour/contrib/hbmisc/stringsx.c
  * harbour/contrib/hbtip/utils.c
  * harbour/contrib/hbgf/hbgfgtk/msginfo.c
  * harbour/contrib/hbgf/hbgfgtk/harbgtk.h
  * harbour/contrib/hbbmcdx/bmdbfcdx.c
  * harbour/utils/hbmake/hbmgauge.c
    * use const char * instead of char * in places which should be marked
      as const
2008-09-18 05:23:49 +00:00
Przemyslaw Czerpak
5ec4b754b9 2008-09-18 01:17 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/fm.c
  + harbour/source/vm/dlmalloc.c
    + added alternative memory manager written by Doug Lea
      It can be activated by recompiling Harbour with HB_FM_DL_ALLOC macro.
      Please make test on different platforms with different C compilers.
      Linux users will not benefit from it because the default GLIBC MM
      is derived from a version of code.
      NOTE: the results may strongly depend on total memory allocation
      and will be different then in simple memory tests.
2008-09-17 23:17:45 +00:00
Przemyslaw Czerpak
ab02c791d5 2008-09-17 18:38 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbthread.h
    + added macros to disable default native compiler TLS support:
      HB_NO_TLS

  * harbour/source/vm/set.c
    ! fixed GPF when set listeners were removed
2008-09-17 16:39:24 +00:00
Przemyslaw Czerpak
453b0e0cd9 2008-09-17 01:29 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/make_xmingwce.sh
  * harbour/make_xmingw.sh
    + added an option to build utility binaries in cross builds

  * harbour/source/vm/thread.c
    ! fixes in OS2 builds MT builds
2008-09-16 23:30:28 +00:00
Przemyslaw Czerpak
61647d6776 2008-09-16 14:49 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbthread.h
    + added DMC to list of compilers which can use __declspec( thread )
    + automatically use TLS for Linux and GLIBC >= 2.6 on x86* machines

  * harbour/include/hbthread.h
  * harbour/source/vm/estack.c
  * harbour/source/vm/thread.c
    ! clean up typos in OS2 builds
2008-09-16 12:49:50 +00:00