(bool trackRef)
| 669 | } |
| 670 | |
| 671 | internal TypeMetaCacheEntry GetTypeMetaCacheEntry(bool trackRef) |
| 672 | { |
| 673 | if (trackRef) |
| 674 | { |
| 675 | if (_typeMetaTrackRef.HasValue) |
| 676 | { |
| 677 | return _typeMetaTrackRef.Value; |
| 678 | } |
| 679 | } |
| 680 | else if (_typeMetaNoTrackRef.HasValue) |
| 681 | { |
| 682 | return _typeMetaNoTrackRef.Value; |
| 683 | } |
| 684 | |
| 685 | lock (_typeMetaCacheLock) |
| 686 | { |
| 687 | if (trackRef) |
| 688 | { |
| 689 | _typeMetaTrackRef ??= BuildTypeMetaCacheEntry(trackRef: true); |
| 690 | return _typeMetaTrackRef.Value; |
| 691 | } |
| 692 | |
| 693 | _typeMetaNoTrackRef ??= BuildTypeMetaCacheEntry(trackRef: false); |
| 694 | return _typeMetaNoTrackRef.Value; |
| 695 | } |
| 696 | } |
| 697 | |
| 698 | private TypeMetaCacheEntry BuildTypeMetaCacheEntry(bool trackRef) |
| 699 | { |
no outgoing calls