Changeset 330 for trunk/Include/system


Ignore:
Timestamp:
Sep 9, 2007, 12:41:35 PM (17 years ago)
Author:
dai
Message:

コンストラクタパラメータを処理中にGCがかかると、初期化中オブジェクトのスキャンで強制終了してしまうバグを修正。
グローバル領域に保持されるオブジェクトの一部がGCによって不正に回収されてしまうバグを修正。
Thread.Nameプロパティを実装

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Include/system/gc.sbp

    r299 r330  
    126126        ' 自身のThreadオブジェクトを生成
    127127        Dim thread As Thread(hTargetThread,GetCurrentThreadId(),0)
     128        thread.Name = "main"
    128129
    129130        _System_pobj_AllThreads->BeginThread(ObjPtr( thread ),_System_gc_StackRoot_StartPtr As *LONG_PTR)
     
    179180            pdwFlags[n]=flags
    180181        LeaveCriticalSection(CriticalSection)
     182
     183        /*
     184        ' デバッグ用
     185        If n = 1996 Then
     186            debug
     187        End If
     188        */
    181189
    182190        n++
     
    283291        End If
    284292
     293        /*
     294        _System_DebugOnly_OutputDebugString( "  (scanning object)" )
     295        _System_DebugOnly_OutputDebugString( classTypeInfo.Name )
     296        _System_DebugOnly_OutputDebugString( Ex"\r\n" )
     297        */
     298
    285299        Dim i As Long
    286300        For i = 0 To ELM(classTypeInfo.numOfReference)
     
    330344        Dim i As Long
    331345        For i=0 To ELM(_System_pobj_AllThreads->ThreadNum)
    332             If _System_pobj_AllThreads->ppobj_Thread[i] Then
     346            Dim thread = _System_pobj_AllThreads->ppobj_Thread[i]
     347            If thread Then
    333348                FillMemory(VarPtr(Context),SizeOf(CONTEXT),0)
    334349                Context.ContextFlags=CONTEXT_CONTROL
    335                 If _System_pobj_AllThreads->ppobj_Thread[i]->__GetContext(Context)=0 Then
     350                If thread->__GetContext(Context)=0 Then
    336351                    _System_DebugOnly_OutputDebugString(Ex"レジスタ情報の取得に失敗しました。\r\n")
    337352                End If
     
    350365                    Exit Sub
    351366                End If
     367
     368                /*
     369                _System_DebugOnly_OutputDebugString( "(scanning thread local)" )
     370                _System_DebugOnly_OutputDebugString( thread.Name )
     371                _System_DebugOnly_OutputDebugString( Ex"\r\n" )
     372                */
    352373
    353374                Scan( NowSp, maxNum, pbMark )
Note: See TracChangeset for help on using the changeset viewer.