24
24
#include " peimagelayout.inl"
25
25
26
26
#ifndef DACCESS_COMPILE
27
- DomainAssembly::DomainAssembly (PEAssembly* pPEAssembly, LoaderAllocator* pLoaderAllocator) :
28
- m_pAssembly(NULL ),
29
- m_pPEAssembly(pPEAssembly),
30
- m_pModule(NULL ),
31
- m_fCollectible(pLoaderAllocator->IsCollectible ()),
32
- m_NextDomainAssemblyInSameALC(NULL ),
33
- m_pLoaderAllocator(pLoaderAllocator),
34
- m_level(FILE_LOAD_CREATE),
35
- m_loading(TRUE ),
36
- m_pError(NULL ),
37
- m_bDisableActivationCheck(FALSE ),
38
- m_fHostAssemblyPublished(FALSE ),
39
- m_debuggerFlags(DACF_NONE),
40
- m_notifyflags(NOT_NOTIFIED),
41
- m_fDebuggerUnloadStarted(FALSE )
27
+ DomainAssembly::DomainAssembly (PEAssembly* pPEAssembly, LoaderAllocator* pLoaderAllocator, AllocMemTracker* memTracker)
28
+ : m_pAssembly(NULL )
29
+ , m_pPEAssembly(pPEAssembly)
30
+ , m_pModule(NULL )
31
+ , m_fCollectible(pLoaderAllocator->IsCollectible ())
32
+ , m_NextDomainAssemblyInSameALC(NULL )
33
+ , m_pLoaderAllocator(pLoaderAllocator)
34
+ , m_level(FILE_LOAD_CREATE)
35
+ , m_loading(TRUE )
36
+ , m_pError(NULL )
37
+ , m_bDisableActivationCheck(FALSE )
38
+ , m_fHostAssemblyPublished(FALSE )
39
+ , m_debuggerFlags(DACF_NONE)
40
+ , m_notifyflags(NOT_NOTIFIED)
41
+ , m_fDebuggerUnloadStarted(FALSE )
42
42
{
43
43
CONTRACTL
44
44
{
@@ -53,6 +53,18 @@ DomainAssembly::DomainAssembly(PEAssembly* pPEAssembly, LoaderAllocator* pLoader
53
53
pPEAssembly->ValidateForExecution ();
54
54
55
55
SetupDebuggingConfig ();
56
+
57
+ // Create the Assembly
58
+ NewHolder<Assembly> assembly = Assembly::Create (GetPEAssembly (), GetDebuggerInfoBits (), IsCollectible (), memTracker, IsCollectible () ? GetLoaderAllocator () : NULL );
59
+ assembly->SetIsTenured ();
60
+
61
+ m_pAssembly = assembly.Extract ();
62
+ m_pModule = m_pAssembly->GetModule ();
63
+
64
+ m_pAssembly->SetDomainAssembly (this );
65
+
66
+ // Creating the Assembly should have ensured the PEAssembly is loaded
67
+ _ASSERT (GetPEAssembly ()->IsLoaded ());
56
68
}
57
69
58
70
DomainAssembly::~DomainAssembly ()
@@ -319,12 +331,8 @@ BOOL DomainAssembly::DoIncrementalLoad(FileLoadLevel level)
319
331
Begin ();
320
332
break ;
321
333
322
- case FILE_LOAD_ALLOCATE:
323
- Allocate ();
324
- break ;
325
-
326
- case FILE_LOAD_POST_ALLOCATE:
327
- PostAllocate ();
334
+ case FILE_LOAD_BEFORE_TYPE_LOAD:
335
+ BeforeTypeLoad ();
328
336
break ;
329
337
330
338
case FILE_LOAD_EAGER_FIXUPS:
@@ -365,7 +373,7 @@ BOOL DomainAssembly::DoIncrementalLoad(FileLoadLevel level)
365
373
return TRUE ;
366
374
}
367
375
368
- void DomainAssembly::PostAllocate ()
376
+ void DomainAssembly::BeforeTypeLoad ()
369
377
{
370
378
CONTRACTL
371
379
{
@@ -482,19 +490,6 @@ void DomainAssembly::Activate()
482
490
RETURN;
483
491
}
484
492
485
- void DomainAssembly::SetAssembly (Assembly* pAssembly)
486
- {
487
- STANDARD_VM_CONTRACT;
488
-
489
- _ASSERTE (pAssembly->GetModule ()->GetPEAssembly ()==m_pPEAssembly);
490
- _ASSERTE (m_pAssembly == NULL );
491
-
492
- m_pAssembly = pAssembly;
493
- m_pModule = pAssembly->GetModule ();
494
-
495
- pAssembly->SetDomainAssembly (this );
496
- }
497
-
498
493
void DomainAssembly::Begin ()
499
494
{
500
495
STANDARD_VM_CONTRACT;
@@ -540,38 +535,6 @@ void DomainAssembly::UnregisterFromHostAssembly()
540
535
}
541
536
}
542
537
543
- void DomainAssembly::Allocate ()
544
- {
545
- CONTRACTL
546
- {
547
- INSTANCE_CHECK;
548
- STANDARD_VM_CHECK;
549
- INJECT_FAULT (COMPlusThrowOM (););
550
- PRECONDITION (m_pAssembly == NULL );
551
- }
552
- CONTRACTL_END;
553
-
554
- AllocMemTracker amTracker;
555
- AllocMemTracker * pamTracker = &amTracker;
556
-
557
- Assembly * pAssembly;
558
- {
559
- // Order is important here - in the case of an exception, the Assembly holder must destruct before the AllocMemTracker declared above.
560
- NewHolder<Assembly> assemblyHolder (NULL );
561
-
562
- assemblyHolder = pAssembly = Assembly::Create (GetPEAssembly (), GetDebuggerInfoBits (), this ->IsCollectible (), pamTracker, this ->IsCollectible () ? this ->GetLoaderAllocator () : NULL );
563
- assemblyHolder->SetIsTenured ();
564
-
565
- pamTracker->SuppressRelease ();
566
- assemblyHolder.SuppressRelease ();
567
- }
568
-
569
- SetAssembly (pAssembly);
570
-
571
- // Creating the Assembly should have ensured the PEAssembly is loaded
572
- _ASSERT (GetPEAssembly ()->IsLoaded ());
573
- }
574
-
575
538
void DomainAssembly::DeliverAsyncEvents ()
576
539
{
577
540
CONTRACTL
0 commit comments