Full Code of miniLV/Interview-series for AI

master 262275f6ba6b cached
267 files
3.1 MB
821.0k tokens
1696 symbols
1 requests
Download .txt
Showing preview only (3,300K chars total). Download the full file or copy to clipboard to get everything.
Repository: miniLV/Interview-series
Branch: master
Commit: 262275f6ba6b
Files: 267
Total size: 3.1 MB

Directory structure:
gitextract_jkwm6bgm/

├── .gitignore
├── BlockFile.md
├── InterView-obj-isa-class/
│   ├── InterView-obj-isa-class/
│   │   ├── NSObject+MNTest.h
│   │   ├── NSObject+MNTest.m
│   │   └── main.m
│   ├── InterView-obj-isa-class.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           └── IDEWorkspaceChecks.plist
│   ├── libmalloc-166.220.1/
│   │   ├── .clang-format
│   │   ├── .gitattributes
│   │   ├── .gitignore
│   │   ├── include/
│   │   │   └── malloc/
│   │   │       ├── _malloc.h
│   │   │       └── malloc.h
│   │   ├── libmalloc.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── man/
│   │   │   ├── malloc.3
│   │   │   ├── malloc_size.3
│   │   │   ├── malloc_zone_malloc.3
│   │   │   └── manpages.lst
│   │   ├── private/
│   │   │   ├── malloc_private.h
│   │   │   └── stack_logging.h
│   │   ├── resolver/
│   │   │   ├── resolver.c
│   │   │   ├── resolver.h
│   │   │   └── resolver_internal.h
│   │   ├── src/
│   │   │   ├── base.h
│   │   │   ├── bitarray.c
│   │   │   ├── bitarray.h
│   │   │   ├── debug.h
│   │   │   ├── dtrace.h
│   │   │   ├── empty.s
│   │   │   ├── frozen_malloc.c
│   │   │   ├── frozen_malloc.h
│   │   │   ├── internal.h
│   │   │   ├── legacy_malloc.c
│   │   │   ├── legacy_malloc.h
│   │   │   ├── locking.h
│   │   │   ├── magazine_inline.h
│   │   │   ├── magazine_large.c
│   │   │   ├── magazine_lite.c
│   │   │   ├── magazine_malloc.c
│   │   │   ├── magazine_malloc.h
│   │   │   ├── magazine_rack.c
│   │   │   ├── magazine_rack.h
│   │   │   ├── magazine_small.c
│   │   │   ├── magazine_tiny.c
│   │   │   ├── magazine_zone.h
│   │   │   ├── magmallocProvider.d
│   │   │   ├── malloc.c
│   │   │   ├── malloc_common.c
│   │   │   ├── malloc_common.h
│   │   │   ├── malloc_printf.c
│   │   │   ├── nano_malloc.c
│   │   │   ├── nano_malloc.h
│   │   │   ├── nano_malloc_common.c
│   │   │   ├── nano_malloc_common.h
│   │   │   ├── nano_zone.h
│   │   │   ├── nano_zone_common.h
│   │   │   ├── nanov2_malloc.c
│   │   │   ├── nanov2_malloc.h
│   │   │   ├── nanov2_zone.h
│   │   │   ├── platform.h
│   │   │   ├── printf.h
│   │   │   ├── purgeable_malloc.c
│   │   │   ├── purgeable_malloc.h
│   │   │   ├── radix_tree.c
│   │   │   ├── radix_tree.h
│   │   │   ├── radix_tree_debug.c
│   │   │   ├── radix_tree_internal.h
│   │   │   ├── stack_logging_disk.c
│   │   │   ├── stack_logging_internal.h
│   │   │   ├── thresholds.h
│   │   │   ├── trace.h
│   │   │   ├── vm.c
│   │   │   └── vm.h
│   │   ├── tests/
│   │   │   ├── Makefile
│   │   │   ├── MallocBench/
│   │   │   │   ├── Benchmark.cpp
│   │   │   │   ├── Benchmark.h
│   │   │   │   ├── CPUCount.cpp
│   │   │   │   ├── CPUCount.h
│   │   │   │   ├── CommandLine.cpp
│   │   │   │   ├── CommandLine.h
│   │   │   │   ├── Interpreter.cpp
│   │   │   │   ├── Interpreter.h
│   │   │   │   ├── balloon.cpp
│   │   │   │   ├── balloon.h
│   │   │   │   ├── big.cpp
│   │   │   │   ├── big.h
│   │   │   │   ├── churn.cpp
│   │   │   │   ├── churn.h
│   │   │   │   ├── fragment.cpp
│   │   │   │   ├── fragment.h
│   │   │   │   ├── list.cpp
│   │   │   │   ├── list.h
│   │   │   │   ├── mbmalloc.cpp
│   │   │   │   ├── mbmalloc.h
│   │   │   │   ├── medium.cpp
│   │   │   │   ├── medium.h
│   │   │   │   ├── memalign.cpp
│   │   │   │   ├── memalign.h
│   │   │   │   ├── message.cpp
│   │   │   │   ├── message.h
│   │   │   │   ├── realloc.cpp
│   │   │   │   ├── realloc.h
│   │   │   │   ├── stress.cpp
│   │   │   │   ├── stress.h
│   │   │   │   ├── stress_aligned.cpp
│   │   │   │   ├── stress_aligned.h
│   │   │   │   ├── tree.cpp
│   │   │   │   └── tree.h
│   │   │   ├── MallocBench.cpp
│   │   │   ├── asan.c
│   │   │   ├── basic_malloc_free_perf.c
│   │   │   ├── calloc_test.c
│   │   │   ├── libmalloc_tests.xcodeproj/
│   │   │   │   └── project.pbxproj
│   │   │   ├── madvise.c
│   │   │   ├── magazine_malloc.c
│   │   │   ├── magazine_rack.c
│   │   │   ├── magazine_small_test.c
│   │   │   ├── magazine_testing.h
│   │   │   ├── magazine_tiny_test.c
│   │   │   ├── malloc_claimed_address_tests.c
│   │   │   ├── malloc_free_test.c
│   │   │   ├── malloc_size_test.c
│   │   │   ├── nano_tests.c
│   │   │   ├── perf_contended_malloc_free.c
│   │   │   ├── perf_realloc.c
│   │   │   ├── radix_tree_test.m
│   │   │   ├── reallocarray.c
│   │   │   ├── stack_logging_test.c
│   │   │   ├── stress_test.c
│   │   │   └── tsan.c
│   │   ├── tools/
│   │   │   ├── malloc_replay.cpp
│   │   │   ├── malloc_replay.h
│   │   │   ├── malloc_replay_plotter.py
│   │   │   ├── radix_tree_main.m
│   │   │   └── read-radix-tree
│   │   ├── xcodeconfig/
│   │   │   ├── interposable.list
│   │   │   ├── libmalloc.dirty
│   │   │   ├── libmalloc.xcconfig
│   │   │   ├── libmalloc_eos.xcconfig
│   │   │   ├── libmalloc_resolved.xcconfig
│   │   │   ├── libmalloc_resolver.xcconfig
│   │   │   └── libmalloc_static.xcconfig
│   │   └── xcodescripts/
│   │       ├── install-codes.sh
│   │       ├── manpages.sh
│   │       ├── reindent.sh
│   │       └── sanitise_headers.sh
│   └── objc4-750/
│       ├── APPLE_LICENSE
│       ├── ReleaseNotes.rtf
│       ├── interposable.txt
│       ├── libobjc.order
│       ├── markgc.cpp
│       ├── objc.sln
│       ├── objc.vcproj
│       ├── objc.xcodeproj/
│       │   ├── project.pbxproj
│       │   └── project.xcworkspace/
│       │       ├── contents.xcworkspacedata
│       │       └── xcshareddata/
│       │           └── IDEWorkspaceChecks.plist
│       ├── objcrt/
│       │   └── objcrt.vcproj
│       ├── prebuild.bat
│       ├── runtime/
│       │   ├── Messengers.subproj/
│       │   │   ├── objc-msg-arm.s
│       │   │   ├── objc-msg-arm64.s
│       │   │   ├── objc-msg-i386.s
│       │   │   ├── objc-msg-simulator-i386.s
│       │   │   ├── objc-msg-simulator-x86_64.s
│       │   │   ├── objc-msg-win32.m
│       │   │   └── objc-msg-x86_64.s
│       │   ├── Module/
│       │   │   ├── ObjectiveC.apinotes
│       │   │   └── module.modulemap
│       │   ├── NSObjCRuntime.h
│       │   ├── NSObject.h
│       │   ├── NSObject.mm
│       │   ├── Object.h
│       │   ├── Object.mm
│       │   ├── OldClasses.subproj/
│       │   │   ├── List.h
│       │   │   └── List.m
│       │   ├── Protocol.h
│       │   ├── Protocol.mm
│       │   ├── arm64-asm.h
│       │   ├── hashtable.h
│       │   ├── hashtable2.h
│       │   ├── hashtable2.mm
│       │   ├── isa.h
│       │   ├── llvm-AlignOf.h
│       │   ├── llvm-DenseMap.h
│       │   ├── llvm-DenseMapInfo.h
│       │   ├── llvm-MathExtras.h
│       │   ├── llvm-type_traits.h
│       │   ├── maptable.h
│       │   ├── maptable.mm
│       │   ├── message.h
│       │   ├── objc-abi.h
│       │   ├── objc-accessors.mm
│       │   ├── objc-api.h
│       │   ├── objc-auto.h
│       │   ├── objc-auto.mm
│       │   ├── objc-block-trampolines.h
│       │   ├── objc-block-trampolines.mm
│       │   ├── objc-blocktramps-arm.s
│       │   ├── objc-blocktramps-arm64.s
│       │   ├── objc-blocktramps-i386.s
│       │   ├── objc-blocktramps-x86_64.s
│       │   ├── objc-cache-old.h
│       │   ├── objc-cache-old.mm
│       │   ├── objc-cache.h
│       │   ├── objc-cache.mm
│       │   ├── objc-class-old.mm
│       │   ├── objc-class.h
│       │   ├── objc-class.mm
│       │   ├── objc-config.h
│       │   ├── objc-env.h
│       │   ├── objc-errors.mm
│       │   ├── objc-exception.h
│       │   ├── objc-exception.mm
│       │   ├── objc-file-old.h
│       │   ├── objc-file-old.mm
│       │   ├── objc-file.h
│       │   ├── objc-file.mm
│       │   ├── objc-gdb.h
│       │   ├── objc-initialize.h
│       │   ├── objc-initialize.mm
│       │   ├── objc-internal.h
│       │   ├── objc-layout.mm
│       │   ├── objc-load.h
│       │   ├── objc-load.mm
│       │   ├── objc-loadmethod.h
│       │   ├── objc-loadmethod.mm
│       │   ├── objc-lockdebug.h
│       │   ├── objc-lockdebug.mm
│       │   ├── objc-locks-new.h
│       │   ├── objc-locks-old.h
│       │   ├── objc-locks.h
│       │   ├── objc-object.h
│       │   ├── objc-opt.mm
│       │   ├── objc-os.h
│       │   ├── objc-os.mm
│       │   ├── objc-private.h
│       │   ├── objc-probes.d
│       │   ├── objc-ptrauth.h
│       │   ├── objc-references.h
│       │   ├── objc-references.mm
│       │   ├── objc-runtime-new.h
│       │   ├── objc-runtime-new.mm
│       │   ├── objc-runtime-old.h
│       │   ├── objc-runtime-old.mm
│       │   ├── objc-runtime.h
│       │   ├── objc-runtime.mm
│       │   ├── objc-sel-old.mm
│       │   ├── objc-sel-set.h
│       │   ├── objc-sel-set.mm
│       │   ├── objc-sel-table.s
│       │   ├── objc-sel.mm
│       │   ├── objc-sync.h
│       │   ├── objc-sync.mm
│       │   ├── objc-typeencoding.mm
│       │   ├── objc-weak.h
│       │   ├── objc-weak.mm
│       │   ├── objc.h
│       │   ├── objcrt.c
│       │   ├── objcrt.h
│       │   └── runtime.h
│       ├── unexported_symbols
│       ├── version.bat
│       └── version.rc
├── LICENSE
├── README.md
├── category分析.md
├── isa&&Class&&meta-class.md
└── 什么是NSObject.md

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore

## Build generated
build/
DerivedData/

## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/

## Other
*.moved-aside
*.xccheckout
*.xcscmblueprint

## Obj-C/Swift specific
*.hmap
*.ipa
*.dSYM.zip
*.dSYM

# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
# Pods/

# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts

Carthage/Build

# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/#source-control

fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output

# Code Injection
#
# After new code Injection tools there's a generated folder /iOSInjectionProject
# https://github.com/johnno1962/injectionforxcode

iOSInjectionProject/


================================================
FILE: BlockFile.md
================================================
# Block

> 面试驱动技术合集(初中级iOS开发),关注仓库,及时获取更新 [Interview-series](https://github.com/miniLV/Interview-series)

![](https://user-gold-cdn.xitu.io/2019/3/10/16967d7dc4bb1e67?w=1360&h=896&f=jpeg&s=158902)

Block 在 iOS 算比较常见常用且常考的了,现在面试中,要么没面试题,有面试题的,基本都会考到 block 的点。

先来个面试题热热身,题目: **手撕代码 - 用Block实现两个数的求和**

*(这题如果会的,block基础知识可以跳过了,直接到* Block原理探究)



####  简单介绍block入门级用法

Block结构比较复杂,一般用 typedef 定义,直接调用的感觉比较简单、清晰易懂

```
//typedef block的时候有提示
typedef void(^MNBlock)(int);

@interface ViewController ()

@property (nonatomic, copy) MNBlock block;

@end


@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //直接用self.block调用
    self.block = ^(int a) {
        //dosomething...
    };
}
```

- **参数解释:**

`typedef <#returnType#>(^<#name#>)(<#arguments#>);`


![](https://user-gold-cdn.xitu.io/2019/3/6/16952561d5d28953?w=838&h=281&f=png&s=378402)


**题目: 手撕代码 - 用Block实现两个数的求和**

*日常开发中,block声明一般写的比较多,实现一般是靠Xcode自动补全提示出现的,手撕代码的情况下,等号右侧的block实现要怎么写?*

声明:
```
typedef int(^MNBlock)(int a, int b);

@interface ViewController ()

@property (nonatomic, copy) MNBlock sum;
```

Vip补全功能:

![](https://user-gold-cdn.xitu.io/2019/3/6/1695258327b5d40d?w=338&h=41&f=png&s=4862)

纸上按Enter没用啊兄弟!看来还是需要了解一下Block右边的东西~

先在 Xcode上按下 Enter,了解下再撕
![](https://user-gold-cdn.xitu.io/2019/3/6/16952597e5c08f81?w=1251&h=80&f=png&s=13055)

```
^int(int a, int b) {
    //Control reaches end of non-void block    
    因为返回值是int类型,所以这里需要返回
}
```

![](https://user-gold-cdn.xitu.io/2019/3/6/169526002706cf63?w=926&h=516&f=png&s=681574)


```
int(^Sum)(int, int) = ^(int a, int b){
    return a + b;
};
int result = Sum(5, 10);
```


![](https://user-gold-cdn.xitu.io/2019/3/6/16952676c9db9951?w=1030&h=285&f=png&s=504069)



#### Block的坑出现!新手可能会写错的地方

1.声明出错 - `void ^(testBlock)`

![](https://user-gold-cdn.xitu.io/2019/3/6/169526924a0616d0?w=713&h=91&f=png&s=14053)


修正版:

```
void (^testBlock)() = ^{
    
};
```
block的声明,^ 和 blockName 都是在小括号里面!!


2.block各种实现的参数问题

声明`typedef int(^MNBlock)(int, int);`


![](https://user-gold-cdn.xitu.io/2019/3/6/169526c0aac25322?w=773&h=180&f=png&s=39960)

```
    self.sum = ^int(int a, int b) {
        return a + b;
    };
```

这里要注意,block声明里面只有参数类型,没有实际参数的话,Xcode提示也只有参数,这里涉及到形参和实参的问题

声明是形参,可以不写参数,但是使用的时候,必须有实际参数,才可以进行使用,所以这里需要实参,可以在 `^int(int , int)` 中手动添加实参`^int(int a, int b)`,就可以让a 和 b 参与运算

小tips:实际开发中,建议声明的时候,如果需要带参数,最好形参也声明下,这样使用Xcode提示的时候,会把参数带进去,方便得多~(踩过坑的自然懂!)




3. 省略void导致看不懂block结构的 *(正常是两个void导致局面混乱)*

```
//声明
typedef void(^MNBlock)(void);

//实现
self.sum = ^{
    //dosomething...
};

```

这种情况下,能知道怎么省略的,声明里两个void,能知道怎么对应的吗?

这个其实比较简单,block不管声明 or 实现,最后一个小括号,里面都是参数,而参数是可以省略的!

而为了把声明的两个void区分开,返回值 or 参数区分开,其实就ok了

参数非void的例子
```
//声明非void的参数
typedef void(^MNBlock)(int a);

//实现就必须带参数,不可省略!
self.sum = ^(int a) {
    
}
```

参数void的例子 ==> 参数可以省略
```
typedef int(^MNBlock)(void);

self.sum = ^{
    //声明的返回值类型是int,所以一定要return;
    return 5;
};
```

其实-返回值是void的,也可以不省略
```
typedef void(^MNBlock)(void);

//实现的返回值不省略
self.sum = ^void () {
    
};

```

参数是void的省略:
```
typedef int(^MNBlock)();

//实现里面,没有参数,就可以不写()
self.sum = ^int{
    return 5;
}
```

**注意!! 声明里面的返回值void是不可以省略的!!**

![](https://user-gold-cdn.xitu.io/2019/3/7/16956f058259665d?w=403&h=88&f=png&s=13283)


4. 小箭头^混乱的问题,到底放小括号内还是小括号外

声明是 `int(^MNBlock)(int a , int b)`

实现是 `^int(int a, int b)`

注意,这里箭头之后的,不管是多写() 还是少写,都会出错

![](https://user-gold-cdn.xitu.io/2019/3/6/1695278e3061b90d?w=1020&h=103&f=png&s=23020)

![](https://user-gold-cdn.xitu.io/2019/3/6/16952795f17d3bb9?w=1038&h=191&f=png&s=32246)

> 所以这里还不能死记,比如不管声明还是实现,死记 (^ xxx) 是没问题的 or 死记 ^…… xxx 不加括号是没问题的,在这里都行不通,只能靠脑记了

这时候,就需要用到巧记了!

*^ 和小括号组合的,一共有三种情况*

- 一种是声明的,`void(^MNBlock)`
- 一种是实现的,`^int(int a,)`
- 还一种 `^(int a)`

兄弟,看到这你还不乱吗!!


![](https://user-gold-cdn.xitu.io/2019/3/7/16956e251f2c8ce3?w=222&h=227&f=jpeg&s=6734)

怎么记看这里,
- 手写分为两个部分,block等号左边 or 等号右边的,左边为声明,右边为实现区分开
- 声明记住:^后面跟blockName,他们需要包起来! (^blockName),只有声明会用到blockName,先记住一点,如果有blockName,要和^一起,用小括号包起来
- 实现又分为两种:
    - `^int`:^后面跟的是返回值类型
      - ^ 直接跟类型,不用加"( )" ==> `^int`
    - `^(int a)`:^后面直接跟参数 *(返回值是void)*。
        - 参数都是要用"( )"包起来的,如果^后面跟参数,就得用"( )" ==> `^(int a)`,
        - 实现里,肯定有实际参数,这时候,参数类型和实参,就得用( )包起来

### ^与小括号纠缠的总结

- ^ 后面仅跟类型,不需要小括号,==> `^int`
- ^ 后面跟参数,参数需要小括号 ==> `^(int a)`
- ^ 后面跟block名称,^和blockName需要小括号 ==> `void (^MNBlock)`

<br>



## Block原理探究 

```objective-c
void (^MNBlock)(void) = ^(void){
    NSLog(@"this is a Block~ rua~");
};
MNBlock();
```



 使用 `xcrun  -sdk  iphoneos  clang  -arch  arm64  -rewrite-objc main.m` 转成 C++ 代码, 查看底层结构



```objective-c
//对应上面的 MNBlock声明
void (*MNBlock)(void) = (&__main_block_impl_0(__main_block_func_0,
                                                      &__main_block_desc_0_DATA));
        
//对应上面的 MNblock() 调用
MNBlock->FuncPtr(MNBlock);
```



```objective-c
//block声明调用的 - __main_block_impl_0
struct __main_block_impl_0 {
  //结构体内的参数
  struct __block_impl impl;
  struct __main_block_desc_0* Desc;
  
  //c++中的构造函数,类似于 OC 的 init 方法,返回一个结构体对象
  __main_block_impl_0(void *fp, struct __main_block_desc_0 *desc, int flags=0) {
    impl.isa = &_NSConcreteStackBlock;
    impl.Flags = flags;
    impl.FuncPtr = fp;
    Desc = desc;
  }
};

struct __block_impl {
  void *isa;
  int Flags;
  int Reserved;
  void *FuncPtr;
};

static struct __main_block_desc_0 {
  size_t reserved;
  size_t Block_size;
}
```



这里的block封装的函数调用解释`MNBlock->FuncPtr(MNBlock);`

MNBlock 其实内部结构是 `__main_block_impl_0`,

```
struct __main_block_impl_0 {

  //函数调用地址在这个结构体内
  struct __block_impl impl;

  struct __main_block_desc_0* Desc;
  }
  
  struct __block_impl {
  void *isa;
  int Flags;
  int Reserved;
  //函数调用地址在这里
  void *FuncPtr;
};
```

内部只有两个参数,一个`impl`,一个`Desc`,而函数的调用地址 - `FuncPtr`是再`impl`中的,为什么这里能直接这样写呢?

> 因为,__main_block_impl_0 结构的地址和他的第一个成员一样,第一个成员的地址是__block_impl,所以__main_block_impl_0 和 __block_impl 的地址其实是同一个,通过格式强制转换,将 main_block_impl_0 转成 block_impl 就可以直接拿到他内部的 FuncPtr 函数地址,然后进行调用!



![image-20190307213258239](https://user-gold-cdn.xitu.io/2019/3/8/1695da89a57989cf?w=1489&h=1080&f=jpeg&s=303137)



- 可见- block本质上是OC对象,内部有一个isa指针

- block是封装了函数调用已经函数调用的oc对象

  

### Block面试题抛砖引玉~

**开胃菜先来一下,以下结果输出什么**

```
int a = 10;
void (^MNBlock)(void) = ^{
    NSLog(@"a = %d",a);
};
a += 20;

MNBlock();
```



调用 `MNBlock();` 之前,a 已经 + 20了,输出30? 太天真了兄弟,这里涉及到capture的概念,即变量捕获



### Block捕获变量(capture)

捕获:Block内部会新增一个成员,来存储传进来的变量



![image-20190307214010613](https://user-gold-cdn.xitu.io/2019/3/8/1695da89a686ef14?w=1988&h=586&f=jpeg&s=141880)

block 内部直接捕获了穿进去的这个变量a(10)

![image-20190307214351958](/Users/liangyuhang/Library/Application Support/typora-user-images/image-20190307214351958.png)



创建block的时候,已经将变量a=10 捕获到 block内部,之后再怎么修改,不会影响block 内部的  a



**auto 和 static的区别**:以下会输出什么~ 

```
static int b = 10;
void (^MNBlock)(void) = ^{
    NSLog(@"a = %d, b = %d",a,b);
};
a = 20;
b = 20;

MNBlock();
```

输出

```
2019-03-07 21:49:49 Block-Demo a = 10, b = 20
```



why?

查看原因:

```
auto int a = 10;
static int b = 10;
void (*MNBlock)(void) = (&__main_block_impl_0(__main_block_func_0,
                                              &__main_block_desc_0_DATA,
                                              a,
                                              &b));
```



发现:两种变量,都有捕获到block内部。

a 是auto变量,走的是值传递,

b 是 static 变量,走的是地址传递,所以会影响(指针指向同一块内存,修改的等于是同个对象)



**总结**

- 只有局部变量才需要捕获,
- 全局变量不需要捕获,因为在哪都可以访问
- 需不需要捕获,其实主要是看作用域问题
- auto局部变量 ==>值传递->因为会销毁
- static局部练练==>不会销毁==>所以地址传递



**看图就行~**

![image-20190307220857223](https://user-gold-cdn.xitu.io/2019/3/8/1695da89a7997ead?w=1566&h=1012&f=jpeg&s=247371)



**进阶考题 - self 会被捕获到 block 内部吗**

```
void (^MNBlock)(void) = ^{
    NSLog(@"p = %p",self);
};
```



模拟看官作答:不会,因为整个类里,都能调用self,应该是全局的,全局变量不会捕获到block中



哈哈哈哈!中计了!其实 self 是参数(局部变量)



```
struct __MNDemo__test_block_impl_0 {
  struct __block_impl impl;
  struct __MNDemo__test_block_desc_0* Desc;
  MNDemo *self; ==> 捕捉到了兄弟
  }
```



> 解释原因:
>
> - 每个OC函数,其实默认有两个参数,一个self,一个_cmd,只是他们倆兄弟默认是隐藏的
> - 而由于他们是参数,所以是局部变量,局部变量就要被 block 捕获
> - `- (void)test(self, SEL _cmd){XXX}` 默认的OC方法里面其实有这两个隐藏的参数!所以上题的答案,self是会被block捕获的!**(能听懂掌声!)**



**进进阶考题 - 成员变量_name 会被捕获到 block 内部吗**



```
void (^MNBlock)(void) = ^{
    NSLog(@"==%@",_name);
};
```

模拟看官作答:呵呵,老子都中了这么多次技了,这题学会了!! 因为_name是成员变量,全局的,也没有self,所以不需要捕获整个类就都可以随便访问它!



哎,兄弟,还是太年轻了!!

```
void (^MNBlock)(void) = ^{
    NSLog(@"==%@",self->_name);
};
```

看图说话,不多bb, *(能听懂掌声!)*



## Block的类型

- `__NSGlobalBlock__`

- `__NSStackBlock__`

- `__NSMallocBlock__`



MRC环境下

```
void (^global)() = ^{
    NSLog(@"globalValue = %d",globalValue);
};

void (^autoBlock)() = ^{
    NSLog(@"this is a Block~ rua~ = %d",a);
};

void (^copyAuto)() = [autoBlock copy];

--------------------------------------------
print class
2019-03-08 17:40:43 Block-Demo

 global class = __NSGlobalBlock__ 
 autoBlock class = __NSStackBlock__ 
 copyAuto = __NSMallocBlock__
```



总结:

![image-20190308174640436](/Users/liangyuhang/Library/Application Support/typora-user-images/image-20190308174640436.png)


![](https://user-gold-cdn.xitu.io/2019/3/8/1695daddd8d9af3c?w=1482&h=920&f=png&s=1979727)



栈上的内存系统会自动回收

- 栈空间的block 不会对 对象进行强引用
- 堆空间的block 可能会对对象产生强引用:
  - 如果是weak指针,不会强引用
  - 如果是strong指针,会强引用

堆上的内存是由程序员控制,所以一般将block 拷贝到堆上,让程序员控制他与内部变量的生命周期



题目:以下输出的顺序是什么(ARC环境下)

```
@implementation MNPerson

- (void)dealloc{
    NSLog(@"MNPerson - dealloc");
}

@end

--------------------------------------

MNPerson *person = [[MNPerson alloc]init];

__weak MNPerson *weakPerson = person;

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    
    NSLog(@"1-----%@",person);
    
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        NSLog(@"2------%@",weakPerson);
    });
    
});

NSLog(@"touchesBegan");
```



输出结果

```
2019-03-08 22:38:59.038452+0800 touchesBegan
2019-03-08 22:39:00.056746+0800 1-----<MNPerson: 0x604000207840>
2019-03-08 22:39:00.057891+0800 MNPerson - dealloc
2019-03-08 22:39:02.058011+0800 2-----(null)
```

解释:

1. gcd的block会自动对auto变量进行copy操作

2. block内部对 auto 变量的强弱引用,取决于指针类型

3. 1 中的auto变量是 person,没声明默认对象是 strong 类型,所以 gcd1 会对 person进行 1s的强引用

4. gcd2 中的变量是 weakPerson,看到是__wesk指针,所以block内部不会对其产生强引用

5. 随后,gcd1 对 person进行1s的强引用之后,gcd1 的block销毁,person对象销毁,打印MNPerson dealloc

6. 最终,2s过后打印 2——weakPerson,因为person对象在gcd1 block结束之后,释放掉了,所以此时person是空,因为是weak指针,对象是null不会crash,最终打印null



#### 对象类型的auto变量

- 当 block 内部访问了对象类型的auto变量时	
  - 如果block在展示,不会对 auto 变量产生强引用
  - 如果 block 被 拷贝到堆上
    - 会调用 block 内部的 copy 函数
    - copy 函数内部会调用 _Block_object_assign 函数
    - _Block_object_assign 函数会根据auto变量的修饰符 *( strong、 weak、unsafe_unretained )* 做出对应的操作,看对内部auto变量进行强引用还是弱引用(类似于 retain)
  - 如果 block 从 堆上移除
    - 会调用 block 内部的 dispose 函数
    - dispose函数内部会调用_Block_object_dispose 函数
    - _Block_object_dispose 类似于 release,会对auto变量进行自动释放(当引用计数器=0的时候 )

![image-20190308173027757](/Users/liangyuhang/Library/Application%20Support/typora-user-images/image-20190308173027757.png)



#### block中的copy

- 在ARC环境下,编译器会根据情况,自动将栈上的block拷贝到堆上,比如以下几种情况
  - block 作为函数返回值的时候
  - 将block复制给__strong指针的时候
  - block作为Cocoa API中方法名含有usingBlock的方法参数事
    - 比如:`[array enumerateObjectsUsingBlock:XXX]`



### __block 修饰符的使用



题目:以下代码的是否编译通过,可以的话输出结果是什么

```
int a = 10;
void (^block)() = ^{
    a = 20;
    NSLog(@"a = %d",a);
};
```



结果如下:

![image-20190308225448279](https://user-gold-cdn.xitu.io/2019/3/8/1695dee6803c470f?w=1770&h=280&f=jpeg&s=75077)

*思考:无法编译,为啥呢?编译的时候,block应该是会把auto变量捕获进去的,那block结构中应该有a才对啊*



```
//main函数
int main(int argc, const char * argv[]) {
    /* @autoreleasepool */ { __AtAutoreleasePool __autoreleasepool; 

        int a = 10;
        void (*block)() = ((void (*)())&__main_block_impl_0((void *)__main_block_func_0, &__main_block_desc_0_DATA, a));

    }
    return 0;
}

//block执行地址
  static void __main_block_func_0(struct __main_block_impl_0 *__cself) {
  int a = __cself->a; // bound by copy
  NSLog((NSString *)&__NSConstantStringImpl__var_folders_kh_0rp73c0s2mvfp5gjf25j5y6h0000gn_T_main_1a12fa_mi_0,a);}
```



block执行的时候,内部是 `__main_block_func_0` 函数,而a的声明,是在`main`函数,两个函数相互独立,对于他们来说,a都是一个局部变量,而且两个函数中都对a初始化,两个函数的中a不是同一个,那怎么可以在 执行函数中,修改main函数中的局部变量呢,所以编译报错!



如何改?



- **方案一:使用static**

```
static int a = 10;
void (^block)() = ^{
    a = 20;
    NSLog(@"a = %d",a);
};
```



因为static修饰的auto变量,最终在block中进行的不是值传递,而是地址传递,措意执行函数中的a 和 main 函数中的a,是同一个地址 ==> 等于同一个a,所以可以修改,输出20



但是使用static,就会变成静态变量,永远在内存中



- **方案二: 使用__blcok**

```
__block auto int a = 10;
void (^block)() = ^{
    a = 20;
    NSLog(@"a = %d",a);
};
```



```
struct __main_block_impl_0 {
  struct __block_impl impl;
  struct __main_block_desc_0* Desc;
  __Block_byref_a_0 *a; // by ref ==> auto的话,是int a,__block,变成对象了
}
```



```
struct __Block_byref_a_0 {
  void *__isa;
__Block_byref_a_0 *__forwarding;==> 指向自己的结构体
 int __flags;
 int __size;
 int a; ==> 10在这里
};
```

a = 20;最终转成 `(a->__forwarding->a) = 20;`

> 解释下:__forwarding  是指向结构体本身的指针,等价于a本身,其实就是通过a的结构体指针,拿到里面的成员a,再对他赋值
>
> 指针传递,所以可以修改 auto 变量,通过block,间接引用 auto 变量



![image-20190309205908169](https://user-gold-cdn.xitu.io/2019/3/9/16962f6575523772?w=1526&h=978&f=jpeg&s=287383)



#### __block的内存管理

- 当 block 在栈上的时候,不会对内部的__block 变量产生强硬有
- 当 block 从栈上被 copy 到堆上的时候
  - 会调用block内部的copy函数
  - copy函数内部会调用_Block_object_assign 函数
  - _Block_object_assign 函数会对 __block 变量进行一次 retain操作,产生强引用



抄图分析 :

![image-20190309210956453](https://user-gold-cdn.xitu.io/2019/3/9/16962f6581a28a56?w=832&h=400&f=jpeg&s=27226)

![image-20190309211009229](https://user-gold-cdn.xitu.io/2019/3/9/16962f657a06fcdf?w=954&h=394&f=jpeg&s=28143)



- 当block从堆中移除时
  - 会调用 block 内部的 dispose 函数
  - dispose内部会调用_Block_object_dispose函数
  - _Block_object_dispose函数会对`__block`变量进行一次release操作,如果retainCount为0,自动释放该__block变量



![image-20190309211246277](https://user-gold-cdn.xitu.io/2019/3/9/16962f6579f78ec5?w=754&h=388&f=jpeg&s=20257)

![image-20190309211257030](https://user-gold-cdn.xitu.io/2019/3/9/16962f657a5060f1?w=1018&h=438&f=jpeg&s=41360)

**总结:**

- block在栈上的时候,不会对内部的变量产生强引用
- 当block从栈上 copy 到堆上的时候,内部都会调用 __Block_object_assign
  - 如果是`__block`修饰的变量,会__block修饰的对象产生强引用
  - 如果是普通auto变量,看修饰的指针类型是strong 还是 weak(unsafe_unretained)
    - strong修饰的,block就会对内部的auto变量产生强引用
    - weak修饰的,block就不会对内部的auto变量产生强引用
  - 特别注意!上述条件仅在ARC环境下生效,如果是MRC环境下,block不会对内部auto变量产生强引用!**(MRC下不会进行retain操作)**
- 当block从堆上移除的时候,内部会调用`__Block_object_dispose `函数,相当于对`block`内部所持有的对象进行移除release操作,如果retainCount为0,自动释放该__block变量



#### __block中的 _ forwarding 指针

内存拷贝的时候,如果block从栈被copy到堆上,肯定也希望内部的变量一起存储到堆上(让变量的生命周期可控,才不会被回收)



加入变量a在栈上,在栈上的指针,指向堆上的 block,堆上的block的 forwarding指向他自己,就可以保证,修改&获取的变量,都是堆上的变量

![image-20190309213120820](https://user-gold-cdn.xitu.io/2019/3/9/16962f657a64e5e6?w=1404&h=1046&f=jpeg&s=83580)

最终,__block指向的变量,是指向堆上的



#### __block 修饰的类型



```
@implementation MNObject

- (void)dealloc{
    NSLog(@"MNObject - dealloc");
}

@end


--------------------------------------------

typedef void (^MNBlock)();

MNBlock block;
{
    MNObject *obj = [[MNObject alloc]init];
    __block __weak MNObject *weakObj = obj;
    
    block = ^{
        NSLog(@"----------%p",weakObj);
    };
}
block();

```



问,上述代码的输出顺序是?

```
2019-03-09 21:57:56.673296+0800 Block-Demo[72692:8183596] MNObject - dealloc
2019-03-09 21:57:56.673520+0800 Block-Demo[72692:8183596] ----------0x0
```



解释:ARC下

![image-20190309220353476](https://user-gold-cdn.xitu.io/2019/3/9/16962f65b2fe9473?w=1444&h=922&f=jpeg&s=274783)



上述代码,block 持有的是 weakObj,weak指针,所以block内部的__block结构体,对他内部持有的person不强引用!所以出了 小括号后,person没有被强引用,生命gg,先dealloc,输出`dealloc`,之后进行block调用,打印 ---------



**特别注意,上述逻辑进在ARC下,如果在MRC下,中间结构体对象,不会对person 进行retain操作! 即便 person 是强指针修饰,也不会对内部的person对象进行强引用!**



MRC环境下

```
MNBlock block;
{
    MNObject *obj = [[MNObject alloc]init];
    block = [^{
        NSLog(@"----------%p",obj);
    }copy];
    
    [obj release];
}
block();

[block release];

--------------------
输出:
2019-03-09 21:59:56.673296+0800 Block-Demo[72692:8183596] MNObject - dealloc
2019-03-09 21:59:56.673520+0800 Block-Demo[72692:8183596] ----------0x0
```



上述代码,obj 是 __strong 修饰,但是并没有被 block 强引用!可见MRC环境下,__修饰的对象,生成的中间block对象不会对 auto变量产生强引用。



### Block的循环应用问题

传送门:[ 实际开发中-Block导致循环引用的问题(ARC环境下)](https://www.jianshu.com/p/fc2f4d207d25)



**考题:MRC 下,block的循环引用如何解决呢?**



- **方案1:unsafe_unretained**

MRC下,没有__weak,所以只能用_unsafe_unretained指针,原理和 weak 一样(ARC环境下不推荐使用,可能导致野指针,推荐使用weak)

```
__unsafe_unretained MNObject *weakSelf = self;
self.block = [^{
    NSLog(@"----------%p",weakSelf);
}copy];
```



- **方案2: __block**

```
__block self;
self.block = [^{
    NSLog(@"----------%p",self);
}copy];
```



why? 上面关于 __block的总结 

> 特别注意!上述条件仅在ARC环境下生效,如果是MRC环境下,block不会对内部auto变量产生强引用!(MRC下不会进行retain操作)



![image-20190309224535679](https://user-gold-cdn.xitu.io/2019/3/9/16962f914228a686?w=1374&h=940&f=jpeg&s=262830)



- **方案3: 手动在block函数内将对象制空,并且必须手动保证block调用**

```
MNObject *obj = [[MNObject alloc]init];
__unsafe_unretained MNObject *weakObj = obj;
obj.block = [^{
    NSLog(@"----------%p",obj);
    obj = nil;
}copy];

obj.block();
```

![image-20190309225056495](https://user-gold-cdn.xitu.io/2019/3/9/16962f65bf4c0f7f?w=1550&h=584&f=jpeg&s=175229)



但是这个一定要注意,block必须调用,因为对象指针的清空操作,是写在block函数中的,如果没调用block,循环引用问题还是会存在,所以不推荐使用。



实际开发中,循环引用的检测工具推荐,facebook开源的 [FBRetainCycleDetector](https://github.com/facebook/FBRetainCycleDetector),用过的都说好~



---

老实说,block其实非常难,能考得特别深,本文也只是简单探究&总结下中级iOS常见的block考题,以及对Block底层的初步探究,如果是像我所在的三线城市,去面试那种非一线公司的话,如果能掌握本文,可能block相关的题目能答个八九不离十吧!*(可能题目会变换组合,但是万变不离其宗)*



block的文章其实很多,但是如果要真的深入理解,还是得动手,这里推荐初中级iOSer可以跟着本文的思路,一步一步跟着探究试试,本文只是起个抛砖引玉的作用

<br>

---

<br>



友情演出:[小马哥MJ](https://github.com/CoderMJLee)


*参考资料*

[实际开发中-Block导致循环引用的问题(ARC环境下)](https://www.jianshu.com/p/fc2f4d207d25)

[招聘一个靠谱的 iOS](https://blog.sunnyxx.com/2015/07/04/ios-interview/)

[ChenYilong/iOSInterviewQuestions](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01%E3%80%8A%E6%8B%9B%E8%81%98%E4%B8%80%E4%B8%AA%E9%9D%A0%E8%B0%B1%E7%9A%84iOS%E3%80%8B%E9%9D%A2%E8%AF%95%E9%A2%98%E5%8F%82%E8%80%83%E7%AD%94%E6%A1%88/%E3%80%8A%E6%8B%9B%E8%81%98%E4%B8%80%E4%B8%AA%E9%9D%A0%E8%B0%B1%E7%9A%84iOS%E3%80%8B%E9%9D%A2%E8%AF%95%E9%A2%98%E5%8F%82%E8%80%83%E7%AD%94%E6%A1%88%EF%BC%88%E4%B8%8B%EF%BC%89.md#45-addobserverforkeypathoptionscontext%E5%90%84%E4%B8%AA%E5%8F%82%E6%95%B0%E7%9A%84%E4%BD%9C%E7%94%A8%E5%88%86%E5%88%AB%E6%98%AF%E4%BB%80%E4%B9%88observer%E4%B8%AD%E9%9C%80%E8%A6%81%E5%AE%9E%E7%8E%B0%E5%93%AA%E4%B8%AA%E6%96%B9%E6%B3%95%E6%89%8D%E8%83%BD%E8%8E%B7%E5%BE%97kvo%E5%9B%9E%E8%B0%83)

================================================
FILE: InterView-obj-isa-class/InterView-obj-isa-class/NSObject+MNTest.h
================================================
//
//  NSObject+MNTest.h
//  InterView-obj-isa-class
//
//  Created by 梁宇航 on 2019/1/20.
//  Copyright © 2019年 梁宇航. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface NSObject (MNTest)

+ (void)checkSuperclass;

@end


================================================
FILE: InterView-obj-isa-class/InterView-obj-isa-class/NSObject+MNTest.m
================================================
//
//  NSObject+MNTest.m
//  InterView-obj-isa-class
//
//  Created by 梁宇航 on 2019/1/20.
//  Copyright © 2019年 梁宇航. All rights reserved.
//

#import "NSObject+MNTest.h"

@implementation NSObject (MNTest)

//+ (void)checkSuperclass{
//    NSLog(@"+NSObject checkSuperclass - %p",self);
//}

- (void)checkSuperclass{
    NSLog(@"-NSObject checkSuperclass - %p",self);
}

@end


================================================
FILE: InterView-obj-isa-class/InterView-obj-isa-class/main.m
================================================
//
//  main.m
//  InterView-obj-isa-class
//
//  Created by 梁宇航 on 2019/1/20.
//  Copyright © 2019年 梁宇航. All rights reserved.
//

#import <objc/runtime.h>
#import <malloc/malloc.h>
#import "NSObject+MNTest.h"

@interface MNSuperclass : NSObject

- (void)superclassInstanceMethod;
+ (void)superClassMethod;

@end

@implementation MNSuperclass

- (void)superclassInstanceMethod{
    NSLog(@"superclass-InstanceMethod - %p",self);
}

+ (void)superClassMethod{
    NSLog(@"+ superClass-classMethod- %p",self);
}

@end

@interface MNSubclass : MNSuperclass

- (void)subclassInstanceMethod;
- (void)compareSelfWithSuperclass;
@end

@implementation MNSubclass

- (void)subclassInstanceMethod{
    NSLog(@"subclassInstanceMethod- %p",self);
    
}

- (void)compareSelfWithSuperclass{
    NSLog(@"self class = %@",[self class]);
    NSLog(@"super class = %@",[super class]);
}

@end

int main(int argc, char * argv[]) {
    @autoreleasepool
    {
        MNSubclass *subclass = [[MNSubclass alloc]init];
        [subclass superclassInstanceMethod];
        NSLog(@"subclass = %p, MNSubclass = %p",subclass,[MNSubclass class]);
        
        [MNSubclass superClassMethod];
        
        //检验 - root-meta-class的superclass 是否指向 root-class
        [MNSubclass checkSuperclass];
        NSLog(@"MNSubclass = %p",[MNSubclass class]);
        
        //回答 - [self class] && [super class] 的答案
        [subclass compareSelfWithSuperclass];
        
    }
    
    return 0;
}




================================================
FILE: InterView-obj-isa-class/InterView-obj-isa-class.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 50;
	objects = {

/* Begin PBXBuildFile section */
		A793EB6421F4CECA003661CD /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = A793EB6321F4CECA003661CD /* main.m */; };
		A793EB6C21F4CEDF003661CD /* NSObject+MNTest.m in Sources */ = {isa = PBXBuildFile; fileRef = A793EB6A21F4CEDF003661CD /* NSObject+MNTest.m */; };
/* End PBXBuildFile section */

/* Begin PBXCopyFilesBuildPhase section */
		A793EB5E21F4CECA003661CD /* CopyFiles */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = /usr/share/man/man1/;
			dstSubfolderSpec = 0;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 1;
		};
/* End PBXCopyFilesBuildPhase section */

/* Begin PBXFileReference section */
		A793EB6021F4CECA003661CD /* InterView-obj-isa-class */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "InterView-obj-isa-class"; sourceTree = BUILT_PRODUCTS_DIR; };
		A793EB6321F4CECA003661CD /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
		A793EB6A21F4CEDF003661CD /* NSObject+MNTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+MNTest.m"; sourceTree = "<group>"; };
		A793EB6B21F4CEDF003661CD /* NSObject+MNTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+MNTest.h"; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		A793EB5D21F4CECA003661CD /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		A793EB5721F4CECA003661CD = {
			isa = PBXGroup;
			children = (
				A793EB6221F4CECA003661CD /* InterView-obj-isa-class */,
				A793EB6121F4CECA003661CD /* Products */,
			);
			sourceTree = "<group>";
		};
		A793EB6121F4CECA003661CD /* Products */ = {
			isa = PBXGroup;
			children = (
				A793EB6021F4CECA003661CD /* InterView-obj-isa-class */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		A793EB6221F4CECA003661CD /* InterView-obj-isa-class */ = {
			isa = PBXGroup;
			children = (
				A793EB6B21F4CEDF003661CD /* NSObject+MNTest.h */,
				A793EB6A21F4CEDF003661CD /* NSObject+MNTest.m */,
				A793EB6321F4CECA003661CD /* main.m */,
			);
			path = "InterView-obj-isa-class";
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		A793EB5F21F4CECA003661CD /* InterView-obj-isa-class */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = A793EB6721F4CECA003661CD /* Build configuration list for PBXNativeTarget "InterView-obj-isa-class" */;
			buildPhases = (
				A793EB5C21F4CECA003661CD /* Sources */,
				A793EB5D21F4CECA003661CD /* Frameworks */,
				A793EB5E21F4CECA003661CD /* CopyFiles */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = "InterView-obj-isa-class";
			productName = "InterView-obj-isa-class";
			productReference = A793EB6021F4CECA003661CD /* InterView-obj-isa-class */;
			productType = "com.apple.product-type.tool";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		A793EB5821F4CECA003661CD /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastUpgradeCheck = 0930;
				ORGANIZATIONNAME = "梁宇航";
				TargetAttributes = {
					A793EB5F21F4CECA003661CD = {
						CreatedOnToolsVersion = 9.3;
					};
				};
			};
			buildConfigurationList = A793EB5B21F4CECA003661CD /* Build configuration list for PBXProject "InterView-obj-isa-class" */;
			compatibilityVersion = "Xcode 9.3";
			developmentRegion = en;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
			);
			mainGroup = A793EB5721F4CECA003661CD;
			productRefGroup = A793EB6121F4CECA003661CD /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				A793EB5F21F4CECA003661CD /* InterView-obj-isa-class */,
			);
		};
/* End PBXProject section */

/* Begin PBXSourcesBuildPhase section */
		A793EB5C21F4CECA003661CD /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				A793EB6C21F4CEDF003661CD /* NSObject+MNTest.m in Sources */,
				A793EB6421F4CECA003661CD /* main.m in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin XCBuildConfiguration section */
		A793EB6521F4CECA003661CD /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_ENABLE_OBJC_WEAK = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				CODE_SIGN_IDENTITY = "-";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = dwarf;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				GCC_C_LANGUAGE_STANDARD = gnu11;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				MACOSX_DEPLOYMENT_TARGET = 10.13;
				MTL_ENABLE_DEBUG_INFO = YES;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = macosx;
			};
			name = Debug;
		};
		A793EB6621F4CECA003661CD /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_ENABLE_OBJC_WEAK = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				CODE_SIGN_IDENTITY = "-";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				GCC_C_LANGUAGE_STANDARD = gnu11;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				MACOSX_DEPLOYMENT_TARGET = 10.13;
				MTL_ENABLE_DEBUG_INFO = NO;
				SDKROOT = macosx;
			};
			name = Release;
		};
		A793EB6821F4CECA003661CD /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CODE_SIGN_STYLE = Automatic;
				PRODUCT_NAME = "$(TARGET_NAME)";
			};
			name = Debug;
		};
		A793EB6921F4CECA003661CD /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CODE_SIGN_STYLE = Automatic;
				PRODUCT_NAME = "$(TARGET_NAME)";
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		A793EB5B21F4CECA003661CD /* Build configuration list for PBXProject "InterView-obj-isa-class" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				A793EB6521F4CECA003661CD /* Debug */,
				A793EB6621F4CECA003661CD /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		A793EB6721F4CECA003661CD /* Build configuration list for PBXNativeTarget "InterView-obj-isa-class" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				A793EB6821F4CECA003661CD /* Debug */,
				A793EB6921F4CECA003661CD /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = A793EB5821F4CECA003661CD /* Project object */;
}


================================================
FILE: InterView-obj-isa-class/InterView-obj-isa-class.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "self:InterView-obj-isa-class.xcodeproj">
   </FileRef>
</Workspace>


================================================
FILE: InterView-obj-isa-class/InterView-obj-isa-class.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>IDEDidComputeMac32BitWarning</key>
	<true/>
</dict>
</plist>


================================================
FILE: InterView-obj-isa-class/libmalloc-166.220.1/.clang-format
================================================
# Format of this file is YAML
# Minimum clang-format version required: clang-format version 3.6.0
# Detailed description of options available at http://clang.llvm.org/docs/ClangFormatStyleOptions.html

AlignEscapedNewlinesLeft: true
# Bad:
# void foo() {
#        someFunction();
#  someOtherFunction();
# }
# Good:
# void foo() {
#    someFunction();
#    someOtherFunction();
# }

AlignTrailingComments: true
# align all comments to right based of //
# == Avoid using // based comments altogether ==

AlignAfterOpenBracket: false
# don't align after a bracket, uses indentation rules to indent

AllowAllParametersOfDeclarationOnNextLine: false
# allow funtion definition as
# someFunction(foo,
#             bar,
#             baz);

AlignConsecutiveAssignments:  false
# does not align consecutive assignments with '=' operator

AllowShortBlocksOnASingleLine: true
# single statement block can be merged on one line 
# e.g if (a) { return; }

AllowShortCaseLabelsOnASingleLine: false
# Single statement case statements should be on their own lines

AllowShortFunctionsOnASingleLine: None
# Bad:
# int foo() { return 123; }

AllowShortIfStatementsOnASingleLine: false
# Bad: 
# if (someOtherVar) return; 
# Good:
# if (someOtherVar) 
#     return;

AllowShortLoopsOnASingleLine: false
# Bad:
# while(i>0) i--;
# Good:
# while(i>0) {
#         i--;
#     }

AlwaysBreakAfterDefinitionReturnType: true
# Ensures return type is one its own line
# e.g. unsigned int
# function(char param) { }

AlwaysBreakBeforeMultilineStrings: true
# multine strings should begin on new line

BinPackArguments: true
BinPackParameters: false
# functions arguments should all be on one line or have a single line for each param

BreakBeforeBinaryOperators: None
# break for new line after binary operator in case of length is over ColumnLimit
# e.g.
# int foo = bar +
#           baz;

BreakBeforeBraces: Linux
# Always attach braces to surrounding context except -
# break before braces on function, namespace and class definitions

ColumnLimit: 132
# every body has wide screen now. 132 seems to be reasonable limit now.

ContinuationIndentWidth: 8
# indent continued lines by two tabs

IndentCaseLabels: false
# case labels have same indentation as switch statement.

IndentWidth: 4
# 4 spaces for indentation
TabWidth: 4
# tabwidth is 4 spaces

UseTab: Always
# always indent lines with tabs

IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
# remove excess empty lines at start of blocks.

PointerAlignment: Right
# "void *foo" (vs. "void* foo" or "void * foo")

SpaceAfterCStyleCast: false
# No space after (cast). E.g
# int blah = (int)((void *)foo + bar)

SpaceBeforeAssignmentOperators: true
# Assignment = should be seperated by spaces on both sides.

SpaceBeforeParens: ControlStatements
# for control statements a space is required before '{'
# Bad: for(){ statement; }
# Good: for() { statement; }

SpaceInEmptyParentheses: false
# No spaces required for empty ()

SpacesInCStyleCastParentheses: false
# No spaces required for (unsigned int) type cast

SpacesInParentheses: false

SpacesInSquareBrackets: false
# No spaces in [count] style invocations of []


================================================
FILE: InterView-obj-isa-class/libmalloc-166.220.1/.gitattributes
================================================


================================================
FILE: InterView-obj-isa-class/libmalloc-166.220.1/.gitignore
================================================
# /libmalloc.xcodeproj/
/libmalloc.xcodeproj/*.xcworkspace
/libmalloc.xcodeproj/xcuserdata


================================================
FILE: InterView-obj-isa-class/libmalloc-166.220.1/include/malloc/_malloc.h
================================================
/*
 * Copyright (c) 2018 Apple Computer, Inc. All rights reserved.
 *
 * @APPLE_LICENSE_HEADER_START@
 *
 * This file contains Original Code and/or Modifications of Original Code
 * as defined in and that are subject to the Apple Public Source License
 * Version 2.0 (the 'License'). You may not use this file except in
 * compliance with the License. Please obtain a copy of the License at
 * http://www.opensource.apple.com/apsl/ and read it before using this
 * file.
 *
 * The Original Code and all software distributed under the License are
 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
 * Please see the License for the specific language governing rights and
 * limitations under the License.
 *
 * @APPLE_LICENSE_HEADER_END@
 */

#ifndef _MALLOC_UNDERSCORE_MALLOC_H_
#define _MALLOC_UNDERSCORE_MALLOC_H_

/*
 * This header is included from <stdlib.h>, so the contents of this file have
 * broad source compatibility and POSIX conformance implications.
 * Be cautious about what is included and declared here.
 */

#include <Availability.h>
#include <sys/cdefs.h>
#include <_types.h>
#include <sys/_types/_size_t.h>

__BEGIN_DECLS

void	*malloc(size_t __size) __result_use_check __alloc_size(1);
void	*calloc(size_t __count, size_t __size) __result_use_check __alloc_size(1,2);
void	 free(void *);
void	*realloc(void *__ptr, size_t __size) __result_use_check __alloc_size(2);
#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
void	*valloc(size_t) __alloc_size(1);
#endif // !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
int 	 posix_memalign(void **__memptr, size_t __alignment, size_t __size) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);

__END_DECLS

#endif /* _MALLOC_UNDERSCORE_MALLOC_H_ */


================================================
FILE: InterView-obj-isa-class/libmalloc-166.220.1/include/malloc/malloc.h
================================================
/*
 * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
 *
 * @APPLE_LICENSE_HEADER_START@
 * 
 * This file contains Original Code and/or Modifications of Original Code
 * as defined in and that are subject to the Apple Public Source License
 * Version 2.0 (the 'License'). You may not use this file except in
 * compliance with the License. Please obtain a copy of the License at
 * http://www.opensource.apple.com/apsl/ and read it before using this
 * file.
 * 
 * The Original Code and all software distributed under the License are
 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
 * Please see the License for the specific language governing rights and
 * limitations under the License.
 * 
 * @APPLE_LICENSE_HEADER_END@
 */

#ifndef _MALLOC_MALLOC_H_
#define _MALLOC_MALLOC_H_

#include <stddef.h>
#include <mach/mach_types.h>
#include <sys/cdefs.h>
#include <Availability.h>

#if __has_feature(ptrauth_calls)
#include <ptrauth.h>

// Zone function pointer, type-diversified but not address-diversified (because
// the zone can be copied). Process-independent because the zone structure may
// be in the shared library cache.
#define MALLOC_ZONE_FN_PTR(fn) __ptrauth(ptrauth_key_process_independent_code, \
		FALSE, ptrauth_string_discriminator("malloc_zone_fn." #fn)) fn

// Introspection function pointer, address- and type-diversified.
// Process-independent because the malloc_introspection_t structure that contains
// these pointers may be in the shared library cache.
#define MALLOC_INTROSPECT_FN_PTR(fn) __ptrauth(ptrauth_key_process_independent_code, \
		TRUE, ptrauth_string_discriminator("malloc_introspect_fn." #fn)) fn

// Pointer to the introspection pointer table, type-diversified but not
// address-diversified (because the zone can be copied).
// Process-independent because the table pointer may be in the shared library cache.
#define MALLOC_INTROSPECT_TBL_PTR(ptr) __ptrauth(ptrauth_key_process_independent_data,\
		FALSE, ptrauth_string_discriminator("malloc_introspect_tbl")) ptr

#endif	// __has_feature(ptrauth_calls)

#ifndef MALLOC_ZONE_FN_PTR
#define MALLOC_ZONE_FN_PTR(fn) fn
#define MALLOC_INTROSPECT_FN_PTR(fn) fn
#define MALLOC_INTROSPECT_TBL_PTR(ptr) ptr
#endif // MALLOC_ZONE_FN_PTR

__BEGIN_DECLS
/*********	Type definitions	************/

typedef struct _malloc_zone_t {
    /* Only zone implementors should depend on the layout of this structure;
    Regular callers should use the access functions below */
    void	*reserved1;	/* RESERVED FOR CFAllocator DO NOT USE */
    void	*reserved2;	/* RESERVED FOR CFAllocator DO NOT USE */
    size_t 	(* MALLOC_ZONE_FN_PTR(size))(struct _malloc_zone_t *zone, const void *ptr); /* returns the size of a block or 0 if not in this zone; must be fast, especially for negative answers */
    void 	*(* MALLOC_ZONE_FN_PTR(malloc))(struct _malloc_zone_t *zone, size_t size);
    void 	*(* MALLOC_ZONE_FN_PTR(calloc))(struct _malloc_zone_t *zone, size_t num_items, size_t size); /* same as malloc, but block returned is set to zero */
    void 	*(* MALLOC_ZONE_FN_PTR(valloc))(struct _malloc_zone_t *zone, size_t size); /* same as malloc, but block returned is set to zero and is guaranteed to be page aligned */
    void 	(* MALLOC_ZONE_FN_PTR(free))(struct _malloc_zone_t *zone, void *ptr);
    void 	*(* MALLOC_ZONE_FN_PTR(realloc))(struct _malloc_zone_t *zone, void *ptr, size_t size);
    void 	(* MALLOC_ZONE_FN_PTR(destroy))(struct _malloc_zone_t *zone); /* zone is destroyed and all memory reclaimed */
    const char	*zone_name;

    /* Optional batch callbacks; these may be NULL */
    unsigned	(* MALLOC_ZONE_FN_PTR(batch_malloc))(struct _malloc_zone_t *zone, size_t size, void **results, unsigned num_requested); /* given a size, returns pointers capable of holding that size; returns the number of pointers allocated (maybe 0 or less than num_requested) */
    void	(* MALLOC_ZONE_FN_PTR(batch_free))(struct _malloc_zone_t *zone, void **to_be_freed, unsigned num_to_be_freed); /* frees all the pointers in to_be_freed; note that to_be_freed may be overwritten during the process */

    struct malloc_introspection_t	* MALLOC_INTROSPECT_TBL_PTR(introspect);
    unsigned	version;
    	
    /* aligned memory allocation. The callback may be NULL. Present in version >= 5. */
    void *(* MALLOC_ZONE_FN_PTR(memalign))(struct _malloc_zone_t *zone, size_t alignment, size_t size);
    
    /* free a pointer known to be in zone and known to have the given size. The callback may be NULL. Present in version >= 6.*/
    void (* MALLOC_ZONE_FN_PTR(free_definite_size))(struct _malloc_zone_t *zone, void *ptr, size_t size);

    /* Empty out caches in the face of memory pressure. The callback may be NULL. Present in version >= 8. */
    size_t 	(* MALLOC_ZONE_FN_PTR(pressure_relief))(struct _malloc_zone_t *zone, size_t goal);

	/*
	 * Checks whether an address might belong to the zone. May be NULL. Present in version >= 10.
	 * False positives are allowed (e.g. the pointer was freed, or it's in zone space that has
	 * not yet been allocated. False negatives are not allowed.
	 */
    boolean_t (* MALLOC_ZONE_FN_PTR(claimed_address))(struct _malloc_zone_t *zone, void *ptr);
} malloc_zone_t;

/*********	Creation and destruction	************/

extern malloc_zone_t *malloc_default_zone(void);
    /* The initial zone */

extern malloc_zone_t *malloc_create_zone(vm_size_t start_size, unsigned flags);
    /* Creates a new zone with default behavior and registers it */

extern void malloc_destroy_zone(malloc_zone_t *zone);
    /* Destroys zone and everything it allocated */

/*********	Block creation and manipulation	************/

extern void *malloc_zone_malloc(malloc_zone_t *zone, size_t size) __alloc_size(2);
    /* Allocates a new pointer of size size; zone must be non-NULL */

extern void *malloc_zone_calloc(malloc_zone_t *zone, size_t num_items, size_t size) __alloc_size(2,3);
    /* Allocates a new pointer of size num_items * size; block is cleared; zone must be non-NULL */

extern void *malloc_zone_valloc(malloc_zone_t *zone, size_t size) __alloc_size(2);
    /* Allocates a new pointer of size size; zone must be non-NULL; Pointer is guaranteed to be page-aligned and block is cleared */

extern void malloc_zone_free(malloc_zone_t *zone, void *ptr);
    /* Frees pointer in zone; zone must be non-NULL */

extern void *malloc_zone_realloc(malloc_zone_t *zone, void *ptr, size_t size) __alloc_size(3);
    /* Enlarges block if necessary; zone must be non-NULL */

extern malloc_zone_t *malloc_zone_from_ptr(const void *ptr);
    /* Returns the zone for a pointer, or NULL if not in any zone.
    The ptr must have been returned from a malloc or realloc call. */

extern size_t malloc_size(const void *ptr);
    /* Returns size of given ptr */

extern size_t malloc_good_size(size_t size);
    /* Returns number of bytes greater than or equal to size that can be allocated without padding */

extern void *malloc_zone_memalign(malloc_zone_t *zone, size_t alignment, size_t size) __alloc_size(3) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
    /* 
     * Allocates a new pointer of size size whose address is an exact multiple of alignment.
     * alignment must be a power of two and at least as large as sizeof(void *).
     * zone must be non-NULL.
     */

/*********	Batch methods	************/

extern unsigned malloc_zone_batch_malloc(malloc_zone_t *zone, size_t size, void **results, unsigned num_requested);
    /* Allocates num blocks of the same size; Returns the number truly allocated (may be 0) */

extern void malloc_zone_batch_free(malloc_zone_t *zone, void **to_be_freed, unsigned num);
    /* frees all the pointers in to_be_freed; note that to_be_freed may be overwritten during the process; This function will always free even if the zone has no batch callback */

/*********	Functions for libcache	************/

extern malloc_zone_t *malloc_default_purgeable_zone(void) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
    /* Returns a pointer to the default purgeable_zone. */

extern void malloc_make_purgeable(void *ptr) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
    /* Make an allocation from the purgeable zone purgeable if possible.  */

extern int malloc_make_nonpurgeable(void *ptr) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
    /* Makes an allocation from the purgeable zone nonpurgeable.
     * Returns zero if the contents were not purged since the last
     * call to malloc_make_purgeable, else returns non-zero. */

/*********	Functions for zone implementors	************/

extern void malloc_zone_register(malloc_zone_t *zone);
    /* Registers a custom malloc zone; Should typically be called after a 
     * malloc_zone_t has been filled in with custom methods by a client.  See
     * malloc_create_zone for creating additional malloc zones with the
     * default allocation and free behavior. */

extern void malloc_zone_unregister(malloc_zone_t *zone);
    /* De-registers a zone
    Should typically be called before calling the zone destruction routine */

extern void malloc_set_zone_name(malloc_zone_t *zone, const char *name);
    /* Sets the name of a zone */

extern const char *malloc_get_zone_name(malloc_zone_t *zone);
    /* Returns the name of a zone */

size_t malloc_zone_pressure_relief(malloc_zone_t *zone, size_t goal) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
    /* malloc_zone_pressure_relief() advises the malloc subsystem that the process is under memory pressure and 
     * that the subsystem should make its best effort towards releasing (i.e. munmap()-ing) "goal" bytes from "zone". 
     * If "goal" is passed as zero, the malloc subsystem will attempt to achieve maximal pressure relief in "zone". 
     * If "zone" is passed as NULL, all zones are examined for pressure relief opportunities. 
     * malloc_zone_pressure_relief() returns the number of bytes released. 
     */

typedef struct {
    vm_address_t	address;
    vm_size_t		size;
} vm_range_t;

typedef struct malloc_statistics_t {
    unsigned	blocks_in_use;
    size_t	size_in_use;
    size_t	max_size_in_use;	/* high water mark of touched memory */
    size_t	size_allocated;		/* reserved in memory */
} malloc_statistics_t;

typedef kern_return_t memory_reader_t(task_t remote_task, vm_address_t remote_address, vm_size_t size, void **local_memory);
    /* given a task, "reads" the memory at the given address and size
local_memory: set to a contiguous chunk of memory; validity of local_memory is assumed to be limited (until next call) */

#define MALLOC_PTR_IN_USE_RANGE_TYPE	1	/* for allocated pointers */
#define MALLOC_PTR_REGION_RANGE_TYPE	2	/* for region containing pointers */
#define MALLOC_ADMIN_REGION_RANGE_TYPE	4	/* for region used internally */
#define MALLOC_ZONE_SPECIFIC_FLAGS	0xff00	/* bits reserved for zone-specific purposes */

typedef void vm_range_recorder_t(task_t, void *, unsigned type, vm_range_t *, unsigned);
    /* given a task and context, "records" the specified addresses */

typedef struct malloc_introspection_t {
	kern_return_t (* MALLOC_INTROSPECT_FN_PTR(enumerator))(task_t task, void *, unsigned type_mask, vm_address_t zone_address, memory_reader_t reader, vm_range_recorder_t recorder); /* enumerates all the malloc pointers in use */
	size_t	(* MALLOC_INTROSPECT_FN_PTR(good_size))(malloc_zone_t *zone, size_t size);
	boolean_t 	(* MALLOC_INTROSPECT_FN_PTR(check))(malloc_zone_t *zone); /* Consistency checker */
	void 	(* MALLOC_INTROSPECT_FN_PTR(print))(malloc_zone_t *zone, boolean_t verbose); /* Prints zone  */
	void	(* MALLOC_INTROSPECT_FN_PTR(log))(malloc_zone_t *zone, void *address); /* Enables logging of activity */
	void	(* MALLOC_INTROSPECT_FN_PTR(force_lock))(malloc_zone_t *zone); /* Forces locking zone */
	void	(* MALLOC_INTROSPECT_FN_PTR(force_unlock))(malloc_zone_t *zone); /* Forces unlocking zone */
	void	(* MALLOC_INTROSPECT_FN_PTR(statistics))(malloc_zone_t *zone, malloc_statistics_t *stats); /* Fills statistics */
	boolean_t   (* MALLOC_INTROSPECT_FN_PTR(zone_locked))(malloc_zone_t *zone); /* Are any zone locks held */

    /* Discharge checking. Present in version >= 7. */
	boolean_t	(* MALLOC_INTROSPECT_FN_PTR(enable_discharge_checking))(malloc_zone_t *zone);
	void	(* MALLOC_INTROSPECT_FN_PTR(disable_discharge_checking))(malloc_zone_t *zone);
	void	(* MALLOC_INTROSPECT_FN_PTR(discharge))(malloc_zone_t *zone, void *memory);
#ifdef __BLOCKS__
	void     (* MALLOC_INTROSPECT_FN_PTR(enumerate_discharged_pointers))(malloc_zone_t *zone, void (^report_discharged)(void *memory, void *info));
	#else
    void	*enumerate_unavailable_without_blocks;   
#endif /* __BLOCKS__ */
	void	(* MALLOC_INTROSPECT_FN_PTR(reinit_lock))(malloc_zone_t *zone); /* Reinitialize zone locks, called only from atfork_child handler. Present in version >= 9. */
} malloc_introspection_t;

extern void malloc_printf(const char *format, ...);
    /* Convenience for logging errors and warnings;
    No allocation is performed during execution of this function;
    Only understands usual %p %d %s formats, and %y that expresses a number of bytes (5b,10KB,1MB...)
    */

/*********	Functions for performance tools	************/

extern kern_return_t malloc_get_all_zones(task_t task, memory_reader_t reader, vm_address_t **addresses, unsigned *count);
    /* Fills addresses and count with the addresses of the zones in task;
    Note that the validity of the addresses returned correspond to the validity of the memory returned by reader */

/*********	Debug helpers	************/

extern void malloc_zone_print_ptr_info(void *ptr);
    /* print to stdout if this pointer is in the malloc heap, free status, and size */

extern boolean_t malloc_zone_check(malloc_zone_t *zone);
    /* Checks zone is well formed; if !zone, checks all zones */

extern void malloc_zone_print(malloc_zone_t *zone, boolean_t verbose);
    /* Prints summary on zone; if !zone, prints all zones */

extern void malloc_zone_statistics(malloc_zone_t *zone, malloc_statistics_t *stats);
    /* Fills statistics for zone; if !zone, sums up all zones */

extern void malloc_zone_log(malloc_zone_t *zone, void *address);
    /* Controls logging of all activity; if !zone, for all zones;
    If address==0 nothing is logged;
    If address==-1 all activity is logged;
    Else only the activity regarding address is logged */

struct mstats {
    size_t	bytes_total;
    size_t	chunks_used;
    size_t	bytes_used;
    size_t	chunks_free;
    size_t	bytes_free;
};

extern struct mstats mstats(void);

extern boolean_t malloc_zone_enable_discharge_checking(malloc_zone_t *zone) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
/* Increment the discharge checking enabled counter for a zone. Returns true if the zone supports checking, false if it does not. */

extern void malloc_zone_disable_discharge_checking(malloc_zone_t *zone) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
/* Decrement the discharge checking enabled counter for a zone. */

extern void malloc_zone_discharge(malloc_zone_t *zone, void *memory) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
/* Register memory that the programmer expects to be freed soon. 
   zone may be NULL in which case the zone is determined using malloc_zone_from_ptr(). 
   If discharge checking is off for the zone this function is a no-op. */
 
#ifdef __BLOCKS__
extern void malloc_zone_enumerate_discharged_pointers(malloc_zone_t *zone, void (^report_discharged)(void *memory, void *info)) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
/* Calls report_discharged for each block that was registered using malloc_zone_discharge() but has not yet been freed. 
   info is used to provide zone defined information about the memory block. 
   If zone is NULL then the enumeration covers all zones. */
#else
extern void malloc_zone_enumerate_discharged_pointers(malloc_zone_t *zone, void *) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
#endif /* __BLOCKS__ */

__END_DECLS

#endif /* _MALLOC_MALLOC_H_ */


================================================
FILE: InterView-obj-isa-class/libmalloc-166.220.1/libmalloc.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 46;
	objects = {

/* Begin PBXAggregateTarget section */
		3FE9201116A9111000D1238A /* libmalloc */ = {
			isa = PBXAggregateTarget;
			buildConfigurationList = 3FE9201216A9111000D1238A /* Build configuration list for PBXAggregateTarget "libmalloc" */;
			buildPhases = (
				3FC1927C16DD946500315C26 /* Install Man Pages */,
				3FE9201D16A9143E00D1238A /* Sanitise Headers (rdar://problem/10241868) */,
			);
			dependencies = (
				C0CE45501C52CCBD00C24048 /* PBXTargetDependency */,
				3FE9201816A9111600D1238A /* PBXTargetDependency */,
				3FE9201616A9111400D1238A /* PBXTargetDependency */,
			);
			name = libmalloc;
			productName = libmalloc;
		};
		45039161198FFF73004EE2A3 /* libmalloc_test */ = {
			isa = PBXAggregateTarget;
			buildConfigurationList = 45039162198FFF73004EE2A3 /* Build configuration list for PBXAggregateTarget "libmalloc_test" */;
			buildPhases = (
			);
			dependencies = (
				45039168198FFFA6004EE2A3 /* PBXTargetDependency */,
				925383D91BD03D0000F745DB /* PBXTargetDependency */,
			);
			name = libmalloc_test;
			productName = libmalloc_test;
		};
		B60A57932009307E006215CB /* executables */ = {
			isa = PBXAggregateTarget;
			buildConfigurationList = B60A57962009307E006215CB /* Build configuration list for PBXAggregateTarget "executables" */;
			buildPhases = (
			);
			dependencies = (
				B60A579820093093006215CB /* PBXTargetDependency */,
			);
			name = executables;
			productName = executables;
		};
/* End PBXAggregateTarget section */

/* Begin PBXBuildFile section */
		084F5E841D50204F006CD296 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 084F5E831D50204F006CD296 /* Foundation.framework */; };
		084F5E851D502102006CD296 /* radix_tree_debug.c in Sources */ = {isa = PBXBuildFile; fileRef = 08C28B3A1D501ACC000AE997 /* radix_tree_debug.c */; };
		088C4D771D1AF049005C6B36 /* radix_tree.c in Sources */ = {isa = PBXBuildFile; fileRef = 088C4D741D1AEFB5005C6B36 /* radix_tree.c */; };
		088C4D841D1AF16F005C6B36 /* radix_tree.c in Sources */ = {isa = PBXBuildFile; fileRef = 088C4D741D1AEFB5005C6B36 /* radix_tree.c */; };
		08FEED021D501F6B00BE8A69 /* radix_tree_main.m in Sources */ = {isa = PBXBuildFile; fileRef = 08C28B421D501D2C000AE997 /* radix_tree_main.m */; };
		0D468DCF1C7BEF51006FACF5 /* magazine_lite.c in Sources */ = {isa = PBXBuildFile; fileRef = 0D468DCC1C7BEE56006FACF5 /* magazine_lite.c */; };
		0D468DD01C7BEF71006FACF5 /* stack_logging_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D468DCD1C7BEE65006FACF5 /* stack_logging_internal.h */; };
		2B67B5682040B3AF0003E78F /* _malloc.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B67B5672040B3A50003E78F /* _malloc.h */; settings = {ATTRIBUTES = (Public, ); }; };
		3D157E7420354E02001630BF /* perfdata.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D157E7320354E02001630BF /* perfdata.framework */; };
		3FE91FED16A90B9200D1238A /* bitarray.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FD116A90A8D00D1238A /* bitarray.c */; };
		3FE91FF016A90B9200D1238A /* magazine_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FD616A90A8D00D1238A /* magazine_malloc.c */; };
		3FE91FF116A90B9200D1238A /* magmallocProvider.d in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FD716A90A8D00D1238A /* magmallocProvider.d */; };
		3FE91FF216A90B9200D1238A /* malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FD816A90A8D00D1238A /* malloc.c */; };
		3FE91FF416A90B9200D1238A /* nano_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FDA16A90A8D00D1238A /* nano_malloc.c */; };
		3FE91FF616A90B9200D1238A /* stack_logging_disk.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FDC16A90A8D00D1238A /* stack_logging_disk.c */; };
		3FE91FFA16A90BEF00D1238A /* malloc.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FE91FF916A90BEF00D1238A /* malloc.h */; settings = {ATTRIBUTES = (Public, ); }; };
		3FE91FFF16A9109E00D1238A /* bitarray.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FD116A90A8D00D1238A /* bitarray.c */; };
		3FE9200116A9109E00D1238A /* magazine_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FD616A90A8D00D1238A /* magazine_malloc.c */; };
		3FE9200216A9109E00D1238A /* magmallocProvider.d in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FD716A90A8D00D1238A /* magmallocProvider.d */; };
		3FE9200316A9109E00D1238A /* malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FD816A90A8D00D1238A /* malloc.c */; };
		3FE9200416A9109E00D1238A /* nano_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FDA16A90A8D00D1238A /* nano_malloc.c */; };
		3FE9200616A9109E00D1238A /* stack_logging_disk.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FDC16A90A8D00D1238A /* stack_logging_disk.c */; };
		925383DA1BD03D5100F745DB /* stress_test.c in Sources */ = {isa = PBXBuildFile; fileRef = 925383D11BD03B4A00F745DB /* stress_test.c */; };
		B61341DE20114B660038D163 /* ktrace.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B61341DD20114B070038D163 /* ktrace.framework */; };
		B629CF28202BA149007719B9 /* nanov2_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = B68B7FA41FCDD9A500BAD1AA /* nanov2_malloc.c */; };
		B629CF2D202BB337007719B9 /* radix_tree.c in Sources */ = {isa = PBXBuildFile; fileRef = 088C4D741D1AEFB5005C6B36 /* radix_tree.c */; };
		B629CF2E202BB337007719B9 /* bitarray.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FD116A90A8D00D1238A /* bitarray.c */; };
		B629CF2F202BB337007719B9 /* purgeable_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = C957429E1BF681B00027269A /* purgeable_malloc.c */; };
		B629CF30202BB337007719B9 /* magazine_large.c in Sources */ = {isa = PBXBuildFile; fileRef = C957429B1BF672F80027269A /* magazine_large.c */; };
		B629CF31202BB337007719B9 /* magazine_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FD616A90A8D00D1238A /* magazine_malloc.c */; };
		B629CF32202BB337007719B9 /* empty.s in Sources */ = {isa = PBXBuildFile; fileRef = C9ABCA041CB6FC6800ECB399 /* empty.s */; };
		B629CF33202BB337007719B9 /* magazine_small.c in Sources */ = {isa = PBXBuildFile; fileRef = C95742981BF670D00027269A /* magazine_small.c */; };
		B629CF34202BB337007719B9 /* legacy_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = C95742AA1BF685CB0027269A /* legacy_malloc.c */; };
		B629CF35202BB337007719B9 /* magmallocProvider.d in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FD716A90A8D00D1238A /* magmallocProvider.d */; };
		B629CF36202BB337007719B9 /* malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FD816A90A8D00D1238A /* malloc.c */; };
		B629CF37202BB337007719B9 /* frozen_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = C95742A41BF6842F0027269A /* frozen_malloc.c */; };
		B629CF38202BB337007719B9 /* nanov2_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = B68B7FA41FCDD9A500BAD1AA /* nanov2_malloc.c */; };
		B629CF39202BB337007719B9 /* nano_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FDA16A90A8D00D1238A /* nano_malloc.c */; };
		B629CF3A202BB337007719B9 /* stack_logging_disk.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FDC16A90A8D00D1238A /* stack_logging_disk.c */; };
		B629CF3B202BB337007719B9 /* magazine_tiny.c in Sources */ = {isa = PBXBuildFile; fileRef = C957428F1BF419DF0027269A /* magazine_tiny.c */; };
		B629CF3C202BB337007719B9 /* nano_malloc_common.c in Sources */ = {isa = PBXBuildFile; fileRef = B68B7F9D1FCDCBC600BAD1AA /* nano_malloc_common.c */; };
		B65FBE2C2087AA2F00E21F59 /* malloc_printf.c in Sources */ = {isa = PBXBuildFile; fileRef = B65FBE2B2087AA2F00E21F59 /* malloc_printf.c */; };
		B66C71D92034BFAE0047E265 /* malloc_common.h in Headers */ = {isa = PBXBuildFile; fileRef = B66C71D72034BFAE0047E265 /* malloc_common.h */; };
		B66C71DA2034BFAE0047E265 /* malloc_common.c in Sources */ = {isa = PBXBuildFile; fileRef = B66C71D82034BFAE0047E265 /* malloc_common.c */; };
		B66C71DB2034BFD30047E265 /* malloc_common.c in Sources */ = {isa = PBXBuildFile; fileRef = B66C71D82034BFAE0047E265 /* malloc_common.c */; };
		B66C71DC2034BFD40047E265 /* malloc_common.c in Sources */ = {isa = PBXBuildFile; fileRef = B66C71D82034BFAE0047E265 /* malloc_common.c */; };
		B68B7F9E1FCDCBC600BAD1AA /* nano_malloc_common.h in Headers */ = {isa = PBXBuildFile; fileRef = B68B7F9C1FCDCBC600BAD1AA /* nano_malloc_common.h */; };
		B68B7F9F1FCDCBC600BAD1AA /* nano_malloc_common.c in Sources */ = {isa = PBXBuildFile; fileRef = B68B7F9D1FCDCBC600BAD1AA /* nano_malloc_common.c */; };
		B68B7FA01FCDCBE700BAD1AA /* nano_malloc_common.c in Sources */ = {isa = PBXBuildFile; fileRef = B68B7F9D1FCDCBC600BAD1AA /* nano_malloc_common.c */; };
		B68B7FA11FCDCBE800BAD1AA /* nano_malloc_common.c in Sources */ = {isa = PBXBuildFile; fileRef = B68B7F9D1FCDCBC600BAD1AA /* nano_malloc_common.c */; };
		B68B7FA31FCDD67100BAD1AA /* nanov2_malloc.h in Headers */ = {isa = PBXBuildFile; fileRef = B68B7FA21FCDD60F00BAD1AA /* nanov2_malloc.h */; };
		B68B7FA51FCDD9A500BAD1AA /* nanov2_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = B68B7FA41FCDD9A500BAD1AA /* nanov2_malloc.c */; };
		B68B7FA61FCDD9B200BAD1AA /* nanov2_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = B68B7FA41FCDD9A500BAD1AA /* nanov2_malloc.c */; };
		B68B7FA71FCDD9B200BAD1AA /* nanov2_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = B68B7FA41FCDD9A500BAD1AA /* nanov2_malloc.c */; };
		B6910F67202B630D00FF2EB0 /* radix_tree.c in Sources */ = {isa = PBXBuildFile; fileRef = 088C4D741D1AEFB5005C6B36 /* radix_tree.c */; };
		B6910F68202B630D00FF2EB0 /* bitarray.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FD116A90A8D00D1238A /* bitarray.c */; };
		B6910F69202B630D00FF2EB0 /* purgeable_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = C957429E1BF681B00027269A /* purgeable_malloc.c */; };
		B6910F6A202B630D00FF2EB0 /* magazine_large.c in Sources */ = {isa = PBXBuildFile; fileRef = C957429B1BF672F80027269A /* magazine_large.c */; };
		B6910F6B202B630D00FF2EB0 /* magazine_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FD616A90A8D00D1238A /* magazine_malloc.c */; };
		B6910F6C202B630D00FF2EB0 /* empty.s in Sources */ = {isa = PBXBuildFile; fileRef = C9ABCA041CB6FC6800ECB399 /* empty.s */; };
		B6910F6D202B630D00FF2EB0 /* magazine_small.c in Sources */ = {isa = PBXBuildFile; fileRef = C95742981BF670D00027269A /* magazine_small.c */; };
		B6910F6E202B630D00FF2EB0 /* legacy_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = C95742AA1BF685CB0027269A /* legacy_malloc.c */; };
		B6910F6F202B630D00FF2EB0 /* magmallocProvider.d in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FD716A90A8D00D1238A /* magmallocProvider.d */; };
		B6910F70202B630D00FF2EB0 /* malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FD816A90A8D00D1238A /* malloc.c */; };
		B6910F71202B630D00FF2EB0 /* frozen_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = C95742A41BF6842F0027269A /* frozen_malloc.c */; };
		B6910F73202B630D00FF2EB0 /* nano_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FDA16A90A8D00D1238A /* nano_malloc.c */; };
		B6910F74202B630D00FF2EB0 /* stack_logging_disk.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FDC16A90A8D00D1238A /* stack_logging_disk.c */; };
		B6910F75202B630D00FF2EB0 /* magazine_tiny.c in Sources */ = {isa = PBXBuildFile; fileRef = C957428F1BF419DF0027269A /* magazine_tiny.c */; };
		B6910F76202B630D00FF2EB0 /* nano_malloc_common.c in Sources */ = {isa = PBXBuildFile; fileRef = B68B7F9D1FCDCBC600BAD1AA /* nano_malloc_common.c */; };
		B6CA644E1FCE2C1900DEBA12 /* nanov2_zone.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CA644D1FCE2C0A00DEBA12 /* nanov2_zone.h */; };
		B6CA644F1FCE2C1A00DEBA12 /* nanov2_zone.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CA644D1FCE2C0A00DEBA12 /* nanov2_zone.h */; };
		B6CA64501FCE2C1B00DEBA12 /* nanov2_zone.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CA644D1FCE2C0A00DEBA12 /* nanov2_zone.h */; };
		B6CA64521FCF1AD200DEBA12 /* nano_zone_common.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CA64511FCF1AAD00DEBA12 /* nano_zone_common.h */; };
		B6CA64531FCF1AD400DEBA12 /* nano_zone_common.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CA64511FCF1AAD00DEBA12 /* nano_zone_common.h */; };
		B6CA64541FCF1AD400DEBA12 /* nano_zone_common.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CA64511FCF1AAD00DEBA12 /* nano_zone_common.h */; };
		B6D2ED572007D91A007AF994 /* malloc_replay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6D2ED552007D91A007AF994 /* malloc_replay.cpp */; };
		B6D5C7F1202E26F80035E376 /* resolver.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D5C7ED202E26CA0035E376 /* resolver.c */; };
		B6D5C7F2202E26F80035E376 /* resolver.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D5C7ED202E26CA0035E376 /* resolver.c */; };
		B6D5C7F3202E26F90035E376 /* resolver.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D5C7ED202E26CA0035E376 /* resolver.c */; };
		B6D5C7F4202E26F90035E376 /* resolver.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D5C7ED202E26CA0035E376 /* resolver.c */; };
		B6D5C7F5202E26FA0035E376 /* resolver.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D5C7ED202E26CA0035E376 /* resolver.c */; };
		C0352EC71C3F3C4400DB5126 /* malloc_private.h in Headers */ = {isa = PBXBuildFile; fileRef = C0352EC61C3F3C3600DB5126 /* malloc_private.h */; settings = {ATTRIBUTES = (Private, ); }; };
		C0CE45311C52C90500C24048 /* bitarray.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FD116A90A8D00D1238A /* bitarray.c */; };
		C0CE45321C52C90500C24048 /* purgeable_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = C957429E1BF681B00027269A /* purgeable_malloc.c */; };
		C0CE45331C52C90500C24048 /* magazine_large.c in Sources */ = {isa = PBXBuildFile; fileRef = C957429B1BF672F80027269A /* magazine_large.c */; };
		C0CE45341C52C90500C24048 /* magazine_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FD616A90A8D00D1238A /* magazine_malloc.c */; };
		C0CE45351C52C90500C24048 /* magazine_small.c in Sources */ = {isa = PBXBuildFile; fileRef = C95742981BF670D00027269A /* magazine_small.c */; };
		C0CE45361C52C90500C24048 /* legacy_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = C95742AA1BF685CB0027269A /* legacy_malloc.c */; };
		C0CE45371C52C90500C24048 /* magmallocProvider.d in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FD716A90A8D00D1238A /* magmallocProvider.d */; };
		C0CE45381C52C90500C24048 /* malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FD816A90A8D00D1238A /* malloc.c */; };
		C0CE45391C52C90500C24048 /* frozen_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = C95742A41BF6842F0027269A /* frozen_malloc.c */; };
		C0CE453A1C52C90500C24048 /* nano_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FDA16A90A8D00D1238A /* nano_malloc.c */; };
		C0CE453C1C52C90500C24048 /* stack_logging_disk.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FE91FDC16A90A8D00D1238A /* stack_logging_disk.c */; };
		C0CE453D1C52C90500C24048 /* magazine_tiny.c in Sources */ = {isa = PBXBuildFile; fileRef = C957428F1BF419DF0027269A /* magazine_tiny.c */; };
		C0CE45401C52C90500C24048 /* magazine_inline.h in Headers */ = {isa = PBXBuildFile; fileRef = C95742921BF41C970027269A /* magazine_inline.h */; };
		C0CE45411C52C90500C24048 /* nano_zone.h in Headers */ = {isa = PBXBuildFile; fileRef = C957427E1BF33D130027269A /* nano_zone.h */; };
		C0CE45421C52C90500C24048 /* thresholds.h in Headers */ = {isa = PBXBuildFile; fileRef = C957428C1BF411330027269A /* thresholds.h */; };
		C0CE45431C52C90500C24048 /* debug.h in Headers */ = {isa = PBXBuildFile; fileRef = C957427B1BF2C8DE0027269A /* debug.h */; };
		C0CE45441C52C90500C24048 /* frozen_malloc.h in Headers */ = {isa = PBXBuildFile; fileRef = C95742A51BF6842F0027269A /* frozen_malloc.h */; };
		C0CE45451C52C90500C24048 /* magazine_zone.h in Headers */ = {isa = PBXBuildFile; fileRef = C95742861BF3F9550027269A /* magazine_zone.h */; };
		C0CE45461C52C90500C24048 /* magazine_malloc.h in Headers */ = {isa = PBXBuildFile; fileRef = C95742951BF41E480027269A /* magazine_malloc.h */; };
		C0CE45471C52C90500C24048 /* purgeable_malloc.h in Headers */ = {isa = PBXBuildFile; fileRef = C957429F1BF681B00027269A /* purgeable_malloc.h */; };
		C0CE45481C52C90500C24048 /* base.h in Headers */ = {isa = PBXBuildFile; fileRef = C95742891BF3FD290027269A /* base.h */; };
		C0CE454E1C52C9E600C24048 /* libmalloc.a in CopyFiles */ = {isa = PBXBuildFile; fileRef = C0CE454C1C52C90500C24048 /* libmalloc.a */; };
		C932D2681D6B8D840063B19E /* vm.c in Sources */ = {isa = PBXBuildFile; fileRef = C932D2661D6B8D840063B19E /* vm.c */; };
		C932D2691D6B8D840063B19E /* vm.h in Headers */ = {isa = PBXBuildFile; fileRef = C932D2671D6B8D840063B19E /* vm.h */; };
		C938BBD31C74F7A400522BBD /* trace.h in Headers */ = {isa = PBXBuildFile; fileRef = C938BBD21C74F7A400522BBD /* trace.h */; };
		C9571C3A1C18AA1D00A67EE3 /* stack_logging.h in Headers */ = {isa = PBXBuildFile; fileRef = C9571C391C18AA1D00A67EE3 /* stack_logging.h */; settings = {ATTRIBUTES = (Private, ); }; };
		C95742721BF2C2880027269A /* bitarray.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FE91FD216A90A8D00D1238A /* bitarray.h */; };
		C95742731BF2C2880027269A /* internal.h in Headers */ = {isa = PBXBuildFile; fileRef = C957426D1BF2C0C80027269A /* internal.h */; };
		C95742741BF2C2880027269A /* locking.h in Headers */ = {isa = PBXBuildFile; fileRef = C957426E1BF2C1480027269A /* locking.h */; };
		C95742751BF2C2880027269A /* printf.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FE91FD916A90A8D00D1238A /* printf.h */; };
		C95742761BF2C2880027269A /* platform.h in Headers */ = {isa = PBXBuildFile; fileRef = C9F77BBA1BF2B84800812E13 /* platform.h */; };
		C95742771BF2C2880027269A /* legacy_malloc.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FE91FFB16A90E6C00D1238A /* legacy_malloc.h */; };
		C957427A1BF2C67E0027269A /* nano_malloc.h in Headers */ = {isa = PBXBuildFile; fileRef = C95742791BF2C5F40027269A /* nano_malloc.h */; };
		C957427C1BF2C8DE0027269A /* debug.h in Headers */ = {isa = PBXBuildFile; fileRef = C957427B1BF2C8DE0027269A /* debug.h */; };
		C957427D1BF2C8DE0027269A /* debug.h in Headers */ = {isa = PBXBuildFile; fileRef = C957427B1BF2C8DE0027269A /* debug.h */; };
		C957427F1BF33D130027269A /* nano_zone.h in Headers */ = {isa = PBXBuildFile; fileRef = C957427E1BF33D130027269A /* nano_zone.h */; };
		C95742801BF33D130027269A /* nano_zone.h in Headers */ = {isa = PBXBuildFile; fileRef = C957427E1BF33D130027269A /* nano_zone.h */; };
		C95742871BF3F9550027269A /* magazine_zone.h in Headers */ = {isa = PBXBuildFile; fileRef = C95742861BF3F9550027269A /* magazine_zone.h */; };
		C95742881BF3F9550027269A /* magazine_zone.h in Headers */ = {isa = PBXBuildFile; fileRef = C95742861BF3F9550027269A /* magazine_zone.h */; };
		C957428A1BF3FD290027269A /* base.h in Headers */ = {isa = PBXBuildFile; fileRef = C95742891BF3FD290027269A /* base.h */; };
		C957428B1BF3FD290027269A /* base.h in Headers */ = {isa = PBXBuildFile; fileRef = C95742891BF3FD290027269A /* base.h */; };
		C957428D1BF411330027269A /* thresholds.h in Headers */ = {isa = PBXBuildFile; fileRef = C957428C1BF411330027269A /* thresholds.h */; };
		C957428E1BF411330027269A /* thresholds.h in Headers */ = {isa = PBXBuildFile; fileRef = C957428C1BF411330027269A /* thresholds.h */; };
		C95742901BF419DF0027269A /* magazine_tiny.c in Sources */ = {isa = PBXBuildFile; fileRef = C957428F1BF419DF0027269A /* magazine_tiny.c */; };
		C95742911BF419DF0027269A /* magazine_tiny.c in Sources */ = {isa = PBXBuildFile; fileRef = C957428F1BF419DF0027269A /* magazine_tiny.c */; };
		C95742931BF41C970027269A /* magazine_inline.h in Headers */ = {isa = PBXBuildFile; fileRef = C95742921BF41C970027269A /* magazine_inline.h */; };
		C95742941BF41C970027269A /* magazine_inline.h in Headers */ = {isa = PBXBuildFile; fileRef = C95742921BF41C970027269A /* magazine_inline.h */; };
		C95742961BF41E480027269A /* magazine_malloc.h in Headers */ = {isa = PBXBuildFile; fileRef = C95742951BF41E480027269A /* magazine_malloc.h */; };
		C95742971BF41E480027269A /* magazine_malloc.h in Headers */ = {isa = PBXBuildFile; fileRef = C95742951BF41E480027269A /* magazine_malloc.h */; };
		C95742991BF670D00027269A /* magazine_small.c in Sources */ = {isa = PBXBuildFile; fileRef = C95742981BF670D00027269A /* magazine_small.c */; };
		C957429A1BF670D00027269A /* magazine_small.c in Sources */ = {isa = PBXBuildFile; fileRef = C95742981BF670D00027269A /* magazine_small.c */; };
		C957429C1BF672F80027269A /* magazine_large.c in Sources */ = {isa = PBXBuildFile; fileRef = C957429B1BF672F80027269A /* magazine_large.c */; };
		C957429D1BF672F80027269A /* magazine_large.c in Sources */ = {isa = PBXBuildFile; fileRef = C957429B1BF672F80027269A /* magazine_large.c */; };
		C95742A01BF681B00027269A /* purgeable_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = C957429E1BF681B00027269A /* purgeable_malloc.c */; };
		C95742A11BF681B00027269A /* purgeable_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = C957429E1BF681B00027269A /* purgeable_malloc.c */; };
		C95742A21BF681B00027269A /* purgeable_malloc.h in Headers */ = {isa = PBXBuildFile; fileRef = C957429F1BF681B00027269A /* purgeable_malloc.h */; };
		C95742A31BF681B00027269A /* purgeable_malloc.h in Headers */ = {isa = PBXBuildFile; fileRef = C957429F1BF681B00027269A /* purgeable_malloc.h */; };
		C95742A61BF6842F0027269A /* frozen_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = C95742A41BF6842F0027269A /* frozen_malloc.c */; };
		C95742A71BF6842F0027269A /* frozen_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = C95742A41BF6842F0027269A /* frozen_malloc.c */; };
		C95742A81BF6842F0027269A /* frozen_malloc.h in Headers */ = {isa = PBXBuildFile; fileRef = C95742A51BF6842F0027269A /* frozen_malloc.h */; };
		C95742A91BF6842F0027269A /* frozen_malloc.h in Headers */ = {isa = PBXBuildFile; fileRef = C95742A51BF6842F0027269A /* frozen_malloc.h */; };
		C95742AB1BF685CB0027269A /* legacy_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = C95742AA1BF685CB0027269A /* legacy_malloc.c */; };
		C95742AC1BF685CB0027269A /* legacy_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = C95742AA1BF685CB0027269A /* legacy_malloc.c */; };
		C99E320B1D6F7366005655A8 /* magazine_rack.c in Sources */ = {isa = PBXBuildFile; fileRef = C99E32091D6F7366005655A8 /* magazine_rack.c */; };
		C99E320C1D6F7366005655A8 /* magazine_rack.h in Headers */ = {isa = PBXBuildFile; fileRef = C99E320A1D6F7366005655A8 /* magazine_rack.h */; };
		C9ABCA051CB6FC6800ECB399 /* empty.s in Sources */ = {isa = PBXBuildFile; fileRef = C9ABCA041CB6FC6800ECB399 /* empty.s */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
		3FE9201516A9111400D1238A /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 3FFC1BE516A908F800027192 /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = 3FE91FFD16A9109E00D1238A;
			remoteInfo = libmalloc_eOS;
		};
		3FE9201716A9111600D1238A /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 3FFC1BE516A908F800027192 /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = 3FE91FE716A90AEC00D1238A;
			remoteInfo = libsystem_malloc;
		};
		45039167198FFFA6004EE2A3 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 3FFC1BE516A908F800027192 /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = 456E51C8197DF0D600A7E488;
			remoteInfo = libmalloc_stress_test;
		};
		925383D81BD03D0000F745DB /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 3FFC1BE516A908F800027192 /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = 925383D41BD03C0500F745DB;
			remoteInfo = darwintests;
		};
		B60A579720093093006215CB /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 3FFC1BE516A908F800027192 /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = B6D2ED492007D76F007AF994;
			remoteInfo = libmalloc_replay;
		};
		B629CF43202BB389007719B9 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 3FFC1BE516A908F800027192 /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = B629CF2B202BB337007719B9;
			remoteInfo = libmalloc_alt;
		};
		B676F4AB202B66EF00933F6D /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 3FFC1BE516A908F800027192 /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = B6910F65202B630D00FF2EB0;
			remoteInfo = libmalloc_mp;
		};
		C0CE454F1C52CCBD00C24048 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 3FFC1BE516A908F800027192 /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = C0CE452F1C52C90500C24048;
			remoteInfo = libmalloc_static;
		};
/* End PBXContainerItemProxy section */

/* Begin PBXCopyFilesBuildPhase section */
		456E51C7197DF0D600A7E488 /* CopyFiles */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = /usr/share/man/man1/;
			dstSubfolderSpec = 0;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 1;
		};
		C0CE454D1C52C9D900C24048 /* CopyFiles */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 8;
			dstPath = /usr/local/lib/loaderd;
			dstSubfolderSpec = 0;
			files = (
				C0CE454E1C52C9E600C24048 /* libmalloc.a in CopyFiles */,
			);
			runOnlyForDeploymentPostprocessing = 1;
		};
/* End PBXCopyFilesBuildPhase section */

/* Begin PBXFileReference section */
		084F5E831D50204F006CD296 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
		088C4D731D1AEFB5005C6B36 /* radix_tree_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = radix_tree_internal.h; sourceTree = "<group>"; };
		088C4D741D1AEFB5005C6B36 /* radix_tree.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = radix_tree.c; sourceTree = "<group>"; };
		088C4D751D1AEFB5005C6B36 /* radix_tree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = radix_tree.h; sourceTree = "<group>"; };
		088C4D761D1AEFC5005C6B36 /* radix_tree_test.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = radix_tree_test.m; sourceTree = "<group>"; };
		08C28B3A1D501ACC000AE997 /* radix_tree_debug.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = radix_tree_debug.c; sourceTree = "<group>"; };
		08C28B401D501D2C000AE997 /* radix-tree */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "radix-tree"; sourceTree = BUILT_PRODUCTS_DIR; };
		08C28B421D501D2C000AE997 /* radix_tree_main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = radix_tree_main.m; sourceTree = "<group>"; };
		0D468DCC1C7BEE56006FACF5 /* magazine_lite.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = magazine_lite.c; sourceTree = "<group>"; };
		0D468DCD1C7BEE65006FACF5 /* stack_logging_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stack_logging_internal.h; sourceTree = "<group>"; };
		0D468DCE1C7BEE74006FACF5 /* stack_logging_test.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stack_logging_test.c; sourceTree = "<group>"; };
		2B67B5672040B3A50003E78F /* _malloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = _malloc.h; sourceTree = "<group>"; };
		3D157E7320354E02001630BF /* perfdata.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = perfdata.framework; path = ../MacOSX10.14.Internal.sdk/System/Library/PrivateFrameworks/perfdata.framework; sourceTree = SDKROOT; };
		3FC452FF18E4ABFE003D6A38 /* manpages.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = manpages.sh; sourceTree = "<group>"; };
		3FE91FC916A90A8D00D1238A /* malloc.3 */ = {isa = PBXFileReference; lastKnownFileType = text; path = malloc.3; sourceTree = "<group>"; };
		3FE91FCA16A90A8D00D1238A /* malloc_size.3 */ = {isa = PBXFileReference; lastKnownFileType = text; path = malloc_size.3; sourceTree = "<group>"; };
		3FE91FCB16A90A8D00D1238A /* malloc_zone_malloc.3 */ = {isa = PBXFileReference; lastKnownFileType = text; path = malloc_zone_malloc.3; sourceTree = "<group>"; };
		3FE91FD116A90A8D00D1238A /* bitarray.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bitarray.c; sourceTree = "<group>"; };
		3FE91FD216A90A8D00D1238A /* bitarray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitarray.h; sourceTree = "<group>"; };
		3FE91FD616A90A8D00D1238A /* magazine_malloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = magazine_malloc.c; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.c; };
		3FE91FD716A90A8D00D1238A /* magmallocProvider.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = magmallocProvider.d; sourceTree = "<group>"; };
		3FE91FD816A90A8D00D1238A /* malloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = malloc.c; sourceTree = "<group>"; };
		3FE91FD916A90A8D00D1238A /* printf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = printf.h; sourceTree = "<group>"; };
		3FE91FDA16A90A8D00D1238A /* nano_malloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nano_malloc.c; sourceTree = "<group>"; };
		3FE91FDC16A90A8D00D1238A /* stack_logging_disk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stack_logging_disk.c; sourceTree = "<group>"; usesTabs = 1; };
		3FE91FE016A90A8D00D1238A /* libmalloc.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = libmalloc.xcconfig; sourceTree = "<group>"; };
		3FE91FE116A90A8D00D1238A /* libmalloc_eos.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = libmalloc_eos.xcconfig; sourceTree = "<group>"; };
		3FE91FE316A90A8D00D1238A /* sanitise_headers.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = sanitise_headers.sh; sourceTree = "<group>"; };
		3FE91FE816A90AEC00D1238A /* libsystem_malloc.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libsystem_malloc.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
		3FE91FF916A90BEF00D1238A /* malloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = malloc.h; sourceTree = "<group>"; };
		3FE91FFB16A90E6C00D1238A /* legacy_malloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = legacy_malloc.h; sourceTree = "<group>"; };
		3FE9201016A9109E00D1238A /* libmalloc_eOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libmalloc_eOS.a; sourceTree = BUILT_PRODUCTS_DIR; };
		456E51C9197DF0D600A7E488 /* libmalloc_stress_test */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = libmalloc_stress_test; sourceTree = BUILT_PRODUCTS_DIR; };
		8CB962B01F7E9F610046942E /* asan.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = asan.c; sourceTree = "<group>"; };
		8CB962B11F7E9FD00046942E /* tsan.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tsan.c; sourceTree = "<group>"; };
		925383D01BD03B4A00F745DB /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
		925383D11BD03B4A00F745DB /* stress_test.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stress_test.c; sourceTree = "<group>"; };
		925383D31BD03B8F00F745DB /* manpages.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = manpages.lst; sourceTree = "<group>"; };
		B61341DD20114B070038D163 /* ktrace.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ktrace.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.Internal.sdk/System/Library/PrivateFrameworks/ktrace.framework; sourceTree = DEVELOPER_DIR; };
		B629CF29202BA3C2007719B9 /* libmalloc_resolver.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = libmalloc_resolver.xcconfig; sourceTree = "<group>"; };
		B629CF42202BB337007719B9 /* libmalloc_alt.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libmalloc_alt.a; sourceTree = BUILT_PRODUCTS_DIR; };
		B629CF46202BBDEC007719B9 /* resolver_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resolver_internal.h; sourceTree = "<group>"; };
		B629CF48202BBE3B007719B9 /* resolver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = resolver.h; sourceTree = "<group>"; };
		B64E100A205311DC004C4BA6 /* malloc_size_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = malloc_size_test.c; sourceTree = "<group>"; };
		B6536A62204754B6005FBE22 /* perf_contended_malloc_free.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = perf_contended_malloc_free.c; sourceTree = "<group>"; };
		B6536A6320475BA4005FBE22 /* basic_malloc_free_perf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = basic_malloc_free_perf.c; sourceTree = "<group>"; };
		B65FBE2B2087AA2F00E21F59 /* malloc_printf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = malloc_printf.c; sourceTree = "<group>"; };
		B66AA658202A70B00019D607 /* libmalloc_resolved.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = libmalloc_resolved.xcconfig; sourceTree = "<group>"; };
		B66C71D72034BFAE0047E265 /* malloc_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = malloc_common.h; sourceTree = "<group>"; };
		B66C71D82034BFAE0047E265 /* malloc_common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = malloc_common.c; sourceTree = "<group>"; };
		B670DABD2072D0BB00139A1D /* perf_realloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = perf_realloc.c; sourceTree = "<group>"; };
		B671CFFD207578CC00EEAF20 /* libmalloc.dirty */ = {isa = PBXFileReference; lastKnownFileType = text; path = libmalloc.dirty; sourceTree = "<group>"; };
		B675F74520213D0A00B5038B /* nano_tests.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nano_tests.c; sourceTree = "<group>"; };
		B68B7F9C1FCDCBC600BAD1AA /* nano_malloc_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nano_malloc_common.h; sourceTree = "<group>"; };
		B68B7F9D1FCDCBC600BAD1AA /* nano_malloc_common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nano_malloc_common.c; sourceTree = "<group>"; };
		B68B7FA21FCDD60F00BAD1AA /* nanov2_malloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nanov2_malloc.h; sourceTree = "<group>"; };
		B68B7FA41FCDD9A500BAD1AA /* nanov2_malloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nanov2_malloc.c; sourceTree = "<group>"; };
		B6910F89202B630D00FF2EB0 /* libmalloc_mp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libmalloc_mp.a; sourceTree = BUILT_PRODUCTS_DIR; };
		B69B2B941FB3D00500FD5A8F /* magazine_malloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = magazine_malloc.c; sourceTree = "<group>"; };
		B6A414EA1FBDF01C0038DC53 /* malloc_claimed_address_tests.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = malloc_claimed_address_tests.c; sourceTree = "<group>"; };
		B6A494971F9918DD0016A799 /* calloc_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = calloc_test.c; sourceTree = "<group>"; };
		B6A9C48C1F991716007D0853 /* malloc_free_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = malloc_free_test.c; sourceTree = "<group>"; };
		B6C1C9C720D9B70F002CCC0B /* nano_trace_replay.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nano_trace_replay.c; sourceTree = "<group>"; };
		B6CA644D1FCE2C0A00DEBA12 /* nanov2_zone.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nanov2_zone.h; sourceTree = "<group>"; };
		B6CA64511FCF1AAD00DEBA12 /* nano_zone_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nano_zone_common.h; sourceTree = "<group>"; };
		B6D2ED512007D76F007AF994 /* libmalloc_replay */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = libmalloc_replay; sourceTree = BUILT_PRODUCTS_DIR; };
		B6D2ED552007D91A007AF994 /* malloc_replay.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = malloc_replay.cpp; sourceTree = "<group>"; };
		B6D2ED562007D91A007AF994 /* malloc_replay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = malloc_replay.h; sourceTree = "<group>"; };
		B6D5C7ED202E26CA0035E376 /* resolver.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = resolver.c; sourceTree = "<group>"; };
		C0352EC61C3F3C3600DB5126 /* malloc_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = malloc_private.h; sourceTree = "<group>"; };
		C0CE450E1C52B9E300C24048 /* libmalloc_static.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = libmalloc_static.xcconfig; sourceTree = "<group>"; };
		C0CE454C1C52C90500C24048 /* libmalloc.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libmalloc.a; sourceTree = BUILT_PRODUCTS_DIR; };
		C92853A01C767F08001FEAF3 /* install-codes.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "install-codes.sh"; sourceTree = "<group>"; };
		C931B58F1C81248100D0D230 /* madvise.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = madvise.c; sourceTree = "<group>"; };
		C932D2631D6B6ED40063B19E /* magazine_tiny_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = magazine_tiny_test.c; sourceTree = "<group>"; };
		C932D2641D6B73270063B19E /* dtrace.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dtrace.h; sourceTree = "<group>"; };
		C932D2661D6B8D840063B19E /* vm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vm.c; sourceTree = "<group>"; };
		C932D2671D6B8D840063B19E /* vm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vm.h; sourceTree = "<group>"; };
		C938BBD21C74F7A400522BBD /* trace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = trace.h; sourceTree = "<group>"; };
		C93F76D71D6B9F8C0088931B /* magazine_testing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = magazine_testing.h; sourceTree = "<group>"; };
		C9571C391C18AA1D00A67EE3 /* stack_logging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stack_logging.h; sourceTree = "<group>"; };
		C9571C3C1C18AD5F00A67EE3 /* balloon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = balloon.cpp; sourceTree = "<group>"; };
		C9571C3D1C18AD5F00A67EE3 /* balloon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = balloon.h; sourceTree = "<group>"; };
		C9571C3E1C18AD5F00A67EE3 /* Benchmark.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Benchmark.cpp; sourceTree = "<group>"; };
		C9571C3F1C18AD5F00A67EE3 /* Benchmark.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Benchmark.h; sourceTree = "<group>"; };
		C9571C401C18AD5F00A67EE3 /* big.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = big.cpp; sourceTree = "<group>"; };
		C9571C411C18AD5F00A67EE3 /* big.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = big.h; sourceTree = "<group>"; };
		C9571C421C18AD5F00A67EE3 /* churn.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = churn.cpp; sourceTree = "<group>"; };
		C9571C431C18AD5F00A67EE3 /* churn.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = churn.h; sourceTree = "<group>"; };
		C9571C441C18AD5F00A67EE3 /* CommandLine.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CommandLine.cpp; sourceTree = "<group>"; };
		C9571C451C18AD5F00A67EE3 /* CommandLine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommandLine.h; sourceTree = "<group>"; };
		C9571C461C18AD5F00A67EE3 /* CPUCount.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CPUCount.cpp; sourceTree = "<group>"; };
		C9571C471C18AD5F00A67EE3 /* CPUCount.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPUCount.h; sourceTree = "<group>"; };
		C9571C4C1C18AD5F00A67EE3 /* fragment.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fragment.cpp; sourceTree = "<group>"; };
		C9571C4D1C18AD5F00A67EE3 /* fragment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fragment.h; sourceTree = "<group>"; };
		C9571C4E1C18AD5F00A67EE3 /* Interpreter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Interpreter.cpp; sourceTree = "<group>"; };
		C9571C4F1C18AD5F00A67EE3 /* Interpreter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Interpreter.h; sourceTree = "<group>"; };
		C9571C501C18AD5F00A67EE3 /* list.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = list.cpp; sourceTree = "<group>"; };
		C9571C511C18AD5F00A67EE3 /* list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = list.h; sourceTree = "<group>"; };
		C9571C521C18AD5F00A67EE3 /* mbmalloc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mbmalloc.cpp; sourceTree = "<group>"; };
		C9571C531C18AD5F00A67EE3 /* mbmalloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mbmalloc.h; sourceTree = "<group>"; };
		C9571C541C18AD5F00A67EE3 /* medium.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = medium.cpp; sourceTree = "<group>"; };
		C9571C551C18AD5F00A67EE3 /* medium.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = medium.h; sourceTree = "<group>"; };
		C9571C561C18AD5F00A67EE3 /* memalign.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = memalign.cpp; sourceTree = "<group>"; };
		C9571C571C18AD5F00A67EE3 /* memalign.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memalign.h; sourceTree = "<group>"; };
		C9571C581C18AD5F00A67EE3 /* message.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = message.cpp; sourceTree = "<group>"; };
		C9571C591C18AD5F00A67EE3 /* message.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = message.h; sourceTree = "<group>"; };
		C9571C5A1C18AD5F00A67EE3 /* realloc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = realloc.cpp; sourceTree = "<group>"; };
		C9571C5B1C18AD5F00A67EE3 /* realloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = realloc.h; sourceTree = "<group>"; };
		C9571C5E1C18AD5F00A67EE3 /* stress_aligned.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stress_aligned.cpp; sourceTree = "<group>"; };
		C9571C5F1C18AD5F00A67EE3 /* stress_aligned.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stress_aligned.h; sourceTree = "<group>"; };
		C9571C601C18AD5F00A67EE3 /* stress.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stress.cpp; sourceTree = "<group>"; };
		C9571C611C18AD5F00A67EE3 /* stress.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stress.h; sourceTree = "<group>"; };
		C9571C641C18AD5F00A67EE3 /* tree.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tree.cpp; sourceTree = "<group>"; };
		C9571C651C18AD5F00A67EE3 /* tree.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tree.h; sourceTree = "<group>"; };
		C9571C661C18AD6A00A67EE3 /* MallocBench.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MallocBench.cpp; sourceTree = "<group>"; };
		C957426D1BF2C0C80027269A /* internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = internal.h; sourceTree = "<group>"; };
		C957426E1BF2C1480027269A /* locking.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = locking.h; sourceTree = "<group>"; };
		C95742791BF2C5F40027269A /* nano_malloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nano_malloc.h; sourceTree = "<group>"; };
		C957427B1BF2C8DE0027269A /* debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = "<group>"; };
		C957427E1BF33D130027269A /* nano_zone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nano_zone.h; sourceTree = "<group>"; };
		C95742861BF3F9550027269A /* magazine_zone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = magazine_zone.h; sourceTree = "<group>"; };
		C95742891BF3FD290027269A /* base.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = base.h; sourceTree = "<group>"; };
		C957428C1BF411330027269A /* thresholds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = thresholds.h; sourceTree = "<group>"; };
		C957428F1BF419DF0027269A /* magazine_tiny.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = magazine_tiny.c; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.c; };
		C95742921BF41C970027269A /* magazine_inline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = magazine_inline.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
		C95742951BF41E480027269A /* magazine_malloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = magazine_malloc.h; sourceTree = "<group>"; };
		C95742981BF670D00027269A /* magazine_small.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = magazine_small.c; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.c; };
		C957429B1BF672F80027269A /* magazine_large.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = magazine_large.c; sourceTree = "<group>"; };
		C957429E1BF681B00027269A /* purgeable_malloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = purgeable_malloc.c; sourceTree = "<group>"; };
		C957429F1BF681B00027269A /* purgeable_malloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = purgeable_malloc.h; sourceTree = "<group>"; };
		C95742A41BF6842F0027269A /* frozen_malloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = frozen_malloc.c; sourceTree = "<group>"; };
		C95742A51BF6842F0027269A /* frozen_malloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = frozen_malloc.h; sourceTree = "<group>"; };
		C95742AA1BF685CB0027269A /* legacy_malloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = legacy_malloc.c; sourceTree = "<group>"; };
		C99E32091D6F7366005655A8 /* magazine_rack.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = magazine_rack.c; sourceTree = "<group>"; };
		C99E320A1D6F7366005655A8 /* magazine_rack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = magazine_rack.h; sourceTree = "<group>"; };
		C9ABCA041CB6FC6800ECB399 /* empty.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = empty.s; sourceTree = "<group>"; };
		C9F77BBA1BF2B84800812E13 /* platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = platform.h; sourceTree = "<group>"; };
		C9F8C2681D70B521008C4044 /* magazine_small_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = magazine_small_test.c; sourceTree = "<group>"; };
		C9F8C2691D74C93A008C4044 /* magazine_rack.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = magazine_rack.c; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		08C28B3D1D501D2C000AE997 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				084F5E841D50204F006CD296 /* Foundation.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		3FE91FE516A90AEC00D1238A /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		3FE9200716A9109E00D1238A /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		456E51C6197DF0D600A7E488 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		B629CF3D202BB337007719B9 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		B6910F77202B630D00FF2EB0 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		B6D2ED4C2007D76F007AF994 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				3D157E7420354E02001630BF /* perfdata.framework in Frameworks */,
				B61341DE20114B660038D163 /* ktrace.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		C0CE453E1C52C90500C24048 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		084F5E821D50204F006CD296 /* Frameworks */ = {
			isa = PBXGroup;
			children = (
				3D157E7320354E02001630BF /* perfdata.framework */,
				B61341DD20114B070038D163 /* ktrace.framework */,
				084F5E831D50204F006CD296 /* Foundation.framework */,
			);
			name = Frameworks;
			sourceTree = "<group>";
		};
		08C28B411D501D2C000AE997 /* tools */ = {
			isa = PBXGroup;
			children = (
				08C28B421D501D2C000AE997 /* radix_tree_main.m */,
				B6D2ED552007D91A007AF994 /* malloc_replay.cpp */,
				B6D2ED562007D91A007AF994 /* malloc_replay.h */,
			);
			path = tools;
			sourceTree = "<group>";
		};
		3FE91FC816A90A8D00D1238A /* man */ = {
			isa = PBXGroup;
			children = (
				925383D31BD03B8F00F745DB /* manpages.lst */,
				3FE91FC916A90A8D00D1238A /* malloc.3 */,
				3FE91FCA16A90A8D00D1238A /* malloc_size.3 */,
				3FE91FCB16A90A8D00D1238A /* malloc_zone_malloc.3 */,
			);
			path = man;
			sourceTree = "<group>";
		};
		3FE91FCC16A90A8D00D1238A /* src */ = {
			isa = PBXGroup;
			children = (
				08C28B3A1D501ACC000AE997 /* radix_tree_debug.c */,
				088C4D731D1AEFB5005C6B36 /* radix_tree_internal.h */,
				088C4D741D1AEFB5005C6B36 /* radix_tree.c */,
				088C4D751D1AEFB5005C6B36 /* radix_tree.h */,
				C95742891BF3FD290027269A /* base.h */,
				3FE91FD116A90A8D00D1238A /* bitarray.c */,
				3FE91FD216A90A8D00D1238A /* bitarray.h */,
				C957427B1BF2C8DE0027269A /* debug.h */,
				C932D2641D6B73270063B19E /* dtrace.h */,
				C9ABCA041CB6FC6800ECB399 /* empty.s */,
				C95742A41BF6842F0027269A /* frozen_malloc.c */,
				C95742A51BF6842F0027269A /* frozen_malloc.h */,
				C957426D1BF2C0C80027269A /* internal.h */,
				C95742AA1BF685CB0027269A /* legacy_malloc.c */,
				3FE91FFB16A90E6C00D1238A /* legacy_malloc.h */,
				C957426E1BF2C1480027269A /* locking.h */,
				C95742921BF41C970027269A /* magazine_inline.h */,
				C957429B1BF672F80027269A /* magazine_large.c */,
				0D468DCC1C7BEE56006FACF5 /* magazine_lite.c */,
				3FE91FD616A90A8D00D1238A /* magazine_malloc.c */,
				C95742951BF41E480027269A /* magazine_malloc.h */,
				B65FBE2B2087AA2F00E21F59 /* malloc_printf.c */,
				C99E32091D6F7366005655A8 /* magazine_rack.c */,
				C99E320A1D6F7366005655A8 /* magazine_rack.h */,
				C95742981BF670D00027269A /* magazine_small.c */,
				C957428F1BF419DF0027269A /* magazine_tiny.c */,
				C95742861BF3F9550027269A /* magazine_zone.h */,
				3FE91FD716A90A8D00D1238A /* magmallocProvider.d */,
				3FE91FD816A90A8D00D1238A /* malloc.c */,
				B66C71D82034BFAE0047E265 /* malloc_common.c */,
				B66C71D72034BFAE0047E265 /* malloc_common.h */,
				B68B7F9D1FCDCBC600BAD1AA /* nano_malloc_common.c */,
				B68B7F9C1FCDCBC600BAD1AA /* nano_malloc_common.h */,
				3FE91FDA16A90A8D00D1238A /* nano_malloc.c */,
				C95742791BF2C5F40027269A /* nano_malloc.h */,
				C957427E1BF33D130027269A /* nano_zone.h */,
				B6CA64511FCF1AAD00DEBA12 /* nano_zone_common.h */,
				B68B7FA41FCDD9A500BAD1AA /* nanov2_malloc.c */,
				B68B7FA21FCDD60F00BAD1AA /* nanov2_malloc.h */,
				B6CA644D1FCE2C0A00DEBA12 /* nanov2_zone.h */,
				C9F77BBA1BF2B84800812E13 /* platform.h */,
				3FE91FD916A90A8D00D1238A /* printf.h */,
				C957429E1BF681B00027269A /* purgeable_malloc.c */,
				C957429F1BF681B00027269A /* purgeable_malloc.h */,
				3FE91FDC16A90A8D00D1238A /* stack_logging_disk.c */,
				0D468DCD1C7BEE65006FACF5 /* stack_logging_internal.h */,
				C957428C1BF411330027269A /* thresholds.h */,
				C938BBD21C74F7A400522BBD /* trace.h */,
				C932D2661D6B8D840063B19E /* vm.c */,
				C932D2671D6B8D840063B19E /* vm.h */,
			);
			path = src;
			sourceTree = "<group>";
		};
		3FE91FDF16A90A8D00D1238A /* xcodeconfig */ = {
			isa = PBXGroup;
			children = (
				3FE91FE016A90A8D00D1238A /* libmalloc.xcconfig */,
				3FE91FE116A90A8D00D1238A /* libmalloc_eos.xcconfig */,
				C0CE450E1C52B9E300C24048 /* libmalloc_static.xcconfig */,
				B66AA658202A70B00019D607 /* libmalloc_resolved.xcconfig */,
				B629CF29202BA3C2007719B9 /* libmalloc_resolver.xcconfig */,
				B671CFFD207578CC00EEAF20 /* libmalloc.dirty */,
			);
			path = xcodeconfig;
			sourceTree = "<group>";
		};
		3FE91FE216A90A8D00D1238A /* xcodescripts */ = {
			isa = PBXGroup;
			children = (
				3FC452FF18E4ABFE003D6A38 /* manpages.sh */,
				3FE91FE316A90A8D00D1238A /* sanitise_headers.sh */,
				C92853A01C767F08001FEAF3 /* install-codes.sh */,
			);
			path = xcodescripts;
			sourceTree = "<group>";
		};
		3FE91FE916A90AEC00D1238A /* Products */ = {
			isa = PBXGroup;
			children = (
				3FE91FE816A90AEC00D1238A /* libsystem_malloc.dylib */,
				3FE9201016A9109E00D1238A /* libmalloc_eOS.a */,
				456E51C9197DF0D600A7E488 /* libmalloc_stress_test */,
				C0CE454C1C52C90500C24048 /* libmalloc.a */,
				08C28B401D501D2C000AE997 /* radix-tree */,
				B6D2ED512007D76F007AF994 /* libmalloc_replay */,
				B6910F89202B630D00FF2EB0 /* libmalloc_mp.a */,
				B629CF42202BB337007719B9 /* libmalloc_alt.a */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		3FE91FF716A90BEF00D1238A /* include */ = {
			isa = PBXGroup;
			children = (
				3FE91FF816A90BEF00D1238A /* malloc */,
			);
			path = include;
			sourceTree = "<group>";
		};
		3FE91FF816A90BEF00D1238A /* malloc */ = {
			isa = PBXGroup;
			children = (
				2B67B5672040B3A50003E78F /* _malloc.h */,
				3FE91FF916A90BEF00D1238A /* malloc.h */,
			);
			path = malloc;
			sourceTree = "<group>";
		};
		3FFC1BE416A908F800027192 = {
			isa = PBXGroup;
			children = (
				3FE91FF716A90BEF00D1238A /* include */,
				3FE91FC816A90A8D00D1238A /* man */,
				C9571C381C18AA0A00A67EE3 /* private */,
				3FE91FCC16A90A8D00D1238A /* src */,
				B629CF45202BBDCC007719B9 /* resolver */,
				925383BD1BD03B4A00F745DB /* tests */,
				3FE91FDF16A90A8D00D1238A /* xcodeconfig */,
				3FE91FE216A90A8D00D1238A /* xcodescripts */,
				08C28B411D501D2C000AE997 /* tools */,
				3FE91FE916A90AEC00D1238A /* Products */,
				084F5E821D50204F006CD296 /* Frameworks */,
			);
			sourceTree = "<group>";
			tabWidth = 4;
			usesTabs = 1;
		};
		925383BD1BD03B4A00F745DB /* tests */ = {
			isa = PBXGroup;
			children = (
				8CB962B01F7E9F610046942E /* asan.c */,
				8CB962B11F7E9FD00046942E /* tsan.c */,
				C931B58F1C81248100D0D230 /* madvise.c */,
				C9F8C2691D74C93A008C4044 /* magazine_rack.c */,
				B6A494971F9918DD0016A799 /* calloc_test.c */,
				B6A9C48C1F991716007D0853 /* malloc_free_test.c */,
				B6A414EA1FBDF01C0038DC53 /* malloc_claimed_address_tests.c */,
				C9F8C2681D70B521008C4044 /* magazine_small_test.c */,
				B64E100A205311DC004C4BA6 /* malloc_size_test.c */,
				C93F76D71D6B9F8C0088931B /* magazine_testing.h */,
				C932D2631D6B6ED40063B19E /* magazine_tiny_test.c */,
				B69B2B941FB3D00500FD5A8F /* magazine_malloc.c */,
				925383D01BD03B4A00F745DB /* Makefile */,
				C9571C3B1C18AD4F00A67EE3 /* MallocBench */,
				C9571C661C18AD6A00A67EE3 /* MallocBench.cpp */,
				B6536A6320475BA4005FBE22 /* basic_malloc_free_perf.c */,
				B675F74520213D0A00B5038B /* nano_tests.c */,
				B6C1C9C720D9B70F002CCC0B /* nano_trace_replay.c */,
				B6536A62204754B6005FBE22 /* perf_contended_malloc_free.c */,
				B670DABD2072D0BB00139A1D /* perf_realloc.c */,
				088C4D761D1AEFC5005C6B36 /* radix_tree_test.m */,
				0D468DCE1C7BEE74006FACF5 /* stack_logging_test.c */,
				925383D11BD03B4A00F745DB /* stress_test.c */,
			);
			path = tests;
			sourceTree = "<group>";
		};
		B629CF45202BBDCC007719B9 /* resolver */ = {
			isa = PBXGroup;
			children = (
				B629CF48202BBE3B007719B9 /* resolver.h */,
				B629CF46202BBDEC007719B9 /* resolver_internal.h */,
				B6D5C7ED202E26CA0035E376 /* resolver.c */,
			);
			path = resolver;
			sourceTree = "<group>";
		};
		C9571C381C18AA0A00A67EE3 /* private */ = {
			isa = PBXGroup;
			children = (
				C9571C391C18AA1D00A67EE3 /* stack_logging.h */,
				C0352EC61C3F3C3600DB5126 /* malloc_private.h */,
			);
			path = private;
			sourceTree = "<group>";
		};
		C9571C3B1C18AD4F00A67EE3 /* MallocBench */ = {
			isa = PBXGroup;
			children = (
				C9571C3C1C18AD5F00A67EE3 /* balloon.cpp */,
				C9571C3D1C18AD5F00A67EE3 /* balloon.h */,
				C9571C3E1C18AD5F00A67EE3 /* Benchmark.cpp */,
				C9571C3F1C18AD5F00A67EE3 /* Benchmark.h */,
				C9571C401C18AD5F00A67EE3 /* big.cpp */,
				C9571C411C18AD5F00A67EE3 /* big.h */,
				C9571C421C18AD5F00A67EE3 /* churn.cpp */,
				C9571C431C18AD5F00A67EE3 /* churn.h */,
				C9571C441C18AD5F00A67EE3 /* CommandLine.cpp */,
				C9571C451C18AD5F00A67EE3 /* CommandLine.h */,
				C9571C461C18AD5F00A67EE3 /* CPUCount.cpp */,
				C9571C471C18AD5F00A67EE3 /* CPUCount.h */,
				C9571C4C1C18AD5F00A67EE3 /* fragment.cpp */,
				C9571C4D1C18AD5F00A67EE3 /* fragment.h */,
				C9571C4E1C18AD5F00A67EE3 /* Interpreter.cpp */,
				C9571C4F1C18AD5F00A67EE3 /* Interpreter.h */,
				C9571C501C18AD5F00A67EE3 /* list.cpp */,
				C9571C511C18AD5F00A67EE3 /* list.h */,
				C9571C521C18AD5F00A67EE3 /* mbmalloc.cpp */,
				C9571C531C18AD5F00A67EE3 /* mbmalloc.h */,
				C9571C541C18AD5F00A67EE3 /* medium.cpp */,
				C9571C551C18AD5F00A67EE3 /* medium.h */,
				C9571C561C18AD5F00A67EE3 /* memalign.cpp */,
				C9571C571C18AD5F00A67EE3 /* memalign.h */,
				C9571C581C18AD5F00A67EE3 /* message.cpp */,
				C9571C591C18AD5F00A67EE3 /* message.h */,
				C9571C5A1C18AD5F00A67EE3 /* realloc.cpp */,
				C9571C5B1C18AD5F00A67EE3 /* realloc.h */,
				C9571C5E1C18AD5F00A67EE3 /* stress_aligned.cpp */,
				C9571C5F1C18AD5F00A67EE3 /* stress_aligned.h */,
				C9571C601C18AD5F00A67EE3 /* stress.cpp */,
				C9571C611C18AD5F00A67EE3 /* stress.h */,
				C9571C641C18AD5F00A67EE3 /* tree.cpp */,
				C9571C651C18AD5F00A67EE3 /* tree.h */,
			);
			path = MallocBench;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXHeadersBuildPhase section */
		3FE91FE616A90AEC00D1238A /* Headers */ = {
			isa = PBXHeadersBuildPhase;
			buildActionMask = 2147483647;
			files = (
				C957428A1BF3FD290027269A /* base.h in Headers */,
				C0352EC71C3F3C4400DB5126 /* malloc_private.h in Headers */,
				0D468DD01C7BEF71006FACF5 /* stack_logging_internal.h in Headers */,
				C95742731BF2C2880027269A /* internal.h in Headers */,
				B6CA644E1FCE2C1900DEBA12 /* nanov2_zone.h in Headers */,
				C99E320C1D6F7366005655A8 /* magazine_rack.h in Headers */,
				C95742721BF2C2880027269A /* bitarray.h in Headers */,
				C932D2691D6B8D840063B19E /* vm.h in Headers */,
				B6CA64521FCF1AD200DEBA12 /* nano_zone_common.h in Headers */,
				C938BBD31C74F7A400522BBD /* trace.h in Headers */,
				C95742A81BF6842F0027269A /* frozen_malloc.h in Headers */,
				C957428D1BF411330027269A /* thresholds.h in Headers */,
				C95742741BF2C2880027269A /* locking.h in Headers */,
				C95742931BF41C970027269A /* magazine_inline.h in Headers */,
				B68B7FA31FCDD67100BAD1AA /* nanov2_malloc.h in Headers */,
				C95742761BF2C2880027269A /* platform.h in Headers */,
				C957427A1BF2C67E0027269A /* nano_malloc.h in Headers */,
				B66C71D92034BFAE0047E265 /* malloc_common.h in Headers */,
				C957427C1BF2C8DE0027269A /* debug.h in Headers */,
				2B67B5682040B3AF0003E78F /* _malloc.h in Headers */,
				C95742961BF41E480027269A /* magazine_malloc.h in Headers */,
				C9571C3A1C18AA1D00A67EE3 /* stack_logging.h in Headers */,
				3FE91FFA16A90BEF00D1238A /* malloc.h in Headers */,
				C95742871BF3F9550027269A /* magazine_zone.h in Headers */,
				C95742771BF2C2880027269A /* legacy_malloc.h in Headers */,
				C95742A21BF681B00027269A /* purgeable_malloc.h in Headers */,
				B68B7F9E1FCDCBC600BAD1AA /* nano_malloc_common.h in Headers */,
				C957427F1BF33D130027269A /* nano_zone.h in Headers */,
				C95742751BF2C2880027269A /* printf.h in Headers */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		3FE9200816A9109E00D1238A /* Headers */ = {
			isa = PBXHeadersBuildPhase;
			buildActionMask = 2147483647;
			files = (
				C95742941BF41C970027269A /* magazine_inline.h in Headers */,
				C95742801BF33D130027269A /* nano_zone.h in Headers */,
				B6CA644F1FCE2C1A00DEBA12 /* nanov2_zone.h in Headers */,
				C957428E1BF411330027269A /* thresholds.h in Headers */,
				C957427D1BF2C8DE0027269A /* debug.h in Headers */,
				C95742A91BF6842F0027269A /* frozen_malloc.h in Headers */,
				C95742881BF3F9550027269A /* magazine_zone.h in Headers */,
				C95742971BF41E480027269A /* magazine_malloc.h in Headers */,
				C95742A31BF681B00027269A /* purgeable_malloc.h in Headers */,
				C957428B1BF3FD290027269A /* base.h in Headers */,
				B6CA64531FCF1AD400DEBA12 /* nano_zone_common.h in Headers */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		C0CE453F1C52C90500C24048 /* Headers */ = {
			isa = PBXHeadersBuildPhase;
			buildActionMask = 2147483647;
			files = (
				C0CE45401C52C90500C24048 /* magazine_inline.h in Headers */,
				C0CE45411C52C90500C24048 /* nano_zone.h in Headers */,
				B6CA64501FCE2C1B00DEBA12 /* nanov2_zone.h in Headers */,
				C0CE45421C52C90500C24048 /* thresholds.h in Headers */,
				C0CE45431C52C90500C24048 /* debug.h in Headers */,
				C0CE45441C52C90500C24048 /* frozen_malloc.h in Headers */,
				C0CE45451C52C90500C24048 /* magazine_zone.h in Headers */,
				C0CE45461C52C90500C24048 /* magazine_malloc.h in Headers */,
				C0CE45471C52C90500C24048 /* purgeable_malloc.h in Headers */,
				C0CE45481C52C90500C24048 /* base.h in Headers */,
				B6CA64541FCF1AD400DEBA12 /* nano_zone_common.h in Headers */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXHeadersBuildPhase section */

/* Begin PBXLegacyTarget section */
		925383D41BD03C0500F745DB /* darwintests */ = {
			isa = PBXLegacyTarget;
			buildArgumentsString = "$(ACTION)";
			buildConfigurationList = 925383D51BD03C0500F745DB /* Build configuration list for PBXLegacyTarget "darwintests" */;
			buildPhases = (
			);
			buildToolPath = /usr/bin/make;
			buildWorkingDirectory = tests;
			dependencies = (
			);
			name = darwintests;
			passBuildSettingsInEnvironment = 1;
			productName = darwintests;
		};
/* End PBXLegacyTarget section */

/* Begin PBXNativeTarget section */
		08C28B3F1D501D2C000AE997 /* radix-tree */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 08C28B441D501D2C000AE997 /* Build configuration list for PBXNativeTarget "radix-tree" */;
			buildPhases = (
				08C28B3C1D501D2C000AE997 /* Sources */,
				08C28B3D1D501D2C000AE997 /* Frameworks */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = "radix-tree";
			productName = "radix-tree";
			productReference = 08C28B401D501D2C000AE997 /* radix-tree */;
			productType = "com.apple.product-type.tool";
		};
		3FE91FE716A90AEC00D1238A /* libsystem_malloc */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 3FE91FEA16A90AEC00D1238A /* Build configuration list for PBXNativeTarget "libsystem_malloc" */;
			buildPhases = (
				3FE91FE416A90AEC00D1238A /* Sources */,
				3FE91FE516A90AEC00D1238A /* Frameworks */,
				3FE91FE616A90AEC00D1238A /* Headers */,
				C92853A11C767F78001FEAF3 /* Install Codes File */,
			);
			buildRules = (
			);
			dependencies = (
				B676F4AC202B66EF00933F6D /* PBXTargetDependency */,
				B629CF44202BB389007719B9 /* PBXTargetDependency */,
			);
			name = libsystem_malloc;
			productName = libmalloc;
			productReference = 3FE91FE816A90AEC00D1238A /* libsystem_malloc.dylib */;
			productType = "com.apple.product-type.library.dynamic";
		};
		3FE91FFD16A9109E00D1238A /* libmalloc_eOS */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 3FE9200D16A9109E00D1238A /* Build configuration list for PBXNativeTarget "libmalloc_eOS" */;
			buildPhases = (
				3FE91FFE16A9109E00D1238A /* Sources */,
				3FE9200716A9109E00D1238A /* Frameworks */,
				3FE9200816A9109E00D1238A /* Headers */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = libmalloc_eOS;
			productName = libmalloc;
			productReference = 3FE9201016A9109E00D1238A /* libmalloc_eOS.a */;
			productType = "com.apple.product-type.library.static";
		};
		456E51C8197DF0D600A7E488 /* libmalloc_stress_test */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 456E51CF197DF0D600A7E488 /* Build configuration list for PBXNativeTarget "libmalloc_stress_test" */;
			buildPhases = (
				456E51C5197DF0D600A7E488 /* Sources */,
				456E51C6197DF0D600A7E488 /* Frameworks */,
				456E51C7197DF0D600A7E488 /* CopyFiles */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = libmalloc_stress_test;
			productName = libmalloc_stress_test;
			productReference = 456E51C9197DF0D600A7E488 /* libmalloc_stress_test */;
			productType = "com.apple.product-type.tool";
		};
		B629CF2B202BB337007719B9 /* libmalloc_alt */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = B629CF3F202BB337007719B9 /* Build configuration list for PBXNativeTarget "libmalloc_alt" */;
			buildPhases = (
				B629CF2C202BB337007719B9 /* Sources */,
				B629CF3D202BB337007719B9 /* Frameworks */,
				B629CF3E202BB337007719B9 /* Symlink normal variant */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = libmalloc_alt;
			productName = libmalloc;
			productReference = B629CF42202BB337007719B9 /* libmalloc_alt.a */;
			productType = "com.apple.product-type.library.static";
		};
		B6910F65202B630D00FF2EB0 /* libmalloc_mp */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = B6910F86202B630D00FF2EB0 /* Build configuration list for PBXNativeTarget "libmalloc_mp" */;
			buildPhases = (
				B6910F66202B630D00FF2EB0 /* Sources */,
				B6910F77202B630D00FF2EB0 /* Frameworks */,
				B629CF2A202BB226007719B9 /* Symlink normal variant */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = libmalloc_mp;
			productName = libmalloc;
			productReference = B6910F89202B630D00FF2EB0 /* libmalloc_mp.a */;
			productType = "com.apple.product-type.library.static";
		};
		B6D2ED492007D76F007AF994 /* libmalloc_replay */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = B6D2ED4E2007D76F007AF994 /* Build configuration list for PBXNativeTarget "libmalloc_replay" */;
			buildPhases = (
				B6D2ED4A2007D76F007AF994 /* Sources */,
				B6D2ED4C2007D76F007AF994 /* Frameworks */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = libmalloc_replay;
			productName = libmalloc_stress_test;
			productReference = B6D2ED512007D76F007AF994 /* libmalloc_replay */;
			productType = "com.apple.product-type.tool";
		};
		C0CE452F1C52C90500C24048 /* libmalloc_static */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = C0CE45491C52C90500C24048 /* Build configuration list for PBXNativeTarget "libmalloc_static" */;
			buildPhases = (
				C0CE45301C52C90500C24048 /* Sources */,
				C0CE453E1C52C90500C24048 /* Frameworks */,
				C0CE453F1C52C90500C24048 /* Headers */,
				C0CE454D1C52C9D900C24048 /* CopyFiles */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = libmalloc_static;
			productName = libmalloc;
			productReference = C0CE454C1C52C90500C24048 /* libmalloc.a */;
			productType = "com.apple.product-type.library.static";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		3FFC1BE516A908F800027192 /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastSwiftUpdateCheck = 0700;
				LastUpgradeCheck = 0900;
				TargetAttributes = {
					08C28B3F1D501D2C000AE997 = {
						CreatedOnToolsVersion = 8.0;
						ProvisioningStyle = Automatic;
					};
					45039161198FFF73004EE2A3 = {
						CreatedOnToolsVersion = 6.0;
					};
					456E51C8197DF0D600A7E488 = {
						CreatedOnToolsVersion = 6.0;
					};
					925383D41BD03C0500F745DB = {
						CreatedOnToolsVersion = 7.1;
					};
					B60A57932009307E006215CB = {
						CreatedOnToolsVersion = 9.3;
						ProvisioningStyle = Automatic;
					};
				};
			};
			buildConfigurationList = 3FFC1BE816A908F800027192 /* Build configuration list for PBXProject "libmalloc" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = English;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
			);
			mainGroup = 3FFC1BE416A908F800027192;
			productRefGroup = 3FE91FE916A90AEC00D1238A /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				3FE9201116A9111000D1238A /* libmalloc */,
				45039161198FFF73004EE2A3 /* libmalloc_test */,
				3FE91FE716A90AEC00D1238A /* libsystem_malloc */,
				B6910F65202B630D00FF2EB0 /* libmalloc_mp */,
				B629CF2B202BB337007719B9 /* libmalloc_alt */,
				3FE91FFD16A9109E00D1238A /* libmalloc_eOS */,
				C0CE452F1C52C90500C24048 /* libmalloc_static */,
				B6D2ED492007D76F007AF994 /* libmalloc_replay */,
				456E51C8197DF0D600A7E488 /* libmalloc_stress_test */,
				08C28B3F1D501D2C000AE997 /* radix-tree */,
				925383D41BD03C0500F745DB /* darwintests */,
				B60A57932009307E006215CB /* executables */,
			);
		};
/* End PBXProject section */

/* Begin PBXShellScriptBuildPhase section */
		3FC1927C16DD946500315C26 /* Install Man Pages */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 8;
			files = (
			);
			inputPaths = (
				"$(SRCROOT)/xcodescripts/manpages.sh",
			);
			name = "Install Man Pages";
			outputPaths = (
			);
			runOnlyForDeploymentPostprocessing = 1;
			shellPath = "/bin/bash -e";
			shellScript = ". \"${SCRIPT_INPUT_FILE_0}\"";
		};
		3FE9201D16A9143E00D1238A /* Sanitise Headers (rdar://problem/10241868) */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 8;
			files = (
			);
			inputPaths = (
				"$(SRCROOT)/xcodescripts/sanitise_headers.sh",
			);
			name = "Sanitise Headers (rdar://problem/10241868)";
			outputPaths = (
			);
			runOnlyForDeploymentPostprocessing = 1;
			shellPath = /bin/sh;
			shellScript = ". \"${SCRIPT_INPUT_FILE_0}\"";
		};
		B629CF2A202BB226007719B9 /* Symlink normal variant */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputPaths = (
			);
			name = "Symlink normal variant";
			outputPaths = (
				"$(CONFIGURATION_BUILD_DIR)/$(EXECUTABLE_PREFIX)$(PRODUCT_NAME)_normal$(EXECUTABLE_SUFFIX)",
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = "/bin/bash -e -x";
			shellScript = "ln -fs \"${EXECUTABLE_PREFIX}${PRODUCT_NAME}${EXECUTABLE_SUFFIX}\" \"${SCRIPT_OUTPUT_FILE_0}\"";
			showEnvVarsInLog = 0;
		};
		B629CF3E202BB337007719B9 /* Symlink normal variant */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputPaths = (
			);
			name = "Symlink normal variant";
			outputPaths = (
				"$(CONFIGURATION_BUILD_DIR)/$(EXECUTABLE_PREFIX)$(PRODUCT_NAME)_normal$(EXECUTABLE_SUFFIX)",
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = "/bin/bash -e -x";
			shellScript = "ln -fs \"${EXECUTABLE_PREFIX}${PRODUCT_NAME}${EXECUTABLE_SUFFIX}\" \"${SCRIPT_OUTPUT_FILE_0}\"";
			showEnvVarsInLog = 0;
		};
		C92853A11C767F78001FEAF3 /* Install Codes File */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputPaths = (
				"$(SRCROOT)/src/trace.h",
			);
			name = "Install Codes File";
			outputPaths = (
				"$(DSTROOT)/usr/local/share/misc/libmalloc.codes",
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/bash;
			shellScript = ". \"$PROJECT_DIR\"/xcodescripts/install-codes.sh";
		};
/* End PBXShellScriptBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		08C28B3C1D501D2C000AE997 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				084F5E851D502102006CD296 /* radix_tree_debug.c in Sources */,
				08FEED021D501F6B00BE8A69 /* radix_tree_main.m in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		3FE91FE416A90AEC00D1238A /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				088C4D771D1AF049005C6B36 /* radix_tree.c in Sources */,
				3FE91FED16A90B9200D1238A /* bitarray.c in Sources */,
				B66C71DA2034BFAE0047E265 /* malloc_common.c in Sources */,
				C95742A01BF681B00027269A /* purgeable_malloc.c in Sources */,
				C957429C1BF672F80027269A /* magazine_large.c in Sources */,
				3FE91FF016A90B9200D1238A /* magazine_malloc.c in Sources */,
				C95742991BF670D00027269A /* magazine_small.c in Sources */,
				C99E320B1D6F7366005655A8 /* magazine_rack.c in Sources */,
				C95742AB1BF685CB0027269A /* legacy_malloc.c in Sources */,
				C932D2681D6B8D840063B19E /* vm.c in Sources */,
				3FE91FF116A90B9200D1238A /* magmallocProvider.d in Sources */,
				0D468DCF1C7BEF51006FACF5 /* magazine_lite.c in Sources */,
				B68B7FA51FCDD9A500BAD1AA /* nanov2_malloc.c in Sources */,
				B6D5C7F1202E26F80035E376 /* resolver.c in Sources */,
				B68B7F9F1FCDCBC600BAD1AA /* nano_malloc_common.c in Sources */,
				3FE91FF216A90B9200D1238A /* malloc.c in Sources */,
				C95742A61BF6842F0027269A /* frozen_malloc.c in Sources */,
				3FE91FF416A90B9200D1238A /* nano_malloc.c in Sources */,
				3FE91FF616A90B9200D1238A /* stack_logging_disk.c in Sources */,
				C95742901BF419DF0027269A /* magazine_tiny.c in Sources */,
				B65FBE2C2087AA2F00E21F59 /* malloc_printf.c in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		3FE91FFE16A9109E00D1238A /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				B66C71DB2034BFD30047E265 /* malloc_common.c in Sources */,
				3FE91FFF16A9109E00D1238A /* bitarray.c in Sources */,
				C95742A11BF681B00027269A /* purgeable_malloc.c in Sources */,
				C957429D1BF672F80027269A /* magazine_large.c in Sources */,
				3FE9200116A9109E00D1238A /* magazine_malloc.c in Sources */,
				C957429A1BF670D00027269A /* magazine_small.c in Sources */,
				C95742AC1BF685CB0027269A /* legacy_malloc.c in Sources */,
				B68B7FA01FCDCBE700BAD1AA /* nano_malloc_common.c in Sources */,
				B68B7FA61FCDD9B200BAD1AA /* nanov2_malloc.c in Sources */,
				3FE9200216A9109E00D1238A /* magmallocProvider.d in Sources */,
				3FE9200316A9109E00D1238A /* malloc.c in Sources */,
				C95742A71BF6842F0027269A /* frozen_malloc.c in Sources */,
				3FE9200416A9109E00D1238A /* nano_malloc.c in Sources */,
				3FE9200616A9109E00D1238A /* stack_logging_disk.c in Sources */,
				C95742911BF419DF0027269A /* magazine_tiny.c in Sources */,
				B6D5C7F4202E26F90035E376 /* resolver.c in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		456E51C5197DF0D600A7E488 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				925383DA1BD03D5100F745DB /* stress_test.c in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		B629CF2C202BB337007719B9 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				B629CF2D202BB337007719B9 /* radix_tree.c in Sources */,
				B629CF2E202BB337007719B9 /* bitarray.c in Sources */,
				B629CF2F202BB337007719B9 /* purgeable_malloc.c in Sources */,
				B6D5C7F3202E26F90035E376 /* resolver.c in Sources */,
				B629CF30202BB337007719B9 /* magazine_large.c in Sources */,
				B629CF31202BB337007719B9 /* magazine_malloc.c in Sources */,
				B629CF32202BB337007719B9 /* empty.s in Sources */,
				B629CF33202BB337007719B9 /* magazine_small.c in Sources */,
				B629CF34202BB337007719B9 /* legacy_malloc.c in Sources */,
				B629CF35202BB337007719B9 /* magmallocProvider.d in Sources */,
				B629CF36202BB337007719B9 /* malloc.c in Sources */,
				B629CF37202BB337007719B9 /* frozen_malloc.c in Sources */,
				B629CF38202BB337007719B9 /* nanov2_malloc.c in Sources */,
				B629CF39202BB337007719B9 /* nano_malloc.c in Sources */,
				B629CF3A202BB337007719B9 /* stack_logging_disk.c in Sources */,
				B629CF3B202BB337007719B9 /* magazine_tiny.c in Sources */,
				B629CF3C202BB337007719B9 /* nano_malloc_common.c in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		B6910F66202B630D00FF2EB0 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				B6910F67202B630D00FF2EB0 /* radix_tree.c in Sources */,
				B6910F68202B630D00FF2EB0 /* bitarray.c in Sources */,
				B6910F69202B630D00FF2EB0 /* purgeable_malloc.c in Sources */,
				B6D5C7F2202E26F80035E376 /* resolver.c in Sources */,
				B6910F6A202B630D00FF2EB0 /* magazine_large.c in Sources */,
				B6910F6B202B630D00FF2EB0 /* magazine_malloc.c in Sources */,
				B6910F6C202B630D00FF2EB0 /* empty.s in Sources */,
				B6910F6D202B630D00FF2EB0 /* magazine_small.c in Sources */,
				B6910F6E202B630D00FF2EB0 /* legacy_malloc.c in Sources */,
				B6910F6F202B630D00FF2EB0 /* magmallocProvider.d in Sources */,
				B6910F70202B630D00FF2EB0 /* malloc.c in Sources */,
				B6910F71202B630D00FF2EB0 /* frozen_malloc.c in Sources */,
				B629CF28202BA149007719B9 /* nanov2_malloc.c in Sources */,
				B6910F73202B630D00FF2EB0 /* nano_malloc.c in Sources */,
				B6910F74202B630D00FF2EB0 /* stack_logging_disk.c in Sources */,
				B6910F75202B630D00FF2EB0 /* magazine_tiny.c in Sources */,
				B6910F76202B630D00FF2EB0 /* nano_malloc_common.c in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		B6D2ED4A2007D76F007AF994 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				B6D2ED572007D91A007AF994 /* malloc_replay.cpp in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		C0CE45301C52C90500C24048 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				088C4D841D1AF16F005C6B36 /* radix_tree.c in Sources */,
				C0CE45311C52C90500C24048 /* bitarray.c in Sources */,
				C0CE45321C52C90500C24048 /* purgeable_malloc.c in Sources */,
				B6D5C7F5202E26FA0035E376 /* resolver.c in Sources */,
				C0CE45331C52C90500C24048 /* magazine_large.c in Sources */,
				C0CE45341C52C90500C24048 /* magazine_malloc.c in Sources */,
				C9ABCA051CB6FC6800ECB399 /* empty.s in Sources */,
				C0CE45351C52C90500C24048 /* magazine_small.c in Sources */,
				C0CE45361C52C90500C24048 /* legacy_malloc.c in Sources */,
				C0CE45371C52C90500C24048 /* magmallocProvider.d in Sources */,
				C0CE45381C52C90500C24048 /* malloc.c in Sources */,
				C0CE45391C52C90500C24048 /* frozen_malloc.c in Sources */,
				B68B7FA71FCDD9B200BAD1AA /* nanov2_malloc.c in Sources */,
				B66C71DC2034BFD40047E265 /* malloc_common.c in Sources */,
				C0CE453A1C52C90500C24048 /* nano_malloc.c in Sources */,
				C0CE453C1C52C90500C24048 /* stack_logging_disk.c in Sources */,
				C0CE453D1C52C90500C24048 /* magazine_tiny.c in Sources */,
				B68B7FA11FCDCBE800BAD1AA /* nano_malloc_common.c in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin PBXTargetDependency section */
		3FE9201616A9111400D1238A /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = 3FE91FFD16A9109E00D1238A /* libmalloc_eOS */;
			targetProxy = 3FE9201516A9111400D1238A /* PBXContainerItemProxy */;
		};
		3FE9201816A9111600D1238A /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = 3FE91FE716A90AEC00D1238A /* libsystem_malloc */;
			targetProxy = 3FE9201716A9111600D1238A /* PBXContainerItemProxy */;
		};
		45039168198FFFA6004EE2A3 /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = 456E51C8197DF0D600A7E488 /* libmalloc_stress_test */;
			targetProxy = 45039167198FFFA6004EE2A3 /* PBXContainerItemProxy */;
		};
		925383D91BD03D0000F745DB /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = 925383D41BD03C0500F745DB /* darwintests */;
			targetProxy = 925383D81BD03D0000F745DB /* PBXContainerItemProxy */;
		};
		B60A579820093093006215CB /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = B6D2ED492007D76F007AF994 /* libmalloc_replay */;
			targetProxy = B60A579720093093006215CB /* PBXContainerItemProxy */;
		};
		B629CF44202BB389007719B9 /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = B629CF2B202BB337007719B9 /* libmalloc_alt */;
			targetProxy = B629CF43202BB389007719B9 /* PBXContainerItemProxy */;
		};
		B676F4AC202B66EF00933F6D /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = B6910F65202B630D00FF2EB0 /* libmalloc_mp */;
			targetProxy = B676F4AB202B66EF00933F6D /* PBXContainerItemProxy */;
		};
		C0CE45501C52CCBD00C24048 /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = C0CE452F1C52C90500C24048 /* libmalloc_static */;
			targetProxy = C0CE454F1C52CCBD00C24048 /* PBXContainerItemProxy */;
		};
/* End PBXTargetDependency section */

/* Begin XCBuildConfiguration section */
		08C28B451D501D2C000AE997 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				PRODUCT_NAME = "$(TARGET_NAME)";
			};
			name = Debug;
		};
		08C28B461D501D2C000AE997 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				PRODUCT_NAME = "$(TARGET_NAME)";
			};
			name = Release;
		};
		3FE91FEB16A90AEC00D1238A /* Debug */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = B629CF29202BA3C2007719B9 /* libmalloc_resolver.xcconfig */;
			buildSettings = {
				COMBINE_HIDPI_IMAGES = YES;
			};
			name = Debug;
		};
		3FE91FEC16A90AEC00D1238A /* Release */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = B629CF29202BA3C2007719B9 /* libmalloc_resolver.xcconfig */;
			buildSettings = {
				COMBINE_HIDPI_IMAGES = YES;
			};
			name = Release;
		};
		3FE9200E16A9109E00D1238A /* Debug */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = 3FE91FE116A90A8D00D1238A /* libmalloc_eos.xcconfig */;
			buildSettings = {
				COMBINE_HIDPI_IMAGES = YES;
			};
			name = Debug;
		};
		3FE9200F16A9109E00D1238A /* Release */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = 3FE91FE116A90A8D00D1238A /* libmalloc_eos.xcconfig */;
			buildSettings = {
				COMBINE_HIDPI_IMAGES = YES;
			};
			name = Release;
		};
		3FE9201316A9111000D1238A /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				COMBINE_HIDPI_IMAGES = YES;
				PRODUCT_NAME = "$(TARGET_NAME)";
			};
			name = Debug;
		};
		3FE9201416A9111000D1238A /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				COMBINE_HIDPI_IMAGES = YES;
				PRODUCT_NAME = "$(TARGET_NAME)";
			};
			name = Release;
		};
		3FFC1BE916A908F800027192 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ONLY_ACTIVE_ARCH = YES;
			};
			name = Debug;
		};
		3FFC1BEA16A908F800027192 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
			};
			name = Release;
		};
		45039163198FFF73004EE2A3 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				PRODUCT_NAME = "$(TARGET_NAME)";
			};
			name = Debug;
		};
		45039164198FFF73004EE2A3 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				PRODUCT_NAME = "$(TARGET_NAME)";
			};
			name = Release;
		};
		456E51CD197DF0D600A7E488 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				COPY_PHASE_STRIP = NO;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SDKROOT = macosx.internal;
				SUPPORTED_PLATFORMS = "macosx iphoneos appletvos watchos";
			};
			name = Debug;
		};
		456E51CE197DF0D600A7E488 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SDKROOT = macosx.internal;
				"SKIP_INSTALL[sdk=iphonesimulator*]" = YES;
				SUPPORTED_PLATFORMS = "macosx iphoneos appletvos watchos";
			};
			name = Release;
		};
		925383D61BD03C0500F745DB /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				PRODUCT_NAME = "$(TARGET_NAME)";
				SDKROOT = macosx.internal;
				SUPPORTED_PLATFORMS = "macosx iphoneos appletvos watchos";
			};
			name = Debug;
		};
		925383D71BD03C0500F745DB /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				PRODUCT_NAME = "$(TARGET_NAME)";
				SDKROOT = macosx.internal;
				SUPPORTED_PLATFORMS = "macosx iphoneos appletvos watchos";
			};
			name = Release;
		};
		B60A57942009307E006215CB /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CODE_SIGN_STYLE = Automatic;
				PRODUCT_NAME = "$(TARGET_NAME)";
			};
			name = Debug;
		};
		B60A57952009307E006215CB /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CODE_SIGN_STYLE = Automatic;
				PRODUCT_NAME = "$(TARGET_NAME)";
			};
			name = Release;
		};
		B629CF40202BB337007719B9 /* Debug */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = B66AA658202A70B00019D607 /* libmalloc_resolved.xcconfig */;
			buildSettings = {
				COMBINE_HIDPI_IMAGES = YES;
				PRODUCT_NAME = "$(PRODUCT_NAME)";
				RESOLVED_VARIANT = alt;
			};
			name = Debug;
		};
		B629CF41202BB337007719B9 /* Release */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = B66AA658202A70B00019D607 /* libmalloc_resolved.xcconfig */;
			buildSettings = {
				COMBINE_HIDPI_IMAGES = YES;
				PRODUCT_NAME = "$(PRODUCT_NAME)";
				RESOLVED_VARIANT = alt;
			};
			name = Release;
		};
		B6910F87202B630D00FF2EB0 /* Debug */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = B66AA658202A70B00019D607 /* libmalloc_resolved.xcconfig */;
			buildSettings = {
				COMBINE_HIDPI_IMAGES = YES;
				PRODUCT_NAME = "$(PRODUCT_NAME)";
				RESOLVED_VARIANT = mp;
			};
			name = Debug;
		};
		B6910F88202B630D00FF2EB0 /* Release */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = B66AA658202A70B00019D607 /* libmalloc_resolved.xcconfig */;
			buildSettings = {
				COMBINE_HIDPI_IMAGES = YES;
				PRODUCT_NAME = "$(PRODUCT_NAME)";
				RESOLVED_VARIANT = mp;
			};
			name = Release;
		};
		B6D2ED4F2007D76F007AF994 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				COPY_PHASE_STRIP = NO;
				FRAMEWORK_SEARCH_PATHS = (
					"$(SDKROOT)/System/Library/PrivateFrameworks",
					"$(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks",
				);
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				HEADER_SEARCH_PATHS = "$(SRCROOT)/src";
				PRODUCT_NAME = "$(TARGET_NAME)";
				SDKROOT = macosx.internal;
				SUPPORTED_PLATFORMS = "macosx iphoneos iphonesimulator appletvos appletvsimulator watchos watchsimulator";
				VALID_ARCHS = "armv6 armv7 arm64 arm64_32 armv7k x86_64 x86_64h";
			};
			name = Debug;
		};
		B6D2ED502007D76F007AF994 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				FRAMEWORK_SEARCH_PATHS = (
					"$(SDKROOT)/System/Library/PrivateFrameworks",
					"$(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks",
				);
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				HEADER_SEARCH_PATHS = "$(SRCROOT)/src";
				PRODUCT_NAME = "$(TARGET_NAME)";
				SDKROOT = macosx.internal;
				"SKIP_INSTALL[sdk=iphonesimulator*]" = YES;
				SUPPORTED_PLATFORMS = "macosx iphoneos iphonesimulator appletvos appletvsimulator watchos watchsimulator";
				VALID_ARCHS = "armv6 armv7 arm64 arm64_32 armv7k x86_64 x86_64h";
			};
			name = Release;
		};
		C0CE454A1C52C90500C24048 /* Debug */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = C0CE450E1C52B9E300C24048 /* libmalloc_static.xcconfig */;
			buildSettings = {
				COMBINE_HIDPI_IMAGES = YES;
				PRODUCT_NAME = "$(PRODUCT_NAME)";
			};
			name = Debug;
		};
		C0CE454B1C52C90500C24048 /* Release */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = C0CE450E1C52B9E300C24048 /* libmalloc_static.xcconfig */;
			buildSettings = {
				COMBINE_HIDPI_IMAGES = YES;
				PRODUCT_NAME = "$(PRODUCT_NAME)";
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		08C28B441D501D2C000AE997 /* Build configuration list for PBXNativeTarget "radix-tree" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				08C28B451D501D2C000AE997 /* Debug */,
				08C28B461D501D2C000AE997 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		3FE91FEA16A90AEC00D1238A /* Build configuration list for PBXNativeTarget "libsystem_malloc" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				3FE91FEB16A90AEC00D1238A /* Debug */,
				3FE91FEC16A90AEC00D1238A /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		3FE9200D16A9109E00D1238A /* Build configuration list for PBXNativeTarget "libmalloc_eOS" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				3FE9200E16A9109E00D1238A /* Debug */,
				3FE9200F16A9109E00D1238A /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		3FE9201216A9111000D1238A /* Build configuration list for PBXAggregateTarget "libmalloc" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				3FE9201316A9111000D1238A /* Debug */,
				3FE9201416A9111000D1238A /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		3FFC1BE816A908F800027192 /* Build configuration list for PBXProject "libmalloc" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				3FFC1BE916A908F800027192 /* Debug */,
				3FFC1BEA16A908F800027192 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		45039162198FFF73004EE2A3 /* Build configuration list for PBXAggregateTarget "libmalloc_test" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				45039163198FFF73004EE2A3 /* Debug */,
				45039164198FFF73004EE2A3 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		456E51CF197DF0D600A7E488 /* Build configuration list for PBXNativeTarget "libmalloc_stress_test" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				456E51CD197DF0D600A7E488 /* Debug */,
				456E51CE197DF0D600A7E488 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		925383D51BD03C0500F745DB /* Build configuration list for PBXLegacyTarget "darwintests" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				925383D61BD03C0500F745DB /* Debug */,
				925383D71BD03C0500F745DB /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		B60A57962009307E006215CB /* Build configuration list for PBXAggregateTarget "executables" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				B60A57942009307E006215CB /* Debug */,
				B60A57952009307E006215CB /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		B629CF3F202BB337007719B9 /* Build configuration list for PBXNativeTarget "libmalloc_alt" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				B629CF40202BB337007719B9 /* Debug */,
				B629CF41202BB337007719B9 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		B6910F86202B630D00FF2EB0 /* Build configuration list for PBXNativeTarget "libmalloc_mp" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				B6910F87202B630D00FF2EB0 /* Debug */,
				B6910F88202B630D00FF2EB0 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		B6D2ED4E2007D76F007AF994 /* Build configuration list for PBXNativeTarget "libmalloc_replay" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				B6D2ED4F2007D76F007AF994 /* Debug */,
				B6D2ED502007D76F007AF994 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		C0CE45491C52C90500C24048 /* Build configuration list for PBXNativeTarget "libmalloc_static" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				C0CE454A1C52C90500C24048 /* Debug */,
				C0CE454B1C52C90500C24048 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = 3FFC1BE516A908F800027192 /* Project object */;
}


================================================
FILE: InterView-obj-isa-class/libmalloc-166.220.1/man/malloc.3
================================================
.\" Copyright (c) 2006 Apple Computer, Inc.  All rights reserved.
.\"
.\" @APPLE_LICENSE_HEADER_START@
.\"
.\" The contents of this file constitute Original Code as defined in and
.\" are subject to the Apple Public Source License Version 1.1 (the
.\" "License").  You may not use this file except in compliance with the
.\" License.  Please obtain a copy of the License at
.\" http://www.apple.com/publicsource and read it before using this file.
.\"
.\" This Original Code and all software distributed under the License are
.\" distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
.\" EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
.\" INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
.\" FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
.\" License for the specific language governing rights and limitations
.\" under the License.
.\"
.\" @APPLE_LICENSE_HEADER_END@
.\"
.Dd Aug 13, 2008
.Dt MALLOC 3
.Os
.Sh NAME
.Nm calloc ,
.Nm free ,
.Nm malloc ,
.Nm realloc ,
.Nm reallocf ,
.Nm valloc
.Nd memory allocation
.Sh SYNOPSIS
.In stdlib.h
.Ft void *
.Fo calloc
.Fa "size_t count"
.Fa "size_t size"
.Fc
.Ft void
.Fo free
.Fa "void *ptr"
.Fc
.Ft void *
.Fo malloc
.Fa "size_t size"
.Fc
.Ft void *
.Fo realloc
.Fa "void *ptr"
.Fa "size_t size"
.Fc
.Ft void *
.Fo reallocf
.Fa "void *ptr"
.Fa "size_t size"
.Fc
.Ft void *
.Fo valloc
.Fa "size_t size"
.Fc
.Sh DESCRIPTION
The
.Fn malloc ,
.Fn calloc ,
.Fn valloc ,
.Fn realloc ,
and
.Fn reallocf
functions allocate memory.
The allocated memory is aligned such that it can be used for any data type,
including AltiVec- and SSE-related types.
The
.Fn free
function frees allocations that were created via the preceding allocation
functions.
.Pp
The
.Fn malloc
function allocates
.Fa size
bytes of memory and returns a pointer to the allocated memory.
.Pp
The
.Fn calloc
function contiguously allocates enough space for
.Fa count
objects that are
.Fa size
bytes of memory each and returns a pointer to the allocated memory.
The allocated memory is filled with bytes of value zero.
.Pp
The
.Fn valloc
function allocates
.Fa size
bytes of memory and returns a pointer to the allocated memory.
The allocated memory is aligned on a page boundary.
.Pp
The
.Fn realloc
function tries to change the size of the allocation pointed to by
.Fa ptr
to
.Fa size ,
and returns
.Fa ptr .
If there is not enough room to enlarge the memory allocation pointed to by
.Fa ptr ,
.Fn realloc
creates a new allocation, copies as much of the old data pointed to by
.Fa ptr
as will fit to the new allocation, frees the old allocation, and returns a
pointer to the allocated memory.
If
.Fa ptr
is 
.Dv NULL ,
.Fn realloc
is identical to a call to 
.Fn malloc
for 
.Fa size
bytes.
If
.Fa size
is zero and 
.Fa ptr
is not 
.Dv NULL ,
a new, minimum sized object is allocated and the original object is freed.
When extending a region allocated with calloc(3), realloc(3) does not guarantee 
that the additional memory is also zero-filled.
.Pp
The
.Fn reallocf
function is identical to the
.Fn realloc
function, except that it
will free the passed pointer when the requested memory cannot be allocated.
This is a
.Fx
specific API designed to ease the problems with traditional coding styles
for realloc causing memory leaks in libraries.
.Pp
The
.Fn free
function deallocates the memory allocation pointed to by
.Fa ptr .  If
.Fa ptr 
is a NULL pointer, no operation is performed.
.Sh RETURN VALUES
If successful,
.Fn calloc ,
.Fn malloc ,
.Fn realloc ,
.Fn reallocf ,
and
.Fn valloc
functions return a pointer to allocated memory.
If there is an error, they return a
.Dv NULL
pointer and set
.Va errno
to
.Er ENOMEM .
.Pp
For
.Fn realloc ,
the input pointer is still valid if reallocation failed.
For
.Fn reallocf ,
the input pointer will have been freed if reallocation failed.
.Pp
The
.Fn free
function does not return a value.
.Sh DEBUGGING ALLOCATION ERRORS
A number of facilities are provided to aid in debugging allocation errors in
applications.
These facilities are primarily controlled via environment variables.
The recognized environment variables and their meanings are documented below.
.Sh ENVIRONMENT
The following environment variables change the behavior of the
allocation-related functions.
.Bl -tag -width ".Ev MallocStackLoggingNoCompact"
.It Ev MallocDebugReport
If set, specifies where messages are written. Set to "stderr" to write messages
to the standard error stream, "none" to discard all messages and "crash" to
write messages to standard error only for a condition that is about to cause a
crash. When not set, message are written to the standard error stream if it
appears to be a terminal (that is, if isatty(STDERR_FILENO) returns a non-zero
value) and are otherwise discarded.
.It Ev MallocGuardEdges
If set, add a guard page before and after each large block.
.It Ev MallocDoNotProtectPrelude
If set, do not add a guard page before large blocks,
even if the
.Ev MallocGuardEdges
environment variable is set.
.It Ev MallocDoNotProtectPostlude
If set, do not add a guard page after large blocks,
even if the
.Ev MallocGuardEdges
environment variable is set.
.It Ev MallocStackLogging
The default behavior if this is set is to record all allocation and deallocation events to an on-disk log, along with stacks, so that tools like
.Xr leaks 1
and
.Xr malloc_history 1
can be used.
.Pp
Set to "vm" to record only allocation of virtual memory regions allocated by system calls and mach traps, such as by
.Xr mmap 1
.
.Pp
Set to "malloc" to record only allocations via
.Xr malloc 3
and related interfaces, not virtual memory regions.
.Pp
Set to "lite" to record current allocations only, not history.   These are recorded by in-memory data structures, instead of an on-disk log.
.It Ev MallocStackLoggingNoCompact
If set, record all stacks in a manner that is compatible with the
.Nm malloc_history
program.
.It Ev MallocStackLoggingDirectory
If set, records stack logs to the directory specified instead of saving them to the default location (/tmp).
.It Ev MallocScribble
If set, fill memory that has been allocated with 0xaa bytes.
This increases the likelihood that a program making assumptions about the contents of
freshly allocated memory will fail.
Also if set, fill memory that has been deallocated with 0x55 bytes.
This increases the likelihood that a program will fail due to accessing memory
that is no longer allocated. Note that due to the way in which freed memory is
managed internally, the 0x55 pattern may not appear in some parts of a
deallocated memory block.
.It Ev MallocCheckHeapStart <s>
If set, specifies the number of allocations
.Fa <s>
to wait before begining periodic heap checks every
.Fa <n>
as specified by 
.Ev MallocCheckHeapEach .
If
.Ev MallocCheckHeapStart
is set but 
.Ev MallocCheckHeapEach
is not specified, the default check repetition is 1000.
.It Ev MallocCheckHeapEach <n>
If set, run a consistency check on the heap every
.Fa <n>
operations.
.Ev MallocCheckHeapEach
is only meaningful if
.Ev MallocCheckHeapStart
is also set.
.It Ev MallocCheckHeapSleep <t>
Sets the number of seconds to sleep (waiting for a debugger to attach) when
.Ev MallocCheckHeapStart
is set and a heap corruption is detected.
The default is 100 seconds.
Setting this to zero means not to sleep at all.
Setting this to a negative number means to sleep (for the positive number of
seconds) only the very first time a heap corruption is detected.
.It Ev MallocCheckHeapAbort <b>
When
.Ev MallocCheckHeapStart
is set and this is set to a non-zero value, causes
.Xr abort 3
to be called if a heap corruption is detected, instead of any sleeping.
.It Ev MallocErrorAbort
If set, causes
.Xr abort 3
to be called if an error was encountered in
.Xr malloc 3
or 
.Xr free 3
, such as a calling
.Xr free 3
on a pointer previously freed.
.It Ev MallocCorruptionAbort
Similar to
.Ev MallocErrorAbort 
but will not abort in out of memory conditions, making it more useful to catch
only those errors which will cause memory corruption.
MallocCorruptionAbort is always set on 64-bit processes.
.It Ev MallocHelp
If set, print a list of environment variables that are paid heed to by the
allocation-related functions, along with short descriptions.
The list should correspond to this documentation.
.El
.Sh DIAGNOSTIC MESSAGES
.Sh SEE ALSO
.Xr leaks 1 ,
.Xr malloc_history 1 ,
.Xr abort 3 ,
.Xr malloc_size 3 ,
.Xr malloc_zone_malloc 3 ,
.Xr posix_memalign 3 ,
.Xr libgmalloc 3


================================================
FILE: InterView-obj-isa-class/libmalloc-166.220.1/man/malloc_size.3
================================================
.\" Copyright (c) 2006 Apple Computer, Inc.  All rights reserved.
.\"
.\" @APPLE_LICENSE_HEADER_START@
.\"
.\" The contents of this file constitute Original Code as defined in and
.\" are subject to the Apple Public Source License Version 1.1 (the
.\" "License").  You may not use this file except in compliance with the
.\" License.  Please obtain a copy of the License at
.\" http://www.apple.com/publicsource and read it before using this file.
.\"
.\" This Original Code and all software distributed under the License are
.\" distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
.\" EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
.\" INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
.\" FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
.\" License for the specific language governing rights and limitations
.\" under the License.
.\"
.\" @APPLE_LICENSE_HEADER_END@
.\"
.Dd May 23, 2006
.Dt MALLOC_SIZE 3
.Os
.Sh NAME
.Nm malloc_good_size ,
.Nm malloc_size
.Nd memory allocation information
.Sh SYNOPSIS
.In malloc/malloc.h
.Ft size_t
.Fo malloc_good_size
.Fa "size_t size"
.Fc
.Ft size_t
.Fo malloc_size
.Fa "const void *ptr"
.Fc
.Sh DESCRIPTION
The
.Fn malloc_size
function returns the size of the memory block
that backs the allocation pointed to by
.Fa ptr .
The memory block size is always at least as large
as the allocation it backs, and may be larger.
.Pp
The
.Fn malloc_good_size
function rounds
.Fa size
up to a value that the allocator implementation can allocate
without adding any padding;
it then returns that rounded-up value.
.Sh SEE ALSO
.Xr malloc 3


================================================
FILE: InterView-obj-isa-class/libmalloc-166.220.1/man/malloc_zone_malloc.3
================================================
.\" Copyright (c) 2008 Apple, Inc.  All rights reserved.
.\"
.\" @APPLE_LICENSE_HEADER_START@
.\"
.\" The contents of this file constitute Original Code as defined in and
.\" are subject to the Apple Public Source License Version 1.1 (the
.\" "License").  You may not use this file except in compliance with the
.\" License.  Please obtain a copy of the License at
.\" http://www.apple.com/publicsource and read it before using this file.
.\"
.\" This Original Code and all software distributed under the License are
.\" distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
.\" EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
.\" INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
.\" FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
.\" License for the specific language governing rights and limitations
.\" under the License.
.\"
.\" @APPLE_LICENSE_HEADER_END@
.\"
.Dd Aug 13, 2008
.Dt MALLOC_ZONE_MALLOC 3
.Os
.Sh NAME
.Nm malloc_create_zone ,
.Nm malloc_destroy_zone ,
.Nm malloc_default_zone ,
.Nm malloc_zone_from_ptr ,
.Nm malloc_zone_malloc ,
.Nm malloc_zone_calloc ,
.Nm malloc_zone_valloc ,
.Nm malloc_zone_realloc ,
.Nm malloc_zone_memalign ,
.Nm malloc_zone_free
.Nd zone-based memory allocation
.Sh SYNOPSIS
.In malloc/malloc.h
.Ft malloc_zone_t *
.Fo malloc_create_zone
.Fa "vm_size_t start_size"
.Fa "unsigned flags"
.Fc
.Ft void
.Fo malloc_destroy_zone
.Fa "malloc_zone_t *zone"
.Fc
.Ft malloc_zone_t *
.Fo malloc_default_zone
.Fa void
.Fc
.Ft malloc_zone_t *
.Fo malloc_zone_from_ptr
.Fa "const void *ptr"
.Fc
.Ft void *
.Fo malloc_zone_malloc
.Fa "malloc_zone_t *zone"
.Fa "size_t size"
.Fc
.Ft void *
.Fo malloc_zone_calloc
.Fa "malloc_zone_t *zone"
.Fa "size_t num_items"
.Fa "size_t size"
.Fc
.Ft void *
.Fo malloc_zone_valloc
.Fa "malloc_zone_t *zone"
.Fa "size_t size"
.Fc
.Ft void *
.Fo malloc_zone_realloc
.Fa "malloc_zone_t *zone"
.Fa "void *ptr"
.Fa "size_t size"
.Fc
.Ft void *
.Fo malloc_zone_memalign
.Fa "malloc_zone_t *zone"
.Fa "size_t alignment"
.Fa "size_t size"
.Fc
.Ft void
.Fo malloc_zone_free
.Fa "malloc_zone_t *zone"
.Fa "void *ptr"
.Fc
.Sh DESCRIPTION
The
.Fn malloc_create_zone
function creates a malloc zone, advising an initial allocation of
.Fa start_size
bytes, and specifying 
.Fa flags
The returned malloc zone can be used to provide custom allocation and 
deallocation behavior, and to retrieve additional information about the
allocations in that zone.
At present there are no client settable flag values recognized by malloc_create_zone(),
the flags argument should always be passed as zero.
.Pp
The
.Fn malloc_destroy_zone
function deallocates all memory associated with objects in 
.Fa zone
as well as 
.Fa zone
itself.
.Pp
The
.Fn malloc_default_zone
function returns the default system malloc zone, used by
.Xr malloc 3 ,
and
.Xr free 3 .
.Pp
The
.Fn malloc_zone_from_ptr
function returns a pointer to the malloc zone which contains
.Fa ptr
or NULL, if the pointer does not point to an allocated object in any current
malloc zone.
.Pp
The
.Fn malloc_zone_malloc ,
.Fn malloc_zone_calloc ,
.Fn malloc_zone_valloc ,
.Fn malloc_zone_realloc ,
.Fn malloc_zone_memalign ,
and
.Fn malloc_zone_free
perform the same task on
.Fa zone
as their non-prefixed variants, 
.Xr malloc 3 ,
.Xr calloc 3 ,
.Xr valloc 3 ,
.Xr realloc 3 ,
.Xr posix_memalign 3 ,
and 
.Xr free 3 perform on the default system malloc zone.
.Sh RETURN VALUES
The 
.Fn malloc_create_zone ,
.Fn malloc_default_zone ,
and
.Fn malloc_zone_from_ptr
functions return a pointer to a malloc_zone_t structure, or NULL if there was
an error.
.Pp
The 
.Fn malloc_zone_malloc ,
.Fn malloc_zone_calloc ,
.Fn malloc_zone_valloc ,
.Fn malloc_zone_realloc ,
and
.Fn malloc_zone_memalign
functions return a pointer to allocated memory.  If there is an error, they 
return a NULL pointer.  They are not required to set 
.Va errno .
.Sh SEE ALSO
.Xr malloc 3 ,
.Xr posix_memalign 3


================================================
FILE: InterView-obj-isa-class/libmalloc-166.220.1/man/manpages.lst
================================================
# manpage tables
# <source> <dest> [<link> <link> ...]

# man3
malloc.3 malloc.3 calloc.3 free.3 realloc.3 reallocf.3 valloc.3
malloc_size.3 malloc_size.3 malloc_good_size.3
malloc_zone_malloc.3 malloc_zone_malloc.3 malloc_create_zone.3 malloc_destroy_zone.3 malloc_default_zone.3 malloc_zone_from_ptr.3 malloc_zone_calloc.3 malloc_zone_valloc.3 malloc_zone_realloc.3 malloc_zone_memalign.3 malloc_zone_free.3


================================================
FILE: InterView-obj-isa-class/libmalloc-166.220.1/private/malloc_private.h
================================================
/*
 * Copyright (c) 1999-2016 Apple Inc. All rights reserved.
 *
 * @APPLE_LICENSE_HEADER_START@
 * 
 * This file contains Original Code and/or Modifications of Original Code
 * as defined in and that are subject to the Apple Public Source License
 * Version 2.0 (the 'License'). You may not use this file except in
 * compliance with the License. Please obtain a copy of the License at
 * http://www.opensource.apple.com/apsl/ and read it before using this
 * file.
 * 
 * The Original Code and all software distributed under the License are
 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
 * Please see the License for the specific language governing rights and
 * limitations under the License.
 * 
 * @APPLE_LICENSE_HEADER_END@
 */

#ifndef _MALLOC_PRIVATE_H_
#define _MALLOC_PRIVATE_H_

/* Here be dragons (SPIs) */

#include <mach/boolean.h>
#include <sys/cdefs.h>
#include <Availability.h>
#include <os/availability.h>
#include <malloc/malloc.h>

/*********	Callbacks	************/

API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
void malloc_enter_process_memory_limit_warn_mode(void);
	/* A callback invoked once the process receives a warning for approaching
	 * memory limit. */

__OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0)
__TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0)
void malloc_memory_event_handler(unsigned long);
	/* A function invoked when malloc needs to handle any flavor of
	 * memory pressure notification or process memory limit notification. */

API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
void * reallocarray(void * in_ptr, size_t nmemb, size_t size) __DARWIN_EXTSN(reallocarray) __result_use_check;

API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
void * reallocarrayf(void * in_ptr, size_t nmemb, size_t size) __DARWIN_EXTSN(reallocarrayf) __result_use_check;

/*
 * Checks whether an address might belong to any registered zone. False positives
 * are allowed (e.g. the memory was freed, or it's in a part of the address
 * space used by malloc that has not yet been allocated.) False negatives are
 * not allowed.
 */
API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0), watchos(5.0))
boolean_t malloc_claimed_address(void *ptr) __result_use_check;

/*
 * Checks whether an address might belong to a given zone. False positives are
 * allowed (e.g. the memory was freed, or it's in a part of the address space
 * used by malloc that has not yet been allocated.) False negatives are not
 * allowed.
 */
API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0), watchos(5.0))
boolean_t malloc_zone_claimed_address(malloc_zone_t *zone, void *ptr) __result_use_check;

/**
 * Returns whether the nano allocator is engaged. The return value is 0 if Nano
 * is not engaged and the allocator version otherwise.
 */
API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0), watchos(5.0))
int malloc_engaged_nano(void) __result_use_check;

#endif /* _MALLOC_PRIVATE_H_ */


================================================
FILE: InterView-obj-isa-class/libmalloc-166.220.1/private/stack_logging.h
================================================
/*
 * Copyright (c) 1999-2007 Apple Inc. All rights reserved.
 *
 * @APPLE_LICENSE_HEADER_START@
 * 
 * This file contains Original Code and/or Modifications of Original Code
 * as defined in and that are subject to the Apple Public Source License
 * Version 2.0 (the 'License'). You may not use this file except in
 * compliance with the License. Please obtain a copy of the License at
 * http://www.opensource.apple.com/apsl/ and read it before using this
 * file.
 * 
 * The Original Code and all software distributed under the License are
 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
 * Please see the License for the specific language governing rights and
 * limitations under the License.
 * 
 * @APPLE_LICENSE_HEADER_END@
 */

#import <stdbool.h>
#import <malloc/malloc.h>
#import <mach/vm_statistics.h>
#import <sys/cdefs.h>
#import <os/availability.h>

#define STACK_LOGGING_MAX_STACK_SIZE 512

#define stack_logging_type_free		0
#define stack_logging_type_generic	1	/* anything that is not allocation/deallocation */
#define stack_logging_type_alloc	2	/* malloc, realloc, etc... */
#define stack_logging_type_dealloc	4	/* free, realloc, etc... */
#define stack_logging_type_vm_allocate  16      /* vm_allocate or mmap */
#define stack_logging_type_vm_deallocate  32	/* vm_deallocate or munmap */
#define stack_logging_type_mapped_file_or_shared_mem	128

// The valid flags include those from VM_FLAGS_ALIAS_MASK, which give the user_tag of allocated VM regions.
#define stack_logging_valid_type_flags ( \
	stack_logging_type_generic | \
	stack_logging_type_alloc | \
	stack_logging_type_dealloc | \
	stack_logging_type_vm_allocate | \
	stack_logging_type_vm_deallocate | \
	stack_logging_type_mapped_file_or_shared_mem | \
	VM_FLAGS_ALIAS_MASK);

// Following flags are absorbed by stack_logging_log_stack()
#define	stack_logging_flag_zone		8	/* NSZoneMalloc, etc... */
#define stack_logging_flag_cleared	64	/* for NewEmptyHandle */

#define STACK_LOGGING_VM_USER_TAG(flags) (((flags) & VM_FLAGS_ALIAS_MASK) >> 24)


/* Macro used to disguise addresses so that leak finding can work */
#define STACK_LOGGING_DISGUISE(address)	((address) ^ 0x00005555) /* nicely idempotent */

typedef enum {
	stack_logging_mode_none = 0,
	stack_logging_mode_all,
	stack_logging_mode_malloc,
	stack_logging_mode_vm,
	stack_logging_mode_lite,
	stack_logging_mode_vmlite
} stack_logging_mode_type;

extern boolean_t turn_on_stack_logging(stack_logging_mode_type mode);
extern void turn_off_stack_logging();

/* constants for enabling/disabling malloc stack logging via the memorystatus_vm_pressure_send sysctl */
#define	MEMORYSTATUS_ENABLE_MSL_MALLOC		0x10000000
#define MEMORYSTATUS_ENABLE_MSL_VM			0x20000000
#define MEMORYSTATUS_ENABLE_MSL_LITE		0x40000000
#define MEMORYSTATUS_DISABLE_MSL			0x80000000
#define MEMORYSTATUS_ENABLE_MSL_LITE_FULL	(MEMORYSTATUS_ENABLE_MSL_LITE | MEMORYSTATUS_ENABLE_MSL_VM | MEMORYSTATUS_ENABLE_MSL_MALLOC)
#define MEMORYSTATUS_ENABLE_MSL_LITE_VM		(MEMORYSTATUS_ENABLE_MSL_LITE | MEMORYSTATUS_ENABLE_MSL_VM)

extern void __disk_stack_logging_log_stack(uint32_t type_flags, uintptr_t zone_ptr, uintptr_t size, uintptr_t ptr_arg, uintptr_t return_val, uint32_t num_hot_to_skip);
	/* Fits as the malloc_logger; logs malloc/free/realloc events and can log custom events if called directly */


/* 64-bit-aware stack log access.  As new SPI, these routines are prefixed with double-underscore to avoid conflict with Libsystem clients. */

typedef struct mach_stack_logging_record {
	uint32_t		type_flags;
	uint64_t		stack_identifier;
	uint64_t		argument;
	mach_vm_address_t	address;
} mach_stack_logging_record_t;

extern kern_return_t __mach_stack_logging_start_reading(task_t task, vm_address_t shared_memory_address, boolean_t *uses_lite_mode);
extern kern_return_t __mach_stack_logging_stop_reading(task_t task);

/* Clients *should* call these start/stop functions to properly initialize stack logging data
 * structures and fully clean them up when they're done looking at a process.  If the client does *not*
 * call these then currently it should still work but some data structures will still remain after
 * reading the stack logs (e.g., an extra shared memory segment, an open stack log file, etc).
 * NULL can be passed for uses_lite_mode if the client doesn’t need them.
 *
 * It is recommended that the client suspend the task before actually reading the stacks, and resume the task when done,
 * if the task uses lite mode.
 */

extern kern_return_t __mach_stack_logging_set_file_path(task_t task, char* file_path);

extern kern_return_t __mach_stack_logging_get_frames(task_t task, mach_vm_address_t address, mach_vm_address_t *stack_frames_buffer, uint32_t max_stack_frames, uint32_t *count);
    /* Gets the last allocation record (malloc, realloc, or free) about address */

extern kern_return_t __mach_stack_logging_enumerate_records(task_t task, mach_vm_address_t address, void enumerator(mach_stack_logging_record_t, void *), void *context);
    /* Applies enumerator to all records involving address sending context as enumerator's second parameter; if !address, applies enumerator to all records */

extern kern_return_t __mach_stack_logging_frames_for_uniqued_stack(task_t task, uint64_t stack_identifier, mach_vm_address_t *stack_frames_buffer, uint32_t max_stack_frames, uint32_t *count)
	API_DEPRECATED("use __mach_stack_logging_get_frames_for_stackid instead", macos(10.9, 10.13), ios(7.0, 11.0), watchos(1.0, 4.0), tvos(9.0, 11.0));
    /* Given a uniqued_stack fills stack_frames_buffer. */

extern kern_return_t __mach_stack_logging_get_frames_for_stackid(task_t task, uint64_t stack_identifier, mach_vm_address_t *stack_frames_buffer, uint32_t max_stack_frames, uint32_t *count,
                                                                     bool *last_frame_is_threadid)
	API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0));
    /* Given a uniqued_stack fills stack_frames_buffer. */

extern uint64_t __mach_stack_logging_stackid_for_vm_region(task_t task, mach_vm_address_t address);
	/* given the address of a vm region, lookup it's stackid */


struct backtrace_uniquing_table;

extern kern_return_t
__mach_stack_logging_uniquing_table_read_stack(struct backtrace_uniquing_table *uniquing_table,
											   uint64_t stackid,
											   mach_vm_address_t *out_frames_buffer,
											   uint32_t *out_frames_count,
											   uint32_t max_frames);

extern
struct backtrace_uniquing_table *
__mach_stack_logging_copy_uniquing_table(task_t task);
/* returns a retained pointer to copy of the task's uniquing table */

extern
void
__mach_stack_logging_uniquing_table_release(struct backtrace_uniquing_table *);

extern
void
__mach_stack_logging_uniquing_table_retain(struct backtrace_uniquing_table *);

extern
size_t
__mach_stack_logging_uniquing_table_sizeof(struct backtrace_uniquing_table *);
/* returns the serialized size of a uniquing talbe in bytes */

extern
void *
__mach_stack_logging_uniquing_table_serialize(struct backtrace_uniquing_table *table, mach_vm_size_t *size);
/* Writes out a serialized representation of the table.  Free it with mach_vm_deallocate. */

extern
struct backtrace_uniquing_table *
__mach_stack_logging_uniquing_table_copy_from_serialized(void *buffer, size_t size);
/* creates a malloc uniquing table from a serialized representation */


extern void thread_stack_pcs(vm_address_t *buffer, unsigned max, unsigned *num);
    /* Convenience to fill buffer with the PCs of the frames, starting with the hot frames;
    num: returned number of frames
    */



================================================
FILE: InterView-obj-isa-class/libmalloc-166.220.1/resolver/resolver.c
================================================
/*
 * Copyright (c) 2018 Apple Inc. All rights reserved.
 *
 * @APPLE_APACHE_LICENSE_HEADER_START@
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * @APPLE_APACHE_LICENSE_HEADER_END@
 */




================================================
FILE: InterView-obj-isa-class/libmalloc-166.220.1/resolver/resolver.h
================================================
/*
 * Copyright (c) 2018 Apple Inc. All rights reserved.
 *
 * @APPLE_APACHE_LICENSE_HEADER_START@
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * @APPLE_APACHE_LICENSE_HEADER_END@
 */

#ifndef __MALLOC_RESOLVER_H__
#define __MALLOC_RESOLVER_H__

#include "resolver_internal.h"


#endif // __MALLOC_RESOLVER_H__


================================================
FILE: InterView-obj-isa-class/libmalloc-166.220.1/resolver/resolver_internal.h
================================================
/*
 * Copyright (c) 2018 Apple Inc. All rights reserved.
 *
 * @APPLE_APACHE_LICENSE_HEADER_START@
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * @APPLE_APACHE_LICENSE_HEADER_END@
 */

#ifndef __MALLOC_RESOLVER_INTERNAL_H__
#define __MALLOC_RESOLVER_INTERNAL_H__

#define OS_RESOLVED_VARIANT_ADDR(s) (void *)(&s)

#endif // __MALLOC_RESOLVER_INTERNAL_H__


================================================
FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/base.h
================================================
/*
 * Copyright (c) 2015 Apple Inc. All rights reserved.
 *
 * @APPLE_LICENSE_HEADER_START@
 *
 * This file contains Original Code and/or Modifications of Original Code
 * as defined in and that are subject to the Apple Public Source License
 * Version 2.0 (the 'License'). You may not use this file except in
 * compliance with the License. Please obtain a copy of the License at
 * http://www.opensource.apple.com/apsl/ and read it before using this
 * file.
 *
 * The Original Code and all software distributed under the License are
 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
 * Please see the License for the specific language governing rights and
 * limitations under the License.
 *
 * @APPLE_LICENSE_HEADER_END@
 */

#ifndef __BASE_H
#define __BASE_H

#ifndef __has_extension
#define __has_extension(x) 0
#endif

#if __has_extension(c_static_assert)
#define MALLOC_STATIC_ASSERT(x, y) _Static_assert((x), y)
#else
#define MALLOC_STATIC_ASSERT(x, y)
#endif

#define MALLOC_ASSERT(e) ({ \
	if (__builtin_expect(!(e), 0)) { \
		__asm__ __volatile__ (""); \
		__builtin_trap(); \
	} \
})

#define MALLOC_FATAL_ERROR(cause, message) ({ \
		_os_set_crash_log_cause_and_message((cause), "FATAL ERROR - " message); \
		__asm__ __volatile__ (""); \
		__builtin_trap(); \
})

#define MALLOC_REPORT_FATAL_ERROR(cause, message) ({ \
		malloc_report(ASL_LEVEL_ERR, "*** FATAL ERROR - " message ".\n"); \
		MALLOC_FATAL_ERROR((cause), message); \
})

#if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || defined(__arm64__)
#   define __APPLE_API_PRIVATE
#   include <machine/cpu_capabilities.h>
#   if defined(__i386__) || defined(__x86_64__)
#      define _COMM_PAGE_VERSION_REQD 9
#   else
#      define _COMM_PAGE_VERSION_REQD 3
#   endif
#   undef __APPLE_API_PRIVATE
#else
#   include <sys/sysctl.h>
#endif

#if defined(__i386__) || defined(__x86_64__)
// <rdar://problem/23495834> nano vs. magazine have different definitions
// for this cache-line size.
#   define MALLOC_CACHE_LINE 128
#   define MALLOC_NANO_CACHE_LINE 64
#elif defined(__arm__) || defined(__arm64__)
#   define MALLOC_CACHE_LINE 64
#   define MALLOC_NANO_CACHE_LINE 64
#else
#   define MALLOC_CACHE_LINE 32
#   define MALLOC_NANO_CACHE_LINE 32
#endif

#define MALLOC_CACHE_ALIGN __attribute__ ((aligned (MALLOC_CACHE_LINE) ))
#define MALLOC_NANO_CACHE_ALIGN __attribute__ ((aligned (MALLOC_NANO_CACHE_LINE) ))
#define MALLOC_EXPORT extern __attribute__((visibility("default")))
#define MALLOC_NOEXPORT __attribute__((visibility("hidden")))
#define MALLOC_NOINLINE __attribute__((noinline))
#define MALLOC_INLINE __inline__
#define MALLOC_ALWAYS_INLINE __attribute__((always_inline))
#define MALLOC_PACKED __attribute__((packed))
#define MALLOC_USED __attribute__((used))
#define MALLOC_UNUSED __attribute__((unused))
#define CHECK_MAGAZINE_PTR_LOCKED(szone, mag_ptr, fun) {}

#define SCRIBBLE_BYTE 0xaa /* allocated scribble */
#define SCRABBLE_BYTE 0x55 /* free()'d scribble */
#define SCRUBBLE_BYTE 0xdd /* madvise(..., MADV_FREE) scriblle */

#define NDEBUG 1
#define trunc_page_quanta(x) trunc_page((x))
#define round_page_quanta(x) round_page((x))
#define vm_page_quanta_size (vm_page_size)
#define vm_page_quanta_shift (vm_page_shift)

// add a guard page before and after each VM region to help debug
#define MALLOC_ADD_GUARD_PAGES (1 << 0)
// do not protect prelude page
#define MALLOC_DONT_PROTECT_PRELUDE (1 << 1)
// do not protect postlude page
#define MALLOC_DONT_PROTECT_POSTLUDE (1 << 2)
// write 0x55 onto free blocks
#define MALLOC_DO_SCRIBBLE (1 << 3)
// call abort() on any malloc error, such as double free or out of memory.
#define MALLOC_ABORT_ON_ERROR (1 << 4)
// allocate objects such that they may be used with VM purgability APIs
#define MALLOC_PURGEABLE (1 << 5)
// call abort() on malloc errors, but not on out of memory.
#define MALLOC_ABORT_ON_CORRUPTION (1 << 6)
// expanded small-zone free list size (256 slots)
#define MALLOC_EXTENDED_SMALL_SLOTS (1 << 7)

/*
 * msize - a type to refer to the number of quanta of a tiny or small
 * allocation.  A tiny block with an msize of 3 would be 3 << SHIFT_TINY_QUANTUM
 * bytes in size.
 */
typedef unsigned short msize_t;

typedef unsigned int grain_t; // N.B. wide enough to index all free slots
typedef struct large_entry_s large_entry_t;
typedef struct szone_s szone_t;
typedef struct rack_s rack_t;
typedef struct magazine_s magazine_t;
typedef int mag_index_t;
typedef void *region_t;

#endif // __BASE_H


================================================
FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/bitarray.c
================================================
/*
 * Copyright (c) 1999, 2000, 2003, 2005, 2008, 2012 Apple Inc. All rights reserved.
 *
 * @APPLE_LICENSE_HEADER_START@
 *
 * This file contains Original Code and/or Modifications of Original Code
 * as defined in and that are subject to the Apple Public Source License
 * Version 2.0 (the 'License'). You may not use this file except in
 * compliance with the License. Please obtain a copy of the License at
 * http://www.opensource.apple.com/apsl/ and read it before using this
 * file.
 *
 * The Original Code and all software distributed under the License are
 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
 * Please see the License for the specific language governing rights and
 * limitations under the License.
 *
 * @APPLE_LICENSE_HEADER_END@
 */
//
//  bitarray.c
//  bitarray
//
//  Created by Bertrand Serlet on 9/26/10.
//  Copyright (c) 2010 Apple. All rights reserved.
//

#include "internal.h"

/******************************** Utilities ***************************/

#define STATIC_INLINE static __inline

STATIC_INLINE unsigned
__ffsll(uint64_t xx)
{
#if defined(__LP64__)
	return __builtin_ffsl(xx);
#else
	return __builtin_ffsll(xx);
#endif
}

#define BIT_SET(old, bit) ((old) | (1ULL << (bit)))
#define BIT_GET(old, bit) ((old) & (1ULL << (bit)))
#define BIT_ZAP(old, bit) ((old) & ~(1ULL << (bit)))

// several variants below of bit setting or zapping to generate minimal code
// All these do 1 memory read and (maybe) 1 memory write
STATIC_INLINE bool
word_get_bit_simple(uint64_t *word, unsigned bit)
{
	uint64_t old = *word;
	return BIT_GET(old, bit) != 0;
}

STATIC_INLINE void
word_set_bit_simple(uint64_t *word, unsigned bit)
{
	uint64_t old = *word;
	*word = BIT_SET(old, bit);
}

STATIC_INLINE bool
word_set_bit_changed(uint64_t *word, unsigned bit)
{
	// returns 1 iff word has changed
	uint64_t old = *word;
	uint64_t new = BIT_SET(old, bit);
	if (old == new) {
		return 0;
	}
	*word = new;
	return 1;
}

STATIC_INLINE bool
word_set_bit_changed_go_down(uint64_t *word, unsigned bit, bool *was_non_zero)
{
	// returns 1 iff word changed
	// sets was_non_zero (when something changed)
	uint64_t old = *word;
	uint64_t new = BIT_SET(old, bit);
	if (old == new) {
		return 0;
	}
	*word = new;
	*was_non_zero = old != 0;
	return 1;
}

STATIC_INLINE bool
word_set_bit_go_down(uint64_t *word, unsigned bit)
{
	// returns 1 iff level below should be set too
	uint64_t old = *word;
	uint64_t new = BIT_SET(old, bit);
	if (old == new) {
		return 0;
	}
	*word = new;
	return !old;
}

STATIC_INLINE void
word_zap_bit_simple(uint64_t *word, unsigned bit)
{
	uint64_t old = *word;
	*word = BIT_ZAP(old, bit);
}

STATIC_INLINE bool
word_zap_bit_changed(uint64_t *word, unsigned bit)
{
	// returns 1 iff word changed
	uint64_t old = *word;
	uint64_t new = BIT_ZAP(old, bit);
	if (old == new) {
		return 0;
	}
	*word = new;
	return 1;
}

STATIC_INLINE bool
word_zap_bit_changed_go_down(uint64_t *word, unsigned bit, bool *is_now_zero)
{
	// returns 1 iff word changed
	// sets is_now_zero (when something changed)
	uint64_t old = *word;
	uint64_t new = BIT_ZAP(old, bit);
	if (old == new) {
		return 0;
	}
	*word = new;
	*is_now_zero = !new;
	return 1;
}

STATIC_INLINE bool
word_zap_bit_go_down(uint64_t *word, unsigned bit)
{
	// returns 1 iff level below might require a bit-zeroing
	uint64_t old = *word;
	uint64_t new = BIT_ZAP(old, bit);
	if (old == new) {
		return 0;
	}
	*word = new;
	return !new;
}

/******************************** Helpers ***************************/

#define NB 9 // number of bits we process at once
// must be at least 6 (64-bit) and 9 seems the best on x86
#define MASKNB ((1 << NB) - 1)  // to just keep these bits
#define NUM_64b (1 << (NB - 6)) // number of 64-bit words we process at once

// number of uint64_t of summaries
#define LEVEL0 (NUM_64b)
#define LEVEL1 (LEVEL0 + (1 << NB) * NUM_64b)
#define LEVEL2 (LEVEL1 + (1 << (NB + NB)) * NUM_64b)
#define LEVEL3 (LEVEL2 + (1 << (NB + NB + NB)) * NUM_64b)

#define MAX_LEVEL 5

static const unsigned levels_num_words[] = {
		LEVEL0, LEVEL1, LEVEL2, LEVEL3}; // this encodes the number of words reserved for the bitmap summaries at various levels

STATIC_INLINE bool
GET_SIMPLE(uint64_t *word, unsigned bit)
{
	return word_get_bit_simple(word + (bit >> 6), bit & 63);
}

STATIC_INLINE void
SET_SIMPLE(uint64_t *word, unsigned bit)
{
	word_set_bit_simple(word + (bit >> 6), bit & 63);
}

STATIC_INLINE bool
SET_CHANGED(uint64_t *word, unsigned bit)
{
	// returns 1 iff word changed
	return word_set_bit_changed(word + (bit >> 6), bit & 63);
}

STATIC_INLINE bool
SET_CHANGED_GO_DOWN(uint64_t *word, unsigned bit, bool *was_non_zero)
{
	// returns 1 iff word changed
	// sets was_non_zero (when something changed)
	return word_set_bit_changed_go_down(word + (bit >> 6), bit & 63, was_non_zero);
}

STATIC_INLINE bool
SET_GO_DOWN(uint64_t *word, unsigned bit)
{
	// returns 1 iff level below should be set too
	return word_set_bit_go_down(word + (bit >> 6), bit & 63);
}

STATIC_INLINE void
ZAP_SIMPLE(uint64_t *word, unsigned bit)
{
	return word_zap_bit_simple(word + (bit >> 6), bit & 63);
}

STATIC_INLINE bool
ZAP_CHANGED(uint64_t *word, unsigned bit)
{
	// returns 1 iff word changed
	return word_zap_bit_changed(word + (bit >> 6), bit & 63);
}

STATIC_INLINE bool
all_zeros(uint64_t *words)
{
	for (unsigned w = 0; w < NUM_64b; w++) {
		if (words[w]) {
			return 0;
		}
	}
	return 1;
}

STATIC_INLINE bool
ZAP_CHANGED_GO_DOWN(uint64_t *word, unsigned bit, bool *is_now_zero)
{
	// returns 1 iff word changed
	// sets is_now_zero (when something changed)
	bool changed = word_zap_bit_changed_go_down(word + (bit >> 6), bit & 63, is_now_zero);
	if (changed && (NUM_64b != 1)) {
		// One component went entirely zero, now examine all components in the level
		if (!all_zeros(word)) {
			*is_now_zero = 0;
		}
	}
	return changed;
}

STATIC_INLINE bool
ZAP_GO_DOWN(uint64_t *word, unsigned bit)
{
	// returns 1 iff level below should be changed too
	bool changed = word_zap_bit_go_down(word + (bit >> 6), bit & 63);
	if (changed && (NUM_64b != 1)) {
		// One component went entirely zero, now examine all components in the level
		if (!all_zeros(word)) {
			return 0;
		}
	}
	return changed;
}

STATIC_INLINE unsigned
FFS(uint64_t *word)
{
// does NUM_64b memory reads, at most
#if NB == 6
	return __ffsll(*word);
#else
	for (unsigned w = 0; w < NUM_64b; w++) {
		unsigned f = __ffsll(word[w]);
		if (f) {
			return f + (w << 6);
		}
	}
	return 0;
#endif
}

/******************************** Entry Points ***************************/

size_t
bitarray_size(unsigned log_size)
{
	assert(log_size <= MAX_LEVEL * NB);
	unsigned num = NUM_64b;
	if (log_size > NB) {
		unsigned level = (log_size - NB - 1) / NB;
		num = levels_num_words[level] + (1 << (log_size - 6));
	}
	return num * sizeof(uint64_t);
}

bitarray_t
bitarray_create(unsigned log_size)
{
	return calloc(1, bitarray_size(log_size));
}

bool
bitarray_get(bitarray_t bits, unsigned log_size, index_t index)
{
	assert(log_size <= MAX_LEVEL * NB);
	assert(index < (1 << log_size));
	if (log_size <= NB) {
		return GET_SIMPLE(bits, index);
	}
	unsigned level = (log_size - NB - 1) / NB;
	unsigned bit;
	bit = index & MASKNB;
	index >>= NB;
	return GET_SIMPLE(bits + levels_num_words[level] + index * NUM_64b, bit);
}

bool
bitarray_set(bitarray_t bits, unsigned log_size, index_t index)
{
	// returns whether changed
	assert(log_size <= MAX_LEVEL * NB);
	assert(index < (1 << log_size));
	if (log_size <= NB) {
		return SET_CHANGED(bits, index);
	}
	unsigned level = (log_size - NB - 1) / NB;
	bool was_non_zero;
	unsigned bit;
	bit = index & MASKNB;
	index >>= NB;
	// printf("SET_CHANGED_GO_DOWN(bits + %d, %d,…)\n", levels_num_words[level] + index, bit);
	if (!SET_CHANGED_GO_DOWN(bits + levels_num_words[level] + index * NUM_64b, bit, &was_non_zero)) {
		return 0;
	}
	if (was_non_zero) {
		return 1;
	}
	switch (level) {
	case 3:
		bit = index & MASKNB;
		index >>= NB;
		if (!SET_GO_DOWN(bits + LEVEL2 + index * NUM_64b, bit)) {
			return 1;
		}
	/* no break */
	case 2:
		bit = index & MASKNB;
		index >>= NB;
		if (!SET_GO_DOWN(bits + LEVEL1 + index * NUM_64b, bit)) {
			return 1;
		}
	/* no break */
	case 1:
		bit = index & MASKNB;
		index >>= NB;
		if (!SET_GO_DOWN(bits + LEVEL0 + index * NUM_64b, bit)) {
			return 1;
		}
	/* no break */
	case 0:
		SET_SIMPLE(bits, index & MASKNB);
		return 1;
	default:
		MALLOC_FATAL_ERROR(level, "invalid bitarray level");
	}
}

bool
bitarray_zap(bitarray_t bits, unsigned log_size, index_t index)
{
	assert(log_size <= MAX_LEVEL * NB);
	assert(index < (1 << log_size));
	if (log_size <= NB) {
		return ZAP_CHANGED(bits, index);
	}
	unsigned level = (log_size - NB - 1) / NB;
	bool is_now_zero;
	unsigned bit;
	bit = index & MASKNB;
	index >>= NB;
	if (!ZAP_CHANGED_GO_DOWN(bits + levels_num_words[level] + index * NUM_64b, bit, &is_now_zero)) {
		return 0;
	}
	if (!is_now_zero) {
		return 1;
	}
	switch (level) {
	case 3:
		bit = index & MASKNB;
		index >>= NB;
		if (!ZAP_GO_DOWN(bits + LEVEL2 + index * NUM_64b, bit)) {
			return 1;
		}
	/* no break */
	case 2:
		bit = index & MASKNB;
		index >>= NB;
		if (!ZAP_GO_DOWN(bits + LEVEL1 + index * NUM_64b, bit)) {
			return 1;
		}
	/* no break */
	case 1:
		bit = index & MASKNB;
		index >>= NB;
		if (!ZAP_GO_DOWN(bits + LEVEL0 + index * NUM_64b, bit)) {
			return 1;
		}
	/* no break */
	case 0:
		ZAP_SIMPLE(bits, index & MASKNB);
		return 1;
	default:
		MALLOC_FATAL_ERROR(level, "invalid bitarray level");
	}
}

// Note in the following macro that "words" and "base" are variables being written
#define ADJUST_OFFSET_FOR_FFS(words, base, current_level)      \
	{                                                          \
		words += (1 << (NB * current_level)) * NUM_64b;        \
		base = (base << NB) + FFS(words + base * NUM_64b) - 1; \
	}

// Note in the following macro that "words" and "base" are variables being written
#define ADJUST_OFFSET_FOR_FFS_ACROSS_SUMMARIES(words, base, level) \
	{                                                              \
		switch (level) {                                           \
		case 4:                                                    \
			ADJUST_OFFSET_FOR_FFS(words, base, 0);                 \
			ADJUST_OFFSET_FOR_FFS(words, base, 1);                 \
			ADJUST_OFFSET_FOR_FFS(words, base, 2);                 \
			break;                                                 \
		case 3:                                                    \
			ADJUST_OFFSET_FOR_FFS(words, base, 0);                 \
			ADJUST_OFFSET_FOR_FFS(words, base, 1);                 \
			break;                                                 \
		case 2:                                                    \
			ADJUST_OFFSET_FOR_FFS(words, base, 0);                 \
			break;                                                 \
		case 1:                                                    \
			break;                                                 \
		default:                                                   \
			MALLOC_FATAL_ERROR(level, "invalid bitarray level");   \
		}                                                          \
	}

// Note in the following macro that "ix" and "bit" are variables being written
#define ZAP_SUMMARIES(bits, ix, level)                             \
	{                                                              \
		unsigned bit;                                              \
		switch (level) {                                           \
		case 3:                                                    \
			bit = ix & MASKNB;                                     \
			ix >>= NB;                                             \
			if (
Download .txt
gitextract_jkwm6bgm/

├── .gitignore
├── BlockFile.md
├── InterView-obj-isa-class/
│   ├── InterView-obj-isa-class/
│   │   ├── NSObject+MNTest.h
│   │   ├── NSObject+MNTest.m
│   │   └── main.m
│   ├── InterView-obj-isa-class.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           └── IDEWorkspaceChecks.plist
│   ├── libmalloc-166.220.1/
│   │   ├── .clang-format
│   │   ├── .gitattributes
│   │   ├── .gitignore
│   │   ├── include/
│   │   │   └── malloc/
│   │   │       ├── _malloc.h
│   │   │       └── malloc.h
│   │   ├── libmalloc.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── man/
│   │   │   ├── malloc.3
│   │   │   ├── malloc_size.3
│   │   │   ├── malloc_zone_malloc.3
│   │   │   └── manpages.lst
│   │   ├── private/
│   │   │   ├── malloc_private.h
│   │   │   └── stack_logging.h
│   │   ├── resolver/
│   │   │   ├── resolver.c
│   │   │   ├── resolver.h
│   │   │   └── resolver_internal.h
│   │   ├── src/
│   │   │   ├── base.h
│   │   │   ├── bitarray.c
│   │   │   ├── bitarray.h
│   │   │   ├── debug.h
│   │   │   ├── dtrace.h
│   │   │   ├── empty.s
│   │   │   ├── frozen_malloc.c
│   │   │   ├── frozen_malloc.h
│   │   │   ├── internal.h
│   │   │   ├── legacy_malloc.c
│   │   │   ├── legacy_malloc.h
│   │   │   ├── locking.h
│   │   │   ├── magazine_inline.h
│   │   │   ├── magazine_large.c
│   │   │   ├── magazine_lite.c
│   │   │   ├── magazine_malloc.c
│   │   │   ├── magazine_malloc.h
│   │   │   ├── magazine_rack.c
│   │   │   ├── magazine_rack.h
│   │   │   ├── magazine_small.c
│   │   │   ├── magazine_tiny.c
│   │   │   ├── magazine_zone.h
│   │   │   ├── magmallocProvider.d
│   │   │   ├── malloc.c
│   │   │   ├── malloc_common.c
│   │   │   ├── malloc_common.h
│   │   │   ├── malloc_printf.c
│   │   │   ├── nano_malloc.c
│   │   │   ├── nano_malloc.h
│   │   │   ├── nano_malloc_common.c
│   │   │   ├── nano_malloc_common.h
│   │   │   ├── nano_zone.h
│   │   │   ├── nano_zone_common.h
│   │   │   ├── nanov2_malloc.c
│   │   │   ├── nanov2_malloc.h
│   │   │   ├── nanov2_zone.h
│   │   │   ├── platform.h
│   │   │   ├── printf.h
│   │   │   ├── purgeable_malloc.c
│   │   │   ├── purgeable_malloc.h
│   │   │   ├── radix_tree.c
│   │   │   ├── radix_tree.h
│   │   │   ├── radix_tree_debug.c
│   │   │   ├── radix_tree_internal.h
│   │   │   ├── stack_logging_disk.c
│   │   │   ├── stack_logging_internal.h
│   │   │   ├── thresholds.h
│   │   │   ├── trace.h
│   │   │   ├── vm.c
│   │   │   └── vm.h
│   │   ├── tests/
│   │   │   ├── Makefile
│   │   │   ├── MallocBench/
│   │   │   │   ├── Benchmark.cpp
│   │   │   │   ├── Benchmark.h
│   │   │   │   ├── CPUCount.cpp
│   │   │   │   ├── CPUCount.h
│   │   │   │   ├── CommandLine.cpp
│   │   │   │   ├── CommandLine.h
│   │   │   │   ├── Interpreter.cpp
│   │   │   │   ├── Interpreter.h
│   │   │   │   ├── balloon.cpp
│   │   │   │   ├── balloon.h
│   │   │   │   ├── big.cpp
│   │   │   │   ├── big.h
│   │   │   │   ├── churn.cpp
│   │   │   │   ├── churn.h
│   │   │   │   ├── fragment.cpp
│   │   │   │   ├── fragment.h
│   │   │   │   ├── list.cpp
│   │   │   │   ├── list.h
│   │   │   │   ├── mbmalloc.cpp
│   │   │   │   ├── mbmalloc.h
│   │   │   │   ├── medium.cpp
│   │   │   │   ├── medium.h
│   │   │   │   ├── memalign.cpp
│   │   │   │   ├── memalign.h
│   │   │   │   ├── message.cpp
│   │   │   │   ├── message.h
│   │   │   │   ├── realloc.cpp
│   │   │   │   ├── realloc.h
│   │   │   │   ├── stress.cpp
│   │   │   │   ├── stress.h
│   │   │   │   ├── stress_aligned.cpp
│   │   │   │   ├── stress_aligned.h
│   │   │   │   ├── tree.cpp
│   │   │   │   └── tree.h
│   │   │   ├── MallocBench.cpp
│   │   │   ├── asan.c
│   │   │   ├── basic_malloc_free_perf.c
│   │   │   ├── calloc_test.c
│   │   │   ├── libmalloc_tests.xcodeproj/
│   │   │   │   └── project.pbxproj
│   │   │   ├── madvise.c
│   │   │   ├── magazine_malloc.c
│   │   │   ├── magazine_rack.c
│   │   │   ├── magazine_small_test.c
│   │   │   ├── magazine_testing.h
│   │   │   ├── magazine_tiny_test.c
│   │   │   ├── malloc_claimed_address_tests.c
│   │   │   ├── malloc_free_test.c
│   │   │   ├── malloc_size_test.c
│   │   │   ├── nano_tests.c
│   │   │   ├── perf_contended_malloc_free.c
│   │   │   ├── perf_realloc.c
│   │   │   ├── radix_tree_test.m
│   │   │   ├── reallocarray.c
│   │   │   ├── stack_logging_test.c
│   │   │   ├── stress_test.c
│   │   │   └── tsan.c
│   │   ├── tools/
│   │   │   ├── malloc_replay.cpp
│   │   │   ├── malloc_replay.h
│   │   │   ├── malloc_replay_plotter.py
│   │   │   ├── radix_tree_main.m
│   │   │   └── read-radix-tree
│   │   ├── xcodeconfig/
│   │   │   ├── interposable.list
│   │   │   ├── libmalloc.dirty
│   │   │   ├── libmalloc.xcconfig
│   │   │   ├── libmalloc_eos.xcconfig
│   │   │   ├── libmalloc_resolved.xcconfig
│   │   │   ├── libmalloc_resolver.xcconfig
│   │   │   └── libmalloc_static.xcconfig
│   │   └── xcodescripts/
│   │       ├── install-codes.sh
│   │       ├── manpages.sh
│   │       ├── reindent.sh
│   │       └── sanitise_headers.sh
│   └── objc4-750/
│       ├── APPLE_LICENSE
│       ├── ReleaseNotes.rtf
│       ├── interposable.txt
│       ├── libobjc.order
│       ├── markgc.cpp
│       ├── objc.sln
│       ├── objc.vcproj
│       ├── objc.xcodeproj/
│       │   ├── project.pbxproj
│       │   └── project.xcworkspace/
│       │       ├── contents.xcworkspacedata
│       │       └── xcshareddata/
│       │           └── IDEWorkspaceChecks.plist
│       ├── objcrt/
│       │   └── objcrt.vcproj
│       ├── prebuild.bat
│       ├── runtime/
│       │   ├── Messengers.subproj/
│       │   │   ├── objc-msg-arm.s
│       │   │   ├── objc-msg-arm64.s
│       │   │   ├── objc-msg-i386.s
│       │   │   ├── objc-msg-simulator-i386.s
│       │   │   ├── objc-msg-simulator-x86_64.s
│       │   │   ├── objc-msg-win32.m
│       │   │   └── objc-msg-x86_64.s
│       │   ├── Module/
│       │   │   ├── ObjectiveC.apinotes
│       │   │   └── module.modulemap
│       │   ├── NSObjCRuntime.h
│       │   ├── NSObject.h
│       │   ├── NSObject.mm
│       │   ├── Object.h
│       │   ├── Object.mm
│       │   ├── OldClasses.subproj/
│       │   │   ├── List.h
│       │   │   └── List.m
│       │   ├── Protocol.h
│       │   ├── Protocol.mm
│       │   ├── arm64-asm.h
│       │   ├── hashtable.h
│       │   ├── hashtable2.h
│       │   ├── hashtable2.mm
│       │   ├── isa.h
│       │   ├── llvm-AlignOf.h
│       │   ├── llvm-DenseMap.h
│       │   ├── llvm-DenseMapInfo.h
│       │   ├── llvm-MathExtras.h
│       │   ├── llvm-type_traits.h
│       │   ├── maptable.h
│       │   ├── maptable.mm
│       │   ├── message.h
│       │   ├── objc-abi.h
│       │   ├── objc-accessors.mm
│       │   ├── objc-api.h
│       │   ├── objc-auto.h
│       │   ├── objc-auto.mm
│       │   ├── objc-block-trampolines.h
│       │   ├── objc-block-trampolines.mm
│       │   ├── objc-blocktramps-arm.s
│       │   ├── objc-blocktramps-arm64.s
│       │   ├── objc-blocktramps-i386.s
│       │   ├── objc-blocktramps-x86_64.s
│       │   ├── objc-cache-old.h
│       │   ├── objc-cache-old.mm
│       │   ├── objc-cache.h
│       │   ├── objc-cache.mm
│       │   ├── objc-class-old.mm
│       │   ├── objc-class.h
│       │   ├── objc-class.mm
│       │   ├── objc-config.h
│       │   ├── objc-env.h
│       │   ├── objc-errors.mm
│       │   ├── objc-exception.h
│       │   ├── objc-exception.mm
│       │   ├── objc-file-old.h
│       │   ├── objc-file-old.mm
│       │   ├── objc-file.h
│       │   ├── objc-file.mm
│       │   ├── objc-gdb.h
│       │   ├── objc-initialize.h
│       │   ├── objc-initialize.mm
│       │   ├── objc-internal.h
│       │   ├── objc-layout.mm
│       │   ├── objc-load.h
│       │   ├── objc-load.mm
│       │   ├── objc-loadmethod.h
│       │   ├── objc-loadmethod.mm
│       │   ├── objc-lockdebug.h
│       │   ├── objc-lockdebug.mm
│       │   ├── objc-locks-new.h
│       │   ├── objc-locks-old.h
│       │   ├── objc-locks.h
│       │   ├── objc-object.h
│       │   ├── objc-opt.mm
│       │   ├── objc-os.h
│       │   ├── objc-os.mm
│       │   ├── objc-private.h
│       │   ├── objc-probes.d
│       │   ├── objc-ptrauth.h
│       │   ├── objc-references.h
│       │   ├── objc-references.mm
│       │   ├── objc-runtime-new.h
│       │   ├── objc-runtime-new.mm
│       │   ├── objc-runtime-old.h
│       │   ├── objc-runtime-old.mm
│       │   ├── objc-runtime.h
│       │   ├── objc-runtime.mm
│       │   ├── objc-sel-old.mm
│       │   ├── objc-sel-set.h
│       │   ├── objc-sel-set.mm
│       │   ├── objc-sel-table.s
│       │   ├── objc-sel.mm
│       │   ├── objc-sync.h
│       │   ├── objc-sync.mm
│       │   ├── objc-typeencoding.mm
│       │   ├── objc-weak.h
│       │   ├── objc-weak.mm
│       │   ├── objc.h
│       │   ├── objcrt.c
│       │   ├── objcrt.h
│       │   └── runtime.h
│       ├── unexported_symbols
│       ├── version.bat
│       └── version.rc
├── LICENSE
├── README.md
├── category分析.md
├── isa&&Class&&meta-class.md
└── 什么是NSObject.md
Download .txt
SYMBOL INDEX (1696 symbols across 110 files)

FILE: InterView-obj-isa-class/libmalloc-166.220.1/include/malloc/malloc.h
  type _malloc_zone_t (line 64) | struct _malloc_zone_t {
  type vm_range_t (line 194) | typedef struct {
  type malloc_statistics_t (line 199) | typedef struct malloc_statistics_t {
  type kern_return_t (line 206) | typedef kern_return_t memory_reader_t(task_t remote_task, vm_address_t r...
  type malloc_introspection_t (line 218) | typedef struct malloc_introspection_t {
  type mstats (line 273) | struct mstats {
  type mstats (line 281) | struct mstats

FILE: InterView-obj-isa-class/libmalloc-166.220.1/private/stack_logging.h
  type stack_logging_mode_type (line 60) | typedef enum {
  type mach_stack_logging_record_t (line 86) | typedef struct mach_stack_logging_record {
  type backtrace_uniquing_table (line 127) | struct backtrace_uniquing_table
  type backtrace_uniquing_table (line 130) | struct backtrace_uniquing_table
  type backtrace_uniquing_table (line 137) | struct backtrace_uniquing_table
  type backtrace_uniquing_table (line 143) | struct backtrace_uniquing_table
  type backtrace_uniquing_table (line 147) | struct backtrace_uniquing_table
  type backtrace_uniquing_table (line 151) | struct backtrace_uniquing_table
  type backtrace_uniquing_table (line 156) | struct backtrace_uniquing_table
  type backtrace_uniquing_table (line 160) | struct backtrace_uniquing_table

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/base.h
  type msize_t (line 125) | typedef unsigned short msize_t;
  type grain_t (line 127) | typedef unsigned int grain_t;
  type large_entry_t (line 128) | typedef struct large_entry_s large_entry_t;
  type szone_t (line 129) | typedef struct szone_s szone_t;
  type rack_t (line 130) | typedef struct rack_s rack_t;
  type magazine_t (line 131) | typedef struct magazine_s magazine_t;
  type mag_index_t (line 132) | typedef int mag_index_t;

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/bitarray.c
  function __ffsll (line 37) | STATIC_INLINE unsigned
  function STATIC_INLINE (line 53) | STATIC_INLINE bool
  function STATIC_INLINE (line 60) | STATIC_INLINE void
  function STATIC_INLINE (line 67) | STATIC_INLINE bool
  function STATIC_INLINE (line 80) | STATIC_INLINE bool
  function STATIC_INLINE (line 95) | STATIC_INLINE bool
  function STATIC_INLINE (line 108) | STATIC_INLINE void
  function STATIC_INLINE (line 115) | STATIC_INLINE bool
  function STATIC_INLINE (line 128) | STATIC_INLINE bool
  function STATIC_INLINE (line 143) | STATIC_INLINE bool
  function STATIC_INLINE (line 174) | STATIC_INLINE bool
  function STATIC_INLINE (line 180) | STATIC_INLINE void
  function STATIC_INLINE (line 186) | STATIC_INLINE bool
  function STATIC_INLINE (line 193) | STATIC_INLINE bool
  function STATIC_INLINE (line 201) | STATIC_INLINE bool
  function STATIC_INLINE (line 208) | STATIC_INLINE void
  function STATIC_INLINE (line 214) | STATIC_INLINE bool
  function STATIC_INLINE (line 221) | STATIC_INLINE bool
  function STATIC_INLINE (line 232) | STATIC_INLINE bool
  function STATIC_INLINE (line 247) | STATIC_INLINE bool
  function FFS (line 261) | STATIC_INLINE unsigned
  function bitarray_size (line 280) | size_t
  function bitarray_t (line 292) | bitarray_t
  function bitarray_get (line 298) | bool
  function bitarray_set (line 313) | bool
  function bitarray_zap (line 364) | bool
  function index_t (line 474) | index_t
  function bitarray_zap_first_set (line 495) | bool
  function FFS_and_zap_word (line 533) | static unsigned
  function bitarray_zap_first_set_multiple (line 566) | unsigned
  function print_ones (line 607) | static void print_ones(const uint64_t *bits, unsigned num_big_words) {
  function bitarray_print (line 622) | void bitarray_print(bitarray_t bits, unsigned log_size) {
  function compare_to_truth (line 648) | bool compare_to_truth(bitarray_t bits, unsigned nbits, const bool *truth) {
  function first_set_in_truth (line 667) | unsigned first_set_in_truth(const bool *truth, unsigned log_size) {
  function truth_print (line 674) | void truth_print(const bool *truth, unsigned log_size) {

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/bitarray.h
  type index_t (line 28) | typedef uint32_t index_t;
  function BITARRAY_SET (line 58) | void
  function BITARRAY_CLR (line 66) | void
  function boolean_t (line 72) | boolean_t

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/frozen_malloc.c
  type malloc_frozen (line 48) | typedef struct {
  function frozen_free (line 88) | static void
  function frozen_destroy (line 93) | static void
  function malloc_freezedry (line 113) | uintptr_t
  function malloc_jumpstart (line 149) | int

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/legacy_malloc.c
  function MALLOC_NOINLINE (line 30) | static MALLOC_NOINLINE void *
  function malloc_zone_t (line 46) | malloc_zone_t *

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/locking.h
  type os_unfair_lock (line 36) | typedef os_unfair_lock _malloc_lock_s;
  function _malloc_lock_init (line 39) | __attribute__((always_inline))
  function MALLOC_ALWAYS_INLINE (line 45) | MALLOC_ALWAYS_INLINE
  function MALLOC_ALWAYS_INLINE (line 52) | MALLOC_ALWAYS_INLINE
  function MALLOC_ALWAYS_INLINE (line 58) | MALLOC_ALWAYS_INLINE
  function MALLOC_ALWAYS_INLINE (line 64) | MALLOC_ALWAYS_INLINE

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/magazine_inline.h
  function MALLOC_ALWAYS_INLINE (line 45) | MALLOC_ALWAYS_INLINE
  function MALLOC_INLINE (line 92) | static MALLOC_INLINE void recirc_list_extract(rack_t *rack, magazine_t *...
  function MALLOC_INLINE (line 102) | static MALLOC_INLINE kern_return_t
  function platform_hw_memsize (line 112) | uint64_t
  function platform_cpu_count (line 127) | uint32_t
  function SZONE_LOCK (line 139) | void
  function SZONE_UNLOCK (line 145) | void
  function SZONE_TRY_LOCK (line 151) | bool
  function SZONE_REINIT_LOCK (line 157) | void
  function SZONE_MAGAZINE_PTR_LOCK (line 163) | void
  function SZONE_MAGAZINE_PTR_UNLOCK (line 169) | void
  function SZONE_MAGAZINE_PTR_TRY_LOCK (line 175) | bool
  function SZONE_MAGAZINE_PTR_REINIT_LOCK (line 181) | void
  function MALLOC_NOINLINE (line 189) | static MALLOC_NOINLINE void
  function MALLOC_INLINE (line 198) | static MALLOC_INLINE uintptr_t
  function free_list_count (line 217) | static unsigned
  function MALLOC_INLINE (line 236) | static MALLOC_INLINE uintptr_t
  function MALLOC_INLINE (line 243) | static MALLOC_INLINE void *
  function MALLOC_INLINE (line 264) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 283) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 299) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 330) | static MALLOC_INLINE rgnhdl_t
  function hash_region_insert_no_lock (line 366) | static void
  function region_t (line 398) | static region_t *
  function MALLOC_INLINE (line 410) | static MALLOC_INLINE region_t *
  function mag_max_magazines (line 441) | unsigned int
  function MALLOC_INLINE (line 449) | static MALLOC_INLINE magazine_t *
  function MALLOC_INLINE (line 479) | static MALLOC_INLINE region_t
  function msize_t (line 493) | static msize_t
  function MALLOC_INLINE (line 512) | static MALLOC_INLINE msize_t
  function MALLOC_INLINE (line 566) | static MALLOC_INLINE region_t

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/magazine_large.c
  function large_debug_print (line 27) | static void
  function large_entry_t (line 50) | static large_entry_t *
  function large_entry_t (line 87) | large_entry_t *
  function large_entry_insert_no_lock (line 120) | static void
  function MALLOC_INLINE (line 146) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 177) | static MALLOC_INLINE large_entry_t *
  function large_entries_free_no_lock (line 188) | void
  function large_entry_t (line 197) | static large_entry_t *
  function vm_range_t (line 238) | static vm_range_t
  function kern_return_t (line 269) | kern_return_t
  function free_large (line 498) | void
  function large_try_realloc_in_place (line 740) | int
  function boolean_t (line 782) | boolean_t

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/magazine_lite.c
  type malloc_stack_id (line 26) | typedef uint64_t malloc_stack_id;
  function malloc_stack_id (line 30) | static malloc_stack_id
  function set_stack_id_in_ptr (line 38) | static void
  function add_stack_to_ptr (line 47) | static void
  function boolean_t (line 77) | boolean_t is_stack_logging_lite_enabled(void) {
  function enable_stack_logging_lite (line 81) | void
  function disable_stack_logging_lite (line 87) | void
  type _malloc_zone_t (line 124) | struct _malloc_zone_t
  function stack_logging_lite_free (line 167) | static void
  function stack_logging_lite_free_definite_size (line 183) | static void
  function stack_logging_lite_size (line 259) | static size_t
  function stack_logging_lite_batch_malloc (line 274) | unsigned
  function stack_logging_lite_batch_free (line 292) | void
  function malloc_zone_t (line 314) | malloc_zone_t *

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/magazine_malloc.c
  function szone_free (line 57) | void
  function szone_free_definite_size (line 111) | void
  function MALLOC_NOINLINE (line 169) | MALLOC_NOINLINE void *
  function szone_size_try_large (line 254) | size_t
  function szone_size (line 274) | size_t
  function szone_batch_malloc (line 515) | unsigned
  function szone_batch_free (line 525) | void
  function szone_destroy (line 550) | static void
  function szone_good_size (line 614) | size_t
  function boolean_t (line 654) | boolean_t
  function MALLOC_NOINLINE (line 666) | static MALLOC_NOINLINE boolean_t
  function boolean_t (line 732) | static boolean_t
  function kern_return_t (line 750) | static kern_return_t
  function scalable_zone_info (line 786) | void
  function MALLOC_NOINLINE (line 838) | static MALLOC_NOINLINE void
  function szone_log (line 895) | static void
  function MALLOC_INLINE (line 905) | static MALLOC_INLINE void
  function szone_force_lock (line 919) | static void
  function szone_force_unlock (line 937) | static void
  function szone_reinit_lock (line 953) | static void
  function boolean_t (line 969) | static boolean_t
  function szone_pressure_relief (line 999) | size_t
  function boolean_t (line 1204) | boolean_t
  function szone_statistics (line 1262) | static void
  type malloc_introspection_t (line 1297) | struct malloc_introspection_t
  function szone_t (line 1304) | szone_t *
  function malloc_zone_t (line 1420) | malloc_zone_t *

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/magazine_rack.c
  function rack_init (line 26) | void
  function rack_destroy_regions (line 86) | void
  function rack_destroy (line 100) | void
  function rack_region_insert (line 116) | void

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/magazine_rack.h
  type region_t (line 32) | typedef region_t *rgnhdl_t;
  type region_hash_generation_t (line 40) | typedef struct region_hash_generation {
  type rack_t (line 57) | typedef struct rack_s {

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/magazine_small.c
  function MALLOC_INLINE (line 35) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 44) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 54) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 63) | static MALLOC_INLINE void
  function mag_index_t (line 70) | mag_index_t
  function MALLOC_INLINE (line 90) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 98) | static MALLOC_INLINE free_list_t
  function MALLOC_INLINE (line 109) | static MALLOC_INLINE free_list_t
  function MALLOC_INLINE (line 115) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 121) | static MALLOC_INLINE free_list_t
  function MALLOC_INLINE (line 127) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 137) | static MALLOC_INLINE boolean_t
  function MALLOC_INLINE (line 145) | static MALLOC_INLINE boolean_t
  function MALLOC_INLINE (line 153) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 159) | static MALLOC_INLINE free_list_t
  function MALLOC_INLINE (line 165) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 171) | static MALLOC_INLINE free_list_t
  function MALLOC_INLINE (line 177) | static MALLOC_INLINE void *
  function MALLOC_INLINE (line 185) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 191) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 201) | static MALLOC_INLINE oob_free_entry_t
  function MALLOC_INLINE (line 221) | static MALLOC_INLINE oob_free_entry_t
  function MALLOC_INLINE (line 240) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 250) | static MALLOC_INLINE free_list_t
  function MALLOC_INLINE (line 261) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 271) | static MALLOC_INLINE free_list_t
  function MALLOC_INLINE (line 282) | static MALLOC_INLINE void *
  function MALLOC_INLINE (line 296) | static MALLOC_INLINE free_list_t
  function MALLOC_INLINE (line 320) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 334) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 349) | static MALLOC_INLINE void
  function small_free_list_count (line 363) | static MALLOC_INLINE unsigned int
  function free_list_t (line 379) | static free_list_t
  function small_free_list_remove_ptr_no_clear (line 429) | static void
  function small_free_list_remove_ptr (line 488) | static void
  function free_list_t (line 503) | static free_list_t
  function small_finalize_region (line 532) | void
  function small_free_detach_region (line 602) | int
  function small_free_reattach_region (line 637) | size_t
  type small_pg_pair_t (line 669) | typedef struct {
  function small_free_scan_madvise_free (line 673) | void
  function region_t (line 744) | static region_t
  function boolean_t (line 818) | static boolean_t
  function MALLOC_INLINE (line 891) | static MALLOC_INLINE void
  function region_t (line 951) | static region_t
  function boolean_t (line 995) | static boolean_t
  function MALLOC_INLINE (line 1069) | static MALLOC_INLINE boolean_t
  function MALLOC_INLINE (line 1133) | static MALLOC_INLINE boolean_t
  function boolean_t (line 1337) | boolean_t
  function boolean_t (line 1523) | boolean_t
  function kern_return_t (line 1613) | kern_return_t
  function small_size (line 1971) | size_t
  function MALLOC_NOINLINE (line 2008) | static MALLOC_NOINLINE void
  function free_small (line 2017) | void
  function print_small_free_list (line 2093) | void
  function print_small_region (line 2120) | void
  function boolean_t (line 2198) | boolean_t

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/magazine_tiny.c
  function mag_index_t (line 42) | mag_index_t
  function msize_t (line 65) | static msize_t
  function MALLOC_INLINE (line 84) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 159) | static MALLOC_INLINE void set_tiny_meta_header_in_use_1(const void *ptr)...
  function MALLOC_INLINE (line 176) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 192) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 232) | static MALLOC_INLINE boolean_t
  function MALLOC_INLINE (line 248) | static MALLOC_INLINE void *
  function tiny_free_list_add_ptr (line 292) | static void
  function tiny_free_list_remove_ptr (line 335) | static void
  function tiny_finalize_region (line 394) | void
  function tiny_free_detach_region (line 473) | int
  function tiny_free_reattach_region (line 505) | size_t
  type tiny_pg_pair_t (line 537) | typedef struct {
  function tiny_free_scan_madvise_free (line 541) | void
  function region_t (line 615) | static region_t
  function MALLOC_INLINE (line 675) | static MALLOC_INLINE void
  function boolean_t (line 724) | static boolean_t
  function region_t (line 798) | static region_t
  function boolean_t (line 845) | static boolean_t
  function MALLOC_INLINE (line 925) | static MALLOC_INLINE boolean_t
  function boolean_t (line 987) | boolean_t
  function boolean_t (line 1241) | boolean_t
  function boolean_t (line 1413) | boolean_t
  function kern_return_t (line 1562) | kern_return_t
  function tiny_size (line 2022) | size_t
  function MALLOC_NOINLINE (line 2062) | static MALLOC_NOINLINE void
  function free_tiny (line 2071) | void
  function tiny_batch_malloc (line 2156) | unsigned
  function tiny_batch_free (line 2191) | void
  function print_tiny_free_list (line 2257) | void
  function print_tiny_region (line 2284) | void
  function boolean_t (line 2374) | boolean_t

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/magazine_zone.h
  type MALLOC_PACKED (line 37) | typedef struct {
  type _inplace_free_entry_s (line 45) | struct _inplace_free_entry_s
  type inplace_linkage_s (line 47) | typedef struct {
  type inplace_union (line 52) | typedef union {
  type inplace_free_entry_s (line 57) | typedef struct _inplace_free_entry_s {
  type small_inplace_free_entry_s (line 68) | typedef struct _small_inplace_free_entry_s {
  type free_list_t (line 73) | typedef union {
  type tiny_free_list_t (line 80) | typedef struct {
  type grain_t (line 85) | typedef unsigned int grain_t;
  type mag_index_t (line 87) | typedef int mag_index_t;
  type tiny_header_inuse_pair_t (line 197) | typedef struct tiny_header_inuse_pair {
  type region_trailer_t (line 202) | typedef struct region_trailer {
  type tiny_region (line 211) | struct tiny_region {
  type small_region (line 391) | struct small_region {
  type small_region (line 400) | struct small_region
  type large_entry_t (line 443) | typedef struct large_entry_s {
  type magazine_t (line 457) | typedef struct magazine_s { // vm_allocate()'d, so the array of magazine...
  type szone_t (line 527) | typedef struct szone_s {	  // vm_allocate()'d, so page-aligned to begin ...

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/malloc.c
  function __entropy_from_kernel (line 129) | static int
  function __malloc_init_from_bootargs (line 159) | static void
  function __malloc_init (line 183) | void
  function MALLOC_ALWAYS_INLINE (line 225) | MALLOC_ALWAYS_INLINE
  function default_zone_size (line 231) | static size_t
  function default_zone_free (line 263) | static void
  function default_zone_destroy (line 279) | static void
  function default_zone_batch_malloc (line 287) | static unsigned
  function default_zone_batch_free (line 295) | static void
  function default_zone_free_definite_size (line 311) | static void
  function default_zone_pressure_relief (line 319) | static size_t
  function boolean_t (line 327) | static boolean_t
  function kern_return_t (line 335) | static kern_return_t
  function default_zone_good_size (line 348) | static size_t
  function boolean_t (line 356) | static boolean_t
  function default_zone_print (line 364) | static void
  function default_zone_log (line 372) | static void
  function default_zone_force_lock (line 380) | static void
  function default_zone_force_unlock (line 388) | static void
  function default_zone_statistics (line 396) | static void
  function boolean_t (line 404) | static boolean_t
  function default_zone_reinit_lock (line 412) | static void
  type malloc_introspection_t (line 420) | struct malloc_introspection_t
  type virtual_default_zone_t (line 437) | typedef struct {
  function boolean_t (line 467) | static boolean_t
  function malloc_zone_t (line 478) | static inline malloc_zone_t *
  function malloc_error_break (line 562) | void
  function malloc_gdb_po_unsafe (line 572) | int
  function malloc_zone_register_while_locked (line 610) | static void
  function create_and_insert_lite_zone_while_locked (line 678) | static void
  function boolean_t (line 689) | boolean_t
  function turn_off_stack_logging (line 779) | void
  function _malloc_initialize (line 830) | static void
  function MALLOC_ALWAYS_INLINE (line 954) | MALLOC_ALWAYS_INLINE
  function malloc_zone_t (line 961) | static inline malloc_zone_t *
  function malloc_zone_t (line 969) | malloc_zone_t *
  function malloc_zone_t (line 976) | static inline malloc_zone_t *
  function zeroify_scalable_zone (line 1030) | void
  function malloc_engaged_nano (line 1048) | int
  function malloc_zone_t (line 1058) | malloc_zone_t *
  function set_flags_from_environment (line 1078) | static void
  function malloc_zone_t (line 1295) | malloc_zone_t *
  function malloc_create_legacy_default_zone (line 1314) | void
  function malloc_destroy_zone (line 1348) | void
  function MALLOC_NOINLINE (line 1359) | MALLOC_NOINLINE
  function internal_check (line 1429) | static void
  function malloc_zone_free (line 1532) | void
  function malloc_zone_free_definite_size (line 1547) | static void
  function malloc_zone_t (line 1562) | malloc_zone_t *
  function boolean_t (line 1605) | boolean_t
  function malloc_zone_register (line 1628) | void
  function malloc_zone_unregister (line 1636) | void
  function malloc_set_zone_name (line 1684) | void
  function free (line 1738) | void
  function vfree (line 1813) | extern void
  function malloc_size (line 1819) | size_t
  function malloc_good_size (line 1832) | size_t
  function posix_memalign (line 1855) | int
  function boolean_t (line 1879) | boolean_t
  function malloc_zone_t (line 1939) | static malloc_zone_t *
  function malloc_make_purgeable (line 1969) | void
  function malloc_make_nonpurgeable (line 1984) | int
  function malloc_enter_process_memory_limit_warn_mode (line 2002) | void
  function boolean_t (line 2017) | static boolean_t
  function boolean_t (line 2039) | static boolean_t
  function handle_msl_memory_event (line 2055) | static void
  function malloc_memory_event_handler (line 2121) | void
  function malloc_zone_pressure_relief (line 2175) | size_t
  function malloc_zone_batch_malloc (line 2216) | unsigned
  function malloc_zone_batch_free (line 2238) | void
  function kern_return_t (line 2267) | static kern_return_t
  function kern_return_t (line 2274) | kern_return_t
  function malloc_zone_print_ptr_info (line 2318) | void
  function boolean_t (line 2333) | boolean_t
  function malloc_zone_print (line 2351) | void
  function malloc_zone_statistics (line 2365) | void
  function malloc_zone_log (line 2385) | void
  function mag_set_thread_index (line 2401) | void
  function DefaultMallocError (line 2410) | static void
  function _malloc_lock_all (line 2435) | static void
  function _malloc_unlock_all (line 2447) | static void
  function _malloc_reinit_lock_all (line 2459) | static void
  function _malloc_fork_prepare (line 2479) | void
  function _malloc_fork_parent (line 2486) | void
  function _malloc_fork_child (line 2493) | void
  function mstats (line 2515) | struct mstats
  function boolean_t (line 2531) | boolean_t
  function malloc_zone_disable_discharge_checking (line 2543) | void
  function malloc_zone_discharge (line 2555) | void
  function malloc_zone_enumerate_discharged_pointers (line 2573) | void
  function set_malloc_singlethreaded (line 2605) | void
  function malloc_singlethreaded (line 2617) | void
  function malloc_debug (line 2627) | int

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/malloc_common.c
  function malloc_common_convert_to_long (line 54) | long

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/malloc_printf.c
  type write_debug_mode_t (line 28) | typedef enum {
  function _malloc_default_debug_sleep_time (line 45) | static unsigned _malloc_default_debug_sleep_time()
  function malloc_print_configure (line 58) | void
  function _malloc_put (line 94) | static void
  function MALLOC_NOINLINE (line 126) | MALLOC_NOINLINE void
  function MALLOC_NOEXPORT (line 187) | MALLOC_NOEXPORT void
  function malloc_zone_error (line 199) | void
  function malloc_printf (line 222) | void

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/nano_malloc.c
  function nano_mag_index (line 36) | static MALLOC_ALWAYS_INLINE unsigned int
  function boolean_t (line 46) | static boolean_t
  function boolean_t (line 72) | static boolean_t
  function divrem (line 146) | static inline unsigned long
  function MALLOC_INLINE (line 155) | static MALLOC_INLINE void *
  function MALLOC_INLINE (line 193) | static MALLOC_INLINE size_t
  function MALLOC_INLINE (line 208) | static MALLOC_INLINE index_t
  function MALLOC_INLINE (line 220) | static MALLOC_INLINE uintptr_t
  function kern_return_t (line 231) | static kern_return_t
  function boolean_t (line 476) | boolean_t
  function MALLOC_INLINE (line 522) | static MALLOC_INLINE size_t
  function MALLOC_INLINE (line 554) | static MALLOC_INLINE size_t
  function MALLOC_ALWAYS_INLINE (line 560) | static MALLOC_ALWAYS_INLINE boolean_t
  function MALLOC_ALWAYS_INLINE (line 567) | static MALLOC_ALWAYS_INLINE void
  function MALLOC_INLINE (line 574) | static MALLOC_INLINE size_t
  function MALLOC_INLINE (line 597) | static MALLOC_INLINE size_t
  type chained_block_s (line 626) | struct chained_block_s
  function MALLOC_INLINE (line 722) | static MALLOC_INLINE size_t
  function MALLOC_INLINE (line 728) | static MALLOC_INLINE size_t
  function MALLOC_INLINE (line 735) | static MALLOC_INLINE void _nano_free_trusted_size_check_scribble(nanozon...
  function MALLOC_INLINE (line 761) | static MALLOC_INLINE void _nano_free_check_scribble(nanozone_t *nanozone...
  function MALLOC_INLINE (line 769) | static MALLOC_INLINE void *
  function MALLOC_INLINE (line 821) | static MALLOC_INLINE void
  function MALLOC_INLINE (line 911) | static MALLOC_INLINE void
  function nano_free_definite_size (line 936) | static void
  function nano_free_definite_size_scribble (line 942) | static void
  function MALLOC_INLINE (line 948) | static MALLOC_INLINE void __nano_free(nanozone_t *nanozone, void *ptr, b...
  function nano_free (line 976) | static void
  function nano_forked_free (line 982) | static void
  function nano_forked_free_definite_size (line 1006) | static void
  function nano_free_scribble (line 1012) | static void
  function nano_size (line 1018) | static size_t
  function nano_destroy (line 1118) | static void
  function nano_batch_malloc (line 1127) | static unsigned
  function nano_forked_batch_malloc (line 1153) | static unsigned
  function nano_batch_free (line 1160) | static void
  function nano_forked_batch_free (line 1179) | static void
  function boolean_t (line 1205) | static boolean_t
  function boolean_t (line 1218) | static boolean_t
  function nano_try_madvise (line 1226) | static size_t
  function nano_pressure_relief (line 1472) | static size_t
  function kern_return_t (line 1488) | static kern_return_t
  function nano_good_size (line 1514) | static size_t
  function boolean_t (line 1530) | static boolean_t
  function boolean_t (line 1536) | static boolean_t
  function count_free (line 1554) | static unsigned
  function nano_print (line 1590) | static void
  function nano_log (line 1716) | static void
  function nano_force_lock (line 1721) | static void
  function nano_force_unlock (line 1731) | static void
  function nano_reinit_lock (line 1741) | static void
  function nano_statistics (line 1751) | static void
  function boolean_t (line 1794) | static boolean_t
  function boolean_t (line 1808) | static boolean_t
  type malloc_introspection_t (line 1816) | struct malloc_introspection_t
  function nano_forked_zone (line 1823) | void
  function malloc_zone_t (line 1853) | malloc_zone_t *
  function nano_init (line 1931) | void
  function nano_configure (line 1948) | void

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/nano_malloc.h
  type nanozone_t (line 28) | typedef struct nanozone_s nanozone_t;

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/nano_malloc_common.c
  type nanov2_mode_t (line 32) | typedef enum {
  function nano_common_init (line 72) | void
  function nano_common_configure (line 155) | void
  function boolean_t (line 243) | boolean_t
  function nano_common_deallocate_pages (line 261) | void
  function kern_return_t (line 278) | kern_return_t
  function nano_common_cpu_number_override_set (line 289) | void

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/nano_malloc_common.h
  type nano_version_t (line 34) | typedef enum {

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/nano_zone.h
  type nano_blk_addr_s (line 49) | struct nano_blk_addr_s {
  type nano_blk_addr_s (line 59) | struct nano_blk_addr_s {
  type nano_blk_addr_t (line 70) | typedef union  {
  type chained_block_s (line 90) | struct chained_block_s {
  type nano_meta_s (line 95) | struct nano_meta_s {
  type nanozone_t (line 111) | typedef struct nanozone_s {

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/nano_zone_common.h
  function MALLOC_INLINE (line 50) | static MALLOC_INLINE size_t

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/nanov2_malloc.c
  type nanov2_block_scan_policy_t (line 57) | typedef enum {
  type nanov2_madvise_policy_t (line 73) | typedef enum {
  type nanov2_policy_config_t (line 79) | typedef struct nanov2_policy_config_s {
  function nanov2_meta_index_t (line 215) | nanov2_meta_index_t
  function nanov2_block_index_t (line 221) | nanov2_block_index_t
  function nanov2_meta_index_t (line 227) | nanov2_meta_index_t
  function boolean_t (line 237) | boolean_t
  function boolean_t (line 250) | boolean_t
  function boolean_t (line 258) | boolean_t
  function nanov2_size_from_size_class (line 273) | int
  function nanov2_size_class_t (line 283) | nanov2_size_class_t
  function nanov2_block_t (line 294) | nanov2_block_t *
  function nanov2_arena_t (line 303) | nanov2_arena_t *
  function nanov2_region_t (line 312) | nanov2_region_t *
  function nanov2_arena_metablock_t (line 321) | nanov2_arena_metablock_t *
  function nanov2_block_t (line 334) | nanov2_block_t *
  function nanov2_block_t (line 351) | nanov2_block_t *
  function nanov2_block_index_t (line 362) | nanov2_block_index_t
  function nanov2_block_meta_t (line 372) | nanov2_block_meta_t *
  function nanov2_arena_t (line 384) | nanov2_arena_t *
  function nanov2_arena_t (line 393) | nanov2_arena_t *
  function nanov2_region_linkage_t (line 409) | nanov2_region_linkage_t *
  function nanov2_region_t (line 420) | nanov2_region_t *
  function nanov2_slot_index_in_block (line 444) | int
  function nanov2_size_class_t (line 455) | nanov2_size_class_t
  function nanov2_size_class_t (line 469) | nanov2_size_class_t
  function nanov2_block_meta_t (line 484) | nanov2_block_meta_t *
  function nanov2_block_meta_t (line 500) | nanov2_block_meta_t *
  function nanov2_block_meta_t (line 525) | nanov2_block_meta_t *
  function nanov2_turn_off_in_use (line 548) | void
  function nanov2_get_allocation_block_index (line 567) | int
  function nanov2_set_madvise_policy (line 605) | static void
  function nanov2_set_single_arena_size_classes (line 628) | static void
  function nanov2_set_block_scan_policy (line 673) | static void
  function nanov2_set_blocks_by_size_class (line 765) | static void
  function nanov2_init (line 802) | void
  function nanov2_configure_once (line 853) | static void
  function nanov2_configure (line 895) | void
  function nanov2_size (line 910) | size_t
  function nanov2_free_definite_size (line 936) | void
  function nanov2_free (line 954) | void
  function nanov2_destroy (line 1065) | static void
  function boolean_t (line 1075) | boolean_t
  function nanov2_batch_malloc (line 1081) | unsigned
  function nanov2_batch_free (line 1108) | void
  function nanov2_pressure_relief (line 1134) | size_t
  function kern_return_t (line 1214) | static kern_return_t
  function nanov2_good_size (line 1384) | static size_t
  function boolean_t (line 1394) | static boolean_t
  function nanov2_print (line 1401) | static void
  function nanov2_log (line 1601) | static void
  function nanov2_force_lock (line 1607) | static void
  function nanov2_force_unlock (line 1613) | static void
  function nanov2_reinit_lock (line 1619) | static void
  function boolean_t (line 1625) | static boolean_t
  function nanov2_statistics (line 1632) | static void
  type malloc_introspection_t (line 1695) | struct malloc_introspection_t
  function nanov2_pointer_size (line 1726) | size_t
  function boolean_t (line 1806) | boolean_t
  function boolean_t (line 1872) | static boolean_t
  function boolean_t (line 1887) | boolean_t
  function nanov2_block_meta_t (line 2086) | nanov2_block_meta_t *
  function MALLOC_NOINLINE (line 2258) | MALLOC_NOINLINE void *
  function nanov2_free_to_block (line 2462) | void
  function malloc_zone_t (line 2540) | malloc_zone_t *
  function nanov2_forked_free (line 2677) | void
  function nanov2_forked_free_definite_size (line 2699) | void
  function nanov2_forked_batch_malloc (line 2751) | static unsigned
  function nanov2_forked_batch_free (line 2763) | void
  function boolean_t (line 2782) | static boolean_t
  function nanov2_forked_zone (line 2790) | void

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/nanov2_malloc.h
  type nanozonev2_t (line 28) | typedef struct nanozonev2_s nanozonev2_t;

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/nanov2_zone.h
  type nanov2_addr_s (line 84) | struct nanov2_addr_s {
  type nanov2_addr_s (line 93) | struct nanov2_addr_s
  type nanov2_addr_s (line 99) | struct nanov2_addr_s {
  type nanov2_addr_s (line 108) | struct nanov2_addr_s
  type nanov2_addr_t (line 116) | typedef union  {
  type nanov2_size_class_t (line 122) | typedef unsigned nanov2_size_class_t;
  type nanov2_block_t (line 128) | typedef struct {
  type nanov2_arena_t (line 139) | typedef struct {
  type nanov2_block_meta_t (line 147) | typedef struct {
  type nanov2_block_meta_view_t (line 166) | typedef union {
  type nanov2_arena_metablock_t (line 173) | typedef struct {
  type nanov2_free_slot_t (line 181) | typedef struct {
  type nanov2_block_index_t (line 191) | typedef unsigned nanov2_block_index_t;
  type nanov2_meta_index_t (line 194) | typedef unsigned nanov2_meta_index_t;
  type nanov2_region_t (line 200) | typedef struct {
  type nanov2_region_linkage_t (line 206) | typedef struct {
  type nanov2_size_class_statistics (line 218) | typedef struct {
  type nanov2_statistics_t (line 225) | typedef struct {
  type nanozonev2_t (line 247) | typedef struct nanozonev2_s {

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/purgeable_malloc.c
  function purgeable_size (line 31) | static size_t
  function purgeable_free (line 74) | static void
  function purgeable_free_definite_size (line 89) | static void
  function purgeable_destroy (line 160) | static void
  function purgeable_batch_malloc (line 184) | static unsigned
  function purgeable_batch_free (line 190) | static void
  function kern_return_t (line 206) | static kern_return_t
  function purgeable_good_size (line 231) | static size_t
  function boolean_t (line 241) | static boolean_t
  function purgeable_print (line 247) | static void
  function purgeable_log (line 254) | static void
  function purgeable_force_lock (line 262) | static void
  function purgeable_force_unlock (line 268) | static void
  function purgeable_reinit_lock (line 274) | static void
  function purgeable_statistics (line 280) | static void
  function boolean_t (line 287) | static boolean_t
  function purgeable_pressure_relief (line 300) | static size_t
  type malloc_introspection_t (line 306) | struct malloc_introspection_t
  function boolean_t (line 314) | static boolean_t
  function malloc_zone_t (line 320) | malloc_zone_t *

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/radix_tree.c
  function radix_tree_panic (line 61) | static void __attribute__((noreturn)) radix_tree_panic(const char *fmt, ...
  type interval (line 71) | struct interval {
  type answer (line 76) | struct answer {
  function in_interval (line 82) | static inline bool
  function intervals_intersect (line 88) | static inline bool
  function __unused (line 97) | __unused static inline bool
  function truncate_interval (line 103) | static inline struct interval
  function answer_found (line 113) | static inline bool
  function fixnode (line 123) | static bool
  function radix_tree_lookup_recursive (line 143) | static struct answer
  function radix_tree_lookup_interval (line 224) | static struct answer
  function radix_tree_lookup (line 235) | uint64_t
  type radix_tree (line 241) | struct radix_tree
  function radix_tree_allocate_node (line 243) | static unsigned
  function radix_tree_free_node (line 267) | static void
  function radix_tree_insert_recursive (line 277) | static bool
  function radix_tree_insert (line 388) | bool
  function radix_tree_delete_recursive (line 417) | static bool
  function radix_tree_delete (line 457) | bool
  type radix_tree (line 495) | struct radix_tree
  type radix_tree (line 498) | struct radix_tree
  type radix_node (line 503) | struct radix_node
  type radix_tree (line 512) | struct radix_tree
  function radix_tree_grow (line 526) | static void
  function radix_tree_destory (line 566) | void
  function radix_tree_count_recursive (line 574) | static uint64_t
  function radix_tree_count (line 591) | uint64_t
  function radix_tree_size (line 597) | uint64_t

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/radix_tree.h
  type radix_tree (line 37) | struct radix_tree
  type radix_tree (line 47) | struct radix_tree
  type radix_tree (line 62) | struct radix_tree
  type radix_tree (line 75) | struct radix_tree
  type radix_tree (line 81) | struct radix_tree
  type radix_tree (line 88) | struct radix_tree
  type radix_tree (line 95) | struct radix_tree
  type radix_tree (line 101) | struct radix_tree

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/radix_tree_debug.c
  function radix_tree_fsck_recursive (line 29) | static
  function radix_tree_fsck (line 59) | bool
  function radix_tree_print_recursive (line 65) | static
  function radix_tree_print (line 96) | void

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/radix_tree_internal.h
  type radix_edge (line 35) | struct radix_edge {
  type radix_edge (line 42) | struct radix_edge
  type radix_node (line 44) | struct radix_node {
  type radix_node (line 61) | struct radix_node
  type radix_tree (line 64) | struct radix_tree {
  function leaf_size (line 72) | static inline
  function set_leaf_size (line 79) | static inline
  function edge_valid (line 91) | static inline
  function keybits (line 101) | static inline
  function extend_key (line 112) | static inline
  function edge_matches (line 126) | static inline
  function count_matching_bits (line 141) | static inline
  type radix_node (line 161) | struct radix_node
  type radix_tree (line 162) | struct radix_tree
  type radix_tree (line 174) | struct radix_tree
  type radix_tree (line 182) | struct radix_tree
  type radix_tree (line 188) | struct radix_tree

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/stack_logging_disk.c
  type stack_logging_index_event (line 84) | typedef struct {
  type stack_logging_index_event32 (line 90) | typedef struct {
  type stack_logging_index_event64 (line 96) | typedef struct {
  type table_chunk_header_t (line 104) | typedef struct table_chunk_header {
  type backtrace_uniquing_table (line 112) | typedef struct backtrace_uniquing_table {
  type stack_buffer_shared_memory (line 140) | typedef struct {
  type remote_index_node (line 151) | typedef struct {
  type remote_index_cache (line 157) | typedef struct {
  type remote_task_file_streams (line 172) | typedef struct {
  type mach_vm_address_t (line 183) | typedef mach_vm_address_t slot_address;
  type slot_parent (line 184) | typedef uint64_t slot_parent;
  type slot_refcount (line 185) | typedef uint64_t slot_refcount;
  type table_slot_index (line 186) | typedef uint64_t table_slot_index;
  type table_slot_t (line 189) | typedef struct {
  function sld_deallocate_pages (line 285) | static __attribute__((always_inline)) inline int
  function backtrace_uniquing_table (line 294) | static backtrace_uniquing_table *
  function __destroy_uniquing_table (line 324) | static void
  function boolean_t (line 332) | static boolean_t
  function add_new_slot (line 381) | static void
  function increment_slot_refcount (line 400) | static void
  function enter_frames_in_table (line 406) | static int
  function append_int (line 479) | static void
  function postpone_stack_logging (line 512) | static void
  function get_writeable_logging_directory (line 534) | static bool
  function my_mkstemps (line 578) | static int
  function delete_logging_file (line 711) | static int
  function delete_log_files (line 726) | static void
  function is_process_running (line 739) | static bool
  function reap_orphaned_log_files_in_hierarchy (line 767) | static void
  function reap_orphaned_log_files (line 845) | static void
  function disable_stack_logging (line 876) | static void
  function boolean_t (line 888) | __attribute__((visibility("hidden"))) boolean_t
  function __delete_uniquing_table_memory_while_locked (line 894) | __attribute__((visibility("hidden"))) void
  function robust_write (line 913) | static ssize_t
  function flush_data (line 966) | static void
  function boolean_t (line 998) | __attribute__((visibility("hidden"))) boolean_t
  function __prepare_to_log_stacks_stage2 (line 1070) | __attribute__((visibility("hidden"))) void
  function __malloc_lock_stack_logging (line 1109) | __attribute__((visibility("hidden"))) void
  function __malloc_unlock_stack_logging (line 1116) | __attribute__((visibility("hidden"))) void
  function __enter_stack_into_table_while_locked (line 1128) | __attribute__((visibility("hidden"))) uint64_t
  function decrement_ref_count (line 1170) | static void
  function __decrement_table_slot_refcount (line 1182) | __attribute__((visibility("hidden"))) void
  function __disk_stack_logging_log_stack (line 1218) | void
  function __stack_logging_fork_prepare (line 1392) | void
  function __stack_logging_fork_parent (line 1398) | void
  function __stack_logging_fork_child (line 1404) | void
  function __stack_logging_early_finished (line 1412) | void
  function boolean_t (line 1420) | __attribute__((visibility("hidden"))) boolean_t
  function free_uniquing_table_chunks (line 1463) | static void
  function kern_return_t (line 1477) | static kern_return_t
  function mach_vm_address_t (line 1525) | static mach_vm_address_t *
  function unwind_stack_from_table_index (line 1549) | static void
  function hash_index (line 1588) | __attribute__((always_inline)) static inline size_t
  function hash_multiplier (line 1594) | __attribute__((always_inline)) static inline size_t
  function next_hash (line 1600) | __attribute__((always_inline)) static inline size_t
  function transfer_node (line 1610) | static void
  function expand_cache (line 1634) | static void
  function insert_node (line 1660) | static void
  function mach_vm_address_t (line 1691) | static mach_vm_address_t
  function kern_return_t (line 1715) | static kern_return_t
  function destroy_cache_for_file_streams (line 1922) | static void
  function FILE (line 1939) | static FILE *
  function FILE (line 1971) | static FILE *
  function getenv_from_process (line 2007) | static bool
  function FILE (line 2084) | static FILE *
  function remote_task_file_streams (line 2118) | static remote_task_file_streams *
  function release_file_streams_for_task (line 2200) | static void
  function kern_return_t (line 2219) | kern_return_t
  function kern_return_t (line 2232) | kern_return_t
  function kern_return_t (line 2267) | kern_return_t
  function kern_return_t (line 2273) | kern_return_t
  function kern_return_t (line 2365) | kern_return_t
  function __mach_stack_logging_stackid_for_vm_region (line 2459) | uint64_t
  function kern_return_t (line 2483) | kern_return_t
  function kern_return_t (line 2494) | kern_return_t
  function kern_return_t (line 2531) | kern_return_t
  type backtrace_uniquing_table (line 2545) | struct backtrace_uniquing_table
  function __mach_stack_logging_uniquing_table_release (line 2576) | void
  function __mach_stack_logging_uniquing_table_retain (line 2590) | void
  function roundUp (line 2600) | static inline size_t roundUp(size_t x, size_t alignment)
  function __mach_stack_logging_uniquing_table_sizeof (line 2605) | size_t
  type backtrace_uniquing_table (line 2623) | struct backtrace_uniquing_table
  type backtrace_uniquing_table (line 2664) | struct backtrace_uniquing_table
  function main (line 2731) | int

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/vm.c
  function mvm_aslr_init (line 41) | void
  function mvm_deallocate_pages (line 222) | void
  function mvm_protect (line 240) | void
  function mvm_madvise_free (line 261) | int

FILE: InterView-obj-isa-class/libmalloc-166.220.1/src/vm.h
  function mvm_aslr_enabled (line 28) | static inline bool

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench.cpp
  function main (line 35) | int main(int argc, char** argv)

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/Benchmark.cpp
  type BenchmarkPair (line 55) | struct BenchmarkPair {
  function deallocateHeap (line 105) | static void deallocateHeap(void*** chunks, size_t heapSize, size_t chunk...
  type timeval (line 221) | struct timeval

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/Benchmark.h
  type BenchmarkPair (line 33) | struct BenchmarkPair
  function class (line 35) | class Benchmark {
  function isValid (line 67) | bool isValid() { return m_benchmarkPair; }

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/CPUCount.cpp
  function cpuCount (line 34) | size_t cpuCount()

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/CommandLine.cpp
  type option (line 30) | struct option

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/CommandLine.h
  function class (line 28) | class CommandLine {

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/Interpreter.cpp
  type stat (line 50) | struct stat

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/Interpreter.h
  function class (line 31) | class Interpreter {

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/balloon.cpp
  function benchmark_balloon (line 36) | void benchmark_balloon(bool isParallel)

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/big.cpp
  type Object (line 37) | struct Object {
  function benchmark_big (line 42) | void benchmark_big(bool isParallel)

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/churn.cpp
  type HeapDouble (line 33) | struct HeapDouble {
    method HeapDouble (line 37) | HeapDouble(double d) : value(d) { }
    method HeapDouble (line 38) | const HeapDouble& operator+=(const HeapDouble& other) { value += other...
  function benchmark_churn (line 42) | void benchmark_churn(bool isParallel)

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/fragment.cpp
  class Node (line 35) | class Node {
    method Node (line 47) | Node()
    method Node (line 53) | Node(Node* next)
    method Node (line 59) | Node* next() { return m_next; }
    method validate (line 61) | void validate()
  function validate (line 76) | void validate(Node* head)
  function benchmark_fragment (line 82) | void benchmark_fragment(bool isParallel)
  function benchmark_fragment_iterate (line 110) | void benchmark_fragment_iterate(bool isParallel)

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/list.cpp
  type Node (line 35) | struct Node {
    method Node (line 46) | Node(Node* next, size_t payloadSize)
    method ref (line 64) | void ref()
    method deref (line 69) | void deref()
    method Node (line 77) | Node* takeNext()
    method validate (line 84) | bool validate()
  function benchmark_list_allocate (line 99) | void benchmark_list_allocate(bool isParallel)
  function benchmark_list_traverse (line 127) | void benchmark_list_traverse(bool isParallel)

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/mbmalloc.cpp
  function mbfree (line 45) | void mbfree(void* p, size_t)
  function mbscavenge (line 55) | void mbscavenge()

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/medium.cpp
  type Object (line 37) | struct Object {
  function benchmark_medium (line 42) | void benchmark_medium(bool isParallel)

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/memalign.cpp
  function test (line 33) | void test(size_t alignment, size_t size)
  function benchmark_memalign (line 43) | void benchmark_memalign(bool isParallel)

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/message.cpp
  function hash (line 36) | size_t hash(size_t hash, unsigned short a, unsigned short b)
  class Node (line 42) | class Node {
    method Node (line 55) | Node()
    method hash (line 60) | size_t hash(size_t hash)
  class Message (line 71) | class Message {
    method Message (line 85) | Message()
    method hash (line 99) | size_t hash()
  function benchmark_message_one (line 113) | void benchmark_message_one(bool isParallel)
  function benchmark_message_many (line 141) | void benchmark_message_many(bool isParallel)

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/realloc.cpp
  function benchmark_realloc (line 32) | void benchmark_realloc(bool isParallel)

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/stress.cpp
  type Object (line 41) | struct Object {
    method Object (line 42) | Object(void* pointer, size_t size, long uuid)
  class SizeStream (line 54) | class SizeStream {
    method SizeStream (line 56) | SizeStream()
    method next (line 62) | size_t next()
  function Object (line 105) | Object allocate(size_t size)
    method Object (line 42) | Object(void* pointer, size_t size, long uuid)
  function deallocate (line 113) | void deallocate(const Object& object)
  function benchmark_stress (line 123) | void benchmark_stress(bool isParallel)

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/stress_aligned.cpp
  type Object (line 44) | struct Object {
    method Object (line 45) | Object(void* pointer, size_t size, long uuid)
  class SizeStream (line 57) | class SizeStream {
    method SizeStream (line 59) | SizeStream()
    method next (line 65) | size_t next()
  function Object (line 108) | Object allocate(size_t alignment, size_t size)
    method Object (line 45) | Object(void* pointer, size_t size, long uuid)
  function deallocate (line 118) | void deallocate(const Object& object)
  function randomAlignment (line 128) | size_t randomAlignment()
  function benchmark_stress_aligned (line 140) | void benchmark_stress_aligned(bool isParallel)

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/tree.cpp
  type Node (line 35) | struct Node {
    method Node (line 46) | Node(Node* left, Node* right, size_t payloadSize, size_t id)
    method ref (line 70) | void ref()
    method deref (line 75) | void deref()
    method id (line 83) | size_t id() { return m_id; }
    method Node (line 84) | Node* left() { return m_left; }
    method Node (line 85) | Node* right() { return m_right; }
    method setLeft (line 87) | void setLeft(Node* left)
    method setRight (line 96) | void setRight(Node* right)
  function verify (line 113) | void verify(Node* node, Node* left, Node* right)
  function Node (line 122) | Node* createTree(size_t depth, size_t& counter)
    method Node (line 46) | Node(Node* left, Node* right, size_t payloadSize, size_t id)
    method ref (line 70) | void ref()
    method deref (line 75) | void deref()
    method id (line 83) | size_t id() { return m_id; }
    method Node (line 84) | Node* left() { return m_left; }
    method Node (line 85) | Node* right() { return m_right; }
    method setLeft (line 87) | void setLeft(Node* left)
    method setRight (line 96) | void setRight(Node* right)
  function Node (line 142) | Node* createTree(size_t depth)
    method Node (line 46) | Node(Node* left, Node* right, size_t payloadSize, size_t id)
    method ref (line 70) | void ref()
    method deref (line 75) | void deref()
    method id (line 83) | size_t id() { return m_id; }
    method Node (line 84) | Node* left() { return m_left; }
    method Node (line 85) | Node* right() { return m_right; }
    method setLeft (line 87) | void setLeft(Node* left)
    method setRight (line 96) | void setRight(Node* right)
  function churnTree (line 148) | void churnTree(Node* node, size_t stride, size_t& counter)
  function churnTree (line 170) | void churnTree(Node* tree, size_t stride)
  function benchmark_tree_allocate (line 178) | void benchmark_tree_allocate(bool isParallel)
  function benchmark_tree_traverse (line 193) | void benchmark_tree_traverse(bool isParallel)
  function benchmark_tree_churn (line 208) | void benchmark_tree_churn(bool isParallel)

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/asan.c
  function asan_report_handler (line 31) | void asan_report_handler(const char *report) {
  function write_byte (line 37) | __attribute__((optnone, noinline))

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/basic_malloc_free_perf.c
  function ncpu (line 16) | static uint32_t
  function run_test (line 37) | static void
  function basic_perf_malloc_free_8_bytes (line 75) | static void
  function basic_perf_malloc_free_8_bytes_multi_block (line 92) | static void
  function basic_perf_malloc_free_different_size_classes (line 112) | static void
  function basic_perf_malloc_free_by_size_class (line 134) | static void
  function basic_perf_malloc_free_by_size_class_offset (line 154) | static void

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/calloc_test.c
  function test_calloc (line 28) | static void
  function test_calloc_random (line 37) | static void

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/magazine_rack.c
  type rack_s (line 14) | struct rack_s
  type rack_s (line 25) | struct rack_s

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/magazine_small_test.c
  function test_rack_setup (line 14) | static inline void
  type rack_s (line 24) | struct rack_s
  type rack_s (line 39) | struct rack_s
  type rack_s (line 59) | struct rack_s
  type rack_s (line 74) | struct rack_s
  type rack_s (line 91) | struct rack_s

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/magazine_testing.h
  function malloc_report (line 39) | void malloc_report(uint32_t flags, const char *fmt, ...)
  function malloc_zone_error (line 44) | void
  function malloc_zone_check_fail (line 49) | void
  function szone_free (line 55) | void

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/magazine_tiny_test.c
  function test_rack_setup (line 14) | static inline void
  type rack_s (line 24) | struct rack_s
  type rack_s (line 39) | struct rack_s
  type rack_s (line 59) | struct rack_s
  type rack_s (line 74) | struct rack_s
  type rack_s (line 91) | struct rack_s

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/malloc_free_test.c
  function test_malloc_free (line 25) | static void
  function test_malloc_free_random (line 40) | static void

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/malloc_size_test.c
  function test_malloc_size_valid (line 12) | static void
  function test_malloc_size_invalid (line 23) | static void

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/nano_tests.c
  function range_recorder (line 28) | static void
  function pointer_recorder (line 38) | static void
  function kern_return_t (line 48) | static kern_return_t
  function run_enumerator (line 59) | static void

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/perf_contended_malloc_free.c
  function random_busy_counts (line 29) | uint64_t
  function cpu_busy (line 48) | static double
  function cpu_yield (line 57) | static double
  function busy (line 73) | __attribute__((noinline))
  function ncpu (line 102) | static uint32_t
  function threaded_bench (line 118) | __attribute__((noinline))
  function setup_threaded_bench (line 137) | static void
  function malloc_bench (line 221) | static void

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/perf_realloc.c
  function realloc_by_amount (line 22) | static void
  function realloc_test_set (line 77) | static void
  function realloc_tests (line 124) | static void

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/stack_logging_test.c
  function free_ptrs (line 63) | static void
  function get_stack_id_from_ptr (line 83) | static uint64_t
  function check_stacks (line 94) | static void
  function test_malloc (line 110) | static void
  function test_calloc (line 139) | static void
  function test_valloc (line 168) | static void
  function test_realloc (line 197) | static void
  function test_batch_malloc (line 231) | static void
  function test_memalign (line 262) | static void
  function test_malloc_zone_functions (line 287) | static void
  type zone_enumerator_info (line 310) | typedef struct {
  function zone_enumerator (line 319) | static void zone_enumerator(task_t task, void *context, unsigned type, v...
  function test_zone_enumeration (line 335) | static void test_zone_enumeration(malloc_zone_t *zone, boolean_t lite_mo...
  function test_virtual_default_zone (line 372) | static void
  function test_introspection_functions (line 380) | static void
  function test_pressure_relief (line 413) | static void
  function test_realloc_non_lite_ptr (line 423) | static void
  function test_realloc_after_lite_mode_turned_off (line 450) | static void
  function do_test (line 468) | static void
  function test_enable_disable_enable_msl (line 598) | static void
  type backtrace_uniquing_table (line 826) | struct backtrace_uniquing_table
  function vm_address_t (line 857) | static vm_address_t
  function allocate_end (line 865) | static void
  function do_test_msl_vm_stacks (line 870) | static
  function do_test_msl_no_vm_stacks (line 921) | static
  function main (line 1111) | int

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/stress_test.c
  type malloc_info (line 61) | struct malloc_info {
  function sig_handler (line 73) | void
  function trap_signals (line 80) | void
  function usage (line 96) | void
  function summarize (line 117) | void
  function cleanup (line 144) | void
  function check_overlap (line 174) | int
  function main (line 206) | int
  function do_test (line 334) | void
  function setup_and_test (line 644) | static void

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tests/tsan.c
  type invisible_barrier_t (line 17) | typedef unsigned long long invisible_barrier_t;
  function __tsan_on_report (line 34) | void __tsan_on_report(void *report) {

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tools/malloc_replay.cpp
  function configure_ktrace_session (line 94) | static void
  function thread_instruction_count (line 103) | static uint64_t
  type compressed_alloc (line 126) | struct compressed_alloc
  type compressed_calloc (line 127) | struct compressed_calloc
  type compressed_realloc (line 128) | struct compressed_realloc
  type compressed_free (line 129) | struct compressed_free
  type compressed_memalign (line 130) | struct compressed_memalign
  function run_ktrace (line 133) | static bool
  function dirty_memory (line 317) | static void
  function run_event (line 339) | static size_t
  function setup_private_malloc_zone (line 511) | static bool
  function kern_return_t (line 532) | static kern_return_t
  function vm_range_recorder (line 553) | static void
  function run_malloc_replay (line 597) | static bool
  function usage (line 843) | static void
  function main (line 862) | int

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tools/malloc_replay.h
  type operation (line 39) | enum operation {
  type flags (line 59) | enum flags {
  type compressed_header (line 64) | struct compressed_header {
  type compressed_operation (line 69) | struct compressed_operation {
  type compressed_alloc (line 75) | struct compressed_alloc {
  type compressed_calloc (line 80) | struct compressed_calloc {
  type compressed_memalign (line 86) | struct compressed_memalign {
  type compressed_free (line 92) | struct compressed_free {
  type compressed_realloc (line 96) | struct compressed_realloc {
  type compressed_stack_key (line 102) | struct compressed_stack_key {
  type compressed_time (line 106) | struct compressed_time {
  type T (line 121) | typedef T*       pointer;
  type T (line 122) | typedef const T* const_pointer;
  type T (line 123) | typedef T&       reference;
  type T (line 124) | typedef const T& const_reference;
  type std (line 125) | typedef std::size_t    size_type;
  type std (line 126) | typedef std::ptrdiff_t difference_type;
  type ReplayAllocator (line 131) | typedef ReplayAllocator<U> other;
  function pointer (line 135) | pointer address (reference value) const
  function const_pointer (line 139) | const_pointer address (const_reference value) const
  function throw (line 148) | ReplayAllocator(const ReplayAllocator&) throw() { }
  type replay_malloc_zone (line 206) | struct replay_malloc_zone {

FILE: InterView-obj-isa-class/libmalloc-166.220.1/tools/malloc_replay_plotter.py
  class ReportConfiguration (line 19) | class ReportConfiguration(object):
    method __init__ (line 21) | def __init__(self, report_type, call, nano_malloc_cutoff, xfilter, num...
    method plotter_class (line 31) | def plotter_class(self):
    method call_identifier (line 43) | def call_identifier(self):
    method call_identifier_for_name (line 47) | def call_identifier_for_name(cls, name):
    method configuration_for_arguments (line 52) | def configuration_for_arguments(cls, args):
  class ReportData (line 56) | class ReportData(object):
    method __init__ (line 58) | def __init__(self, fileV1, fileV2):
    method parse_input_files (line 68) | def parse_input_files(self):
    method enumerate (line 76) | def enumerate(self):
    method fileV1_data (line 80) | def fileV1_data(self):
    method num_plots (line 83) | def num_plots(self):
    method calculate_fragmentation (line 86) | def calculate_fragmentation(self):
  class Plotter (line 98) | class Plotter(object):
    method __init__ (line 100) | def __init__(self, report_configuration):
    method plot (line 103) | def plot(self, report_data):
    method size_freq_for_data (line 108) | def size_freq_for_data(self, data, call_identifier):
    method times_for_data (line 124) | def times_for_data(self, data, call_identifier, coalesce):
    method show (line 137) | def show(self):
    method write_to_path (line 140) | def write_to_path(self, path):
  class ScatterPlotter (line 144) | class ScatterPlotter(Plotter):
    method plot (line 146) | def plot(self, report_data):
  class InstructionsPlotter (line 169) | class InstructionsPlotter(Plotter):
    method plot (line 171) | def plot(self, report_data):
    method hist_data (line 210) | def hist_data(self, data, cumulative, width):
  class RequestSizePlotter (line 218) | class RequestSizePlotter(Plotter):
    method sort_split_and_fill_size_freqs (line 220) | def sort_split_and_fill_size_freqs(self, size_freq):
    method merge_size_counts (line 243) | def merge_size_counts(self, sizes, counts, sizes_c, counts_c):
    method plot (line 259) | def plot(self, report_data):
  class Tool (line 323) | class Tool(object):
    method __init__ (line 325) | def __init__(self, args):
    method run (line 328) | def run(self):
    method main (line 342) | def main(cls):

FILE: InterView-obj-isa-class/objc4-750/markgc.cpp
  class BigEndian (line 79) | class BigEndian
    method get16 (line 82) | static uint16_t	get16(const uint16_t& from)				INLINE { return OSReadB...
    method set16 (line 83) | static void		set16(uint16_t& into, uint16_t value)	INLINE { OSWriteBig...
    method get32 (line 85) | static uint32_t	get32(const uint32_t& from)				INLINE { return OSReadB...
    method set32 (line 86) | static void		set32(uint32_t& into, uint32_t value)	INLINE { OSWriteBig...
    method get64 (line 88) | static uint64_t get64(const uint64_t& from)				INLINE { return OSReadB...
    method set64 (line 89) | static void		set64(uint64_t& into, uint64_t value)	INLINE { OSWriteBig...
    method getBits (line 91) | static uint32_t	getBits(const uint32_t& from,
    method setBits (line 93) | static void		setBits(uint32_t& into, uint32_t value,
    method getBitsRaw (line 96) | static uint32_t	getBitsRaw(const uint32_t& from,
    method setBitsRaw (line 98) | static void		setBitsRaw(uint32_t& into, uint32_t value,
  class LittleEndian (line 108) | class LittleEndian
    method get16 (line 111) | static uint16_t	get16(const uint16_t& from)				INLINE { return OSReadL...
    method set16 (line 112) | static void		set16(uint16_t& into, uint16_t value)	INLINE { OSWriteLit...
    method get32 (line 114) | static uint32_t	get32(const uint32_t& from)				INLINE { return OSReadL...
    method set32 (line 115) | static void		set32(uint32_t& into, uint32_t value)	INLINE { OSWriteLit...
    method get64 (line 117) | static uint64_t get64(const uint64_t& from)				INLINE { return OSReadL...
    method set64 (line 118) | static void		set64(uint64_t& into, uint64_t value)	INLINE { OSWriteLit...
    method getBits (line 120) | static uint32_t	getBits(const uint32_t& from,
    method setBits (line 122) | static void		setBits(uint32_t& into, uint32_t value,
    method getBitsRaw (line 125) | static uint32_t	getBitsRaw(const uint32_t& from,
    method setBitsRaw (line 127) | static void		setBitsRaw(uint32_t& into, uint32_t value,
  class Pointer32 (line 148) | class Pointer32
    method getP (line 155) | static uint64_t	getP(const uint_t& from)				INLINE { return _E::get32(...
    method setP (line 156) | static void		setP(uint_t& into, uint64_t value)		INLINE { _E::set32(in...
  class Pointer64 (line 161) | class Pointer64
    method getP (line 168) | static uint64_t	getP(const uint_t& from)				INLINE { return _E::get64(...
    method setP (line 169) | static void		setP(uint_t& into, uint64_t value)		INLINE { _E::set64(in...
  type macho_header_content (line 176) | struct macho_header_content {}
  type macho_header_content<Pointer32<BigEndian> > (line 177) | struct macho_header_content<Pointer32<BigEndian> >    { mach_header		fie...
  type macho_header_content<Pointer64<BigEndian> > (line 178) | struct macho_header_content<Pointer64<BigEndian> >	  { mach_header_64	fi...
  type macho_header_content<Pointer32<LittleEndian> > (line 179) | struct macho_header_content<Pointer32<LittleEndian> > { mach_header		fie...
  type macho_header_content<Pointer64<LittleEndian> > (line 180) | struct macho_header_content<Pointer64<LittleEndian> > { mach_header_64	f...
  class macho_header (line 183) | class macho_header {
    method magic (line 185) | uint32_t		magic() const					INLINE { return E::get32(header.fields.mag...
    method set_magic (line 186) | void			set_magic(uint32_t value)		INLINE { E::set32(header.fields.magi...
    method cputype (line 188) | uint32_t		cputype() const					INLINE { return E::get32(header.fields.c...
    method set_cputype (line 189) | void			set_cputype(uint32_t value)		INLINE { E::set32((uint32_t&)heade...
    method cpusubtype (line 191) | uint32_t		cpusubtype() const				INLINE { return E::get32(header.fields...
    method set_cpusubtype (line 192) | void			set_cpusubtype(uint32_t value)	INLINE { E::set32((uint32_t&)hea...
    method filetype (line 194) | uint32_t		filetype() const				INLINE { return E::get32(header.fields.f...
    method set_filetype (line 195) | void			set_filetype(uint32_t value)	INLINE { E::set32(header.fields.fi...
    method ncmds (line 197) | uint32_t		ncmds() const					INLINE { return E::get32(header.fields.ncm...
    method set_ncmds (line 198) | void			set_ncmds(uint32_t value)		INLINE { E::set32(header.fields.ncmd...
    method sizeofcmds (line 200) | uint32_t		sizeofcmds() const				INLINE { return E::get32(header.fields...
    method set_sizeofcmds (line 201) | void			set_sizeofcmds(uint32_t value)	INLINE { E::set32(header.fields....
    method flags (line 203) | uint32_t		flags() const					INLINE { return E::get32(header.fields.fla...
    method set_flags (line 204) | void			set_flags(uint32_t value)		INLINE { E::set32(header.fields.flag...
    method reserved (line 206) | uint32_t		reserved() const				INLINE { return E::get32(header.fields.r...
    method set_reserved (line 207) | void			set_reserved(uint32_t value)	INLINE { E::set32(header.fields.re...
  class macho_load_command (line 219) | class macho_load_command {
    method cmd (line 221) | uint32_t		cmd() const						INLINE { return E::get32(command.cmd); }
    method set_cmd (line 222) | void			set_cmd(uint32_t value)			INLINE { E::set32(command.cmd, value); }
    method cmdsize (line 224) | uint32_t		cmdsize() const					INLINE { return E::get32(command.cmdsize...
    method set_cmdsize (line 225) | void			set_cmdsize(uint32_t value)		INLINE { E::set32(command.cmdsize,...
  type macho_segment_content (line 238) | struct macho_segment_content {}
  type macho_segment_content<Pointer32<BigEndian> > (line 239) | struct macho_segment_content<Pointer32<BigEndian> >    { segment_command...
  type macho_segment_content<Pointer64<BigEndian> > (line 240) | struct macho_segment_content<Pointer64<BigEndian> >	   { segment_command...
  type macho_segment_content<Pointer32<LittleEndian> > (line 241) | struct macho_segment_content<Pointer32<LittleEndian> > { segment_command...
  type macho_segment_content<Pointer64<LittleEndian> > (line 242) | struct macho_segment_content<Pointer64<LittleEndian> > { segment_command...
  class macho_segment_command (line 245) | class macho_segment_command {
    method cmd (line 247) | uint32_t		cmd() const						INLINE { return E::get32(segment.fields.cmd...
    method set_cmd (line 248) | void			set_cmd(uint32_t value)			INLINE { E::set32(segment.fields.cmd,...
    method cmdsize (line 250) | uint32_t		cmdsize() const					INLINE { return E::get32(segment.fields....
    method set_cmdsize (line 251) | void			set_cmdsize(uint32_t value)		INLINE { E::set32(segment.fields.c...
    method set_segname (line 254) | void			set_segname(const char* value)	INLINE { strncpy(segment.fields....
    method vmaddr (line 256) | uint64_t		vmaddr() const					INLINE { return P::getP(segment.fields.vm...
    method set_vmaddr (line 257) | void			set_vmaddr(uint64_t value)		INLINE { P::setP(segment.fields.vma...
    method vmsize (line 259) | uint64_t		vmsize() const					INLINE { return P::getP(segment.fields.vm...
    method set_vmsize (line 260) | void			set_vmsize(uint64_t value)		INLINE { P::setP(segment.fields.vms...
    method fileoff (line 262) | uint64_t		fileoff() const					INLINE { return P::getP(segment.fields.f...
    method set_fileoff (line 263) | void			set_fileoff(uint64_t value)		INLINE { P::setP(segment.fields.fi...
    method filesize (line 265) | uint64_t		filesize() const				INLINE { return P::getP(segment.fields.f...
    method set_filesize (line 266) | void			set_filesize(uint64_t value)	INLINE { P::setP(segment.fields.fi...
    method maxprot (line 268) | uint32_t		maxprot() const					INLINE { return E::get32(segment.fields....
    method set_maxprot (line 269) | void			set_maxprot(uint32_t value)		INLINE { E::set32((uint32_t&)segme...
    method initprot (line 271) | uint32_t		initprot() const				INLINE { return E::get32(segment.fields....
    method set_initprot (line 272) | void			set_initprot(uint32_t value)	INLINE { E::set32((uint32_t&)segme...
    method nsects (line 274) | uint32_t		nsects() const					INLINE { return E::get32(segment.fields.n...
    method set_nsects (line 275) | void			set_nsects(uint32_t value)		INLINE { E::set32(segment.fields.ns...
    method flags (line 277) | uint32_t		flags() const					INLINE { return E::get32(segment.fields.fl...
    method set_flags (line 278) | void			set_flags(uint32_t value)		INLINE { E::set32(segment.fields.fla...
  type macho_section_content (line 293) | struct macho_section_content {}
  type macho_section_content<Pointer32<BigEndian> > (line 294) | struct macho_section_content<Pointer32<BigEndian> >    { section	fields; }
  type macho_section_content<Pointer64<BigEndian> > (line 295) | struct macho_section_content<Pointer64<BigEndian> >	   { section_64	fiel...
  type macho_section_content<Pointer32<LittleEndian> > (line 296) | struct macho_section_content<Pointer32<LittleEndian> > { section	fields; }
  type macho_section_content<Pointer64<LittleEndian> > (line 297) | struct macho_section_content<Pointer64<LittleEndian> > { section_64	fiel...
  class macho_section (line 300) | class macho_section {
    method set_sectname (line 303) | void			set_sectname(const char* value)	INLINE { strncpy(section.fields...
    method set_segname (line 306) | void			set_segname(const char* value)	INLINE { strncpy(section.fields....
    method addr (line 308) | uint64_t		addr() const					INLINE { return P::getP(section.fields.addr...
    method set_addr (line 309) | void			set_addr(uint64_t value)		INLINE { P::setP(section.fields.addr,...
    method size (line 311) | uint64_t		size() const					INLINE { return P::getP(section.fields.size...
    method set_size (line 312) | void			set_size(uint64_t value)		INLINE { P::setP(section.fields.size,...
    method offset (line 314) | uint32_t		offset() const					INLINE { return E::get32(section.fields.o...
    method set_offset (line 315) | void			set_offset(uint32_t value)		INLINE { E::set32(section.fields.of...
    method align (line 317) | uint32_t		align() const					INLINE { return E::get32(section.fields.al...
    method set_align (line 318) | void			set_align(uint32_t value)		INLINE { E::set32(section.fields.ali...
    method reloff (line 320) | uint32_t		reloff() const					INLINE { return E::get32(section.fields.r...
    method set_reloff (line 321) | void			set_reloff(uint32_t value)		INLINE { E::set32(section.fields.re...
    method nreloc (line 323) | uint32_t		nreloc() const					INLINE { return E::get32(section.fields.n...
    method set_nreloc (line 324) | void			set_nreloc(uint32_t value)		INLINE { E::set32(section.fields.nr...
    method flags (line 326) | uint32_t		flags() const					INLINE { return E::get32(section.fields.fl...
    method set_flags (line 327) | void			set_flags(uint32_t value)		INLINE { E::set32(section.fields.fla...
    method reserved1 (line 329) | uint32_t		reserved1() const				INLINE { return E::get32(section.fields...
    method set_reserved1 (line 330) | void			set_reserved1(uint32_t value)	INLINE { E::set32(section.fields....
    method reserved2 (line 332) | uint32_t		reserved2() const				INLINE { return E::get32(section.fields...
    method set_reserved2 (line 333) | void			set_reserved2(uint32_t value)	INLINE { E::set32(section.fields....
  function main (line 347) | int main(int argc, const char *argv[]) {
  type imageinfo (line 354) | struct imageinfo {
  function segnameEquals (line 361) | bool segnameEquals(const char *lhs, const char *rhs)
  function segnameStartsWith (line 366) | bool segnameStartsWith(const char *segname, const char *prefix)
  function sectnameEquals (line 371) | bool sectnameEquals(const char *lhs, const char *rhs)
  function dosect (line 378) | void dosect(uint8_t *start, macho_section<P> *sect)
  function doseg (line 405) | void doseg(uint8_t *start, macho_segment_command<P> *seg)
  function parse_macho (line 417) | bool parse_macho(uint8_t *buffer)
  function parse_macho (line 433) | bool parse_macho(uint8_t *buffer)
  function parse_fat (line 453) | bool parse_fat(uint8_t *buffer, size_t size)
  function processFile (line 552) | bool processFile(const char *filename)

FILE: InterView-obj-isa-class/objc4-750/runtime/NSObjCRuntime.h
  type NSInteger (line 12) | typedef long NSInteger;
  type NSUInteger (line 13) | typedef unsigned long NSUInteger;
  type NSInteger (line 15) | typedef int NSInteger;
  type NSUInteger (line 16) | typedef unsigned int NSUInteger;

FILE: InterView-obj-isa-class/objc4-750/runtime/NSObject.h
  type _NSZone (line 41) | struct _NSZone
  function OBJC_ROOT_CLASS (line 51) | OBJC_ROOT_CLASS
  type _NSZone (line 70) | struct _NSZone
  type _NSZone (line 79) | struct _NSZone
  type _NSZone (line 80) | struct _NSZone

FILE: InterView-obj-isa-class/objc4-750/runtime/Object.h
  function __BRIDGEOS_UNAVAILABLE (line 42) | __BRIDGEOS_UNAVAILABLE
  type objc_method_description (line 99) | struct objc_method_description
  type objc_method_description (line 100) | struct objc_method_description
  type mach_header (line 160) | struct mach_header
  type mach_header (line 161) | struct mach_header

FILE: InterView-obj-isa-class/objc4-750/runtime/OldClasses.subproj/List.h
  function end (line 106) | end

FILE: InterView-obj-isa-class/objc4-750/runtime/Protocol.h
  type objc_protocol_list (line 58) | struct objc_protocol_list
  type objc_method_description_list (line 59) | struct objc_method_description_list
  type objc_method_description_list (line 60) | struct objc_method_description_list
  type objc_method_description (line 73) | struct objc_method_description
  type objc_method_description (line 79) | struct objc_method_description

FILE: InterView-obj-isa-class/objc4-750/runtime/hashtable2.h
  function __BEGIN_DECLS (line 45) | __BEGIN_DECLS
  type NXHashTable (line 74) | typedef struct {
  type NXHashState (line 177) | typedef struct {int i; int j;} NXHashState

FILE: InterView-obj-isa-class/objc4-750/runtime/llvm-AlignOf.h
  function namespace (line 22) | namespace objc {

FILE: InterView-obj-isa-class/objc4-750/runtime/llvm-DenseMap.h
  function namespace (line 43) | namespace objc {
  function swap (line 620) | void swap(DenseMap& RHS) {
  function copyFrom (line 642) | void copyFrom(const DenseMap& other) {
  function init (line 653) | void init(unsigned InitBuckets) {
  function grow (line 662) | void grow(unsigned AtLeast) {
  function shrink_and_clear (line 679) | void shrink_and_clear() {
  function setNumEntries (line 700) | void setNumEntries(unsigned Num) {
  function setNumTombstones (line 707) | void setNumTombstones(unsigned Num) {
  function BucketT (line 711) | BucketT *getBuckets() const {
  function allocateBuckets (line 719) | bool allocateBuckets(unsigned Num) {
  type typename (line 741) | typedef typename BaseT::BucketT BucketT;
  type LargeRep (line 748) | struct LargeRep {
  function swap (line 785) | void swap(SmallDenseMap& RHS) {
  function copyFrom (line 872) | void copyFrom(const SmallDenseMap& other) {
  function init (line 883) | void init(unsigned InitBuckets) {
  function grow (line 892) | void grow(unsigned AtLeast) {
  function shrink_and_clear (line 944) | void shrink_and_clear() {
  function setNumEntries (line 969) | void setNumEntries(unsigned Num) {
  function setNumTombstones (line 977) | void setNumTombstones(unsigned Num) {
  function BucketT (line 981) | const BucketT *getInlineBuckets() const {
  function BucketT (line 988) | BucketT *getInlineBuckets() {
  function LargeRep (line 992) | const LargeRep *getLargeRep() const {
  function LargeRep (line 997) | LargeRep *getLargeRep() {
  function BucketT (line 1002) | const BucketT *getBuckets() const {
  function BucketT (line 1005) | BucketT *getBuckets() {
  function deallocateBuckets (line 1013) | void deallocateBuckets() {
  function LargeRep (line 1021) | LargeRep allocateBuckets(unsigned Num) {
  type std (line 1033) | typedef std::pair<KeyT, ValueT> Bucket;
  type DenseMapIterator (line 1034) | typedef DenseMapIterator<KeyT, ValueT,
  type typename (line 1039) | typedef typename conditional<IsConst, const
  type value_type (line 1040) | typedef value_type *pointer;
  type value_type (line 1041) | typedef value_type &reference;
  type std (line 1042) | typedef std::forward_iterator_tag iterator_category;
  function reference (line 1060) | reference operator*() const {
  function pointer (line 1063) | pointer operator->() const {

FILE: InterView-obj-isa-class/objc4-750/runtime/llvm-DenseMapInfo.h
  function namespace (line 22) | namespace objc {
  function char (line 67) | struct DenseMapInfo<const char*> {
  function char (line 83) | struct DenseMapInfo<char> {
  function unsigned (line 93) | struct DenseMapInfo<unsigned> {
  function unsigned (line 103) | struct DenseMapInfo<unsigned long> {
  type DenseMapInfo (line 115) | struct DenseMapInfo
  function getEmptyKey (line 116) | static inline unsigned long long getEmptyKey() { return ~0ULL; }
  function getTombstoneKey (line 117) | static inline unsigned long long getTombstoneKey() { return ~0ULL - 1ULL; }
  function getHashValue (line 118) | static unsigned getHashValue(const unsigned long long& Val) {
  function isEqual (line 121) | static bool isEqual(const unsigned long long& LHS,
  function int (line 128) | struct DenseMapInfo<int> {
  function long (line 138) | struct DenseMapInfo<long> {
  type DenseMapInfo (line 152) | struct DenseMapInfo
  function getEmptyKey (line 153) | static inline long long getEmptyKey() { return 0x7fffffffffffffffLL; }
  function getTombstoneKey (line 154) | static inline long long getTombstoneKey() { return -0x7fffffffffffffffLL...
  function getHashValue (line 155) | static unsigned getHashValue(const long long& Val) {
  function isEqual (line 158) | static bool isEqual(const long long& LHS,
  type std (line 167) | typedef std::pair<T, U> Pair;
  type DenseMapInfo (line 168) | typedef DenseMapInfo<T> FirstInfo;
  type DenseMapInfo (line 169) | typedef DenseMapInfo<U> SecondInfo;
  function Pair (line 171) | static inline Pair getEmptyKey() {
  function Pair (line 175) | static inline Pair getTombstoneKey() {
  function getHashValue (line 179) | static unsigned getHashValue(const Pair& PairVal) {
  function isEqual (line 192) | static bool isEqual(const Pair &LHS, const Pair &RHS) {

FILE: InterView-obj-isa-class/objc4-750/runtime/llvm-MathExtras.h
  function namespace (line 19) | namespace objc {
  function isShiftedInt (line 57) | bool isShiftedInt(int64_t x) {
  function isUInt (line 63) | bool isUInt(uint64_t x) {
  function isShiftedUInt (line 83) | bool isShiftedUInt(uint64_t x) {
  function isUIntN (line 89) | inline bool isUIntN(unsigned N, uint64_t x) {
  function isIntN (line 95) | inline bool isIntN(unsigned N, int64_t x) {
  function isMask_32 (line 102) | inline bool isMask_32(uint32_t Value) {
  function isMask_64 (line 109) | inline bool isMask_64(uint64_t Value) {
  function isShiftedMask_32 (line 116) | inline bool isShiftedMask_32(uint32_t Value) {
  function isShiftedMask_64 (line 122) | inline bool isShiftedMask_64(uint64_t Value) {
  function isPowerOf2_32 (line 128) | inline bool isPowerOf2_32(uint32_t Value) {
  function isPowerOf2_64 (line 134) | inline bool isPowerOf2_64(uint64_t Value) {
  function CountLeadingZeros_32 (line 142) | inline unsigned CountLeadingZeros_32(uint32_t Value) {
  function CountLeadingOnes_32 (line 170) | inline unsigned CountLeadingOnes_32(uint32_t Value) {
  function CountLeadingZeros_64 (line 178) | inline unsigned CountLeadingZeros_64(uint64_t Value) {
  function CountLeadingOnes_64 (line 222) | inline unsigned CountLeadingOnes_64(uint64_t Value) {
  function CountTrailingZeros_32 (line 230) | inline unsigned CountTrailingZeros_32(uint32_t Value) {
  function CountTrailingOnes_32 (line 247) | inline unsigned CountTrailingOnes_32(uint32_t Value) {
  function CountTrailingZeros_64 (line 255) | inline unsigned CountTrailingZeros_64(uint64_t Value) {
  function CountTrailingOnes_64 (line 274) | inline unsigned CountTrailingOnes_64(uint64_t Value) {
  function CountPopulation_32 (line 281) | inline unsigned CountPopulation_32(uint32_t Value) {
  function CountPopulation_64 (line 293) | inline unsigned CountPopulation_64(uint64_t Value) {
  function Log2_32 (line 307) | inline unsigned Log2_32(uint32_t Value) {
  function Log2_64 (line 313) | inline unsigned Log2_64(uint64_t Value) {
  function Log2_32_Ceil (line 320) | inline unsigned Log2_32_Ceil(uint32_t Value) {
  function Log2_64_Ceil (line 326) | inline unsigned Log2_64_Ceil(uint64_t Value) {
  function GreatestCommonDivisor64 (line 332) | inline uint64_t GreatestCommonDivisor64(uint64_t A, uint64_t B) {
  function BitsToDouble (line 343) | inline double BitsToDouble(uint64_t Bits) {
  function BitsToFloat (line 354) | inline float BitsToFloat(uint32_t Bits) {
  function DoubleToBits (line 367) | inline uint64_t DoubleToBits(double Double) {
  function FloatToBits (line 380) | inline uint32_t FloatToBits(float Float) {
  function MinAlign (line 399) | inline uint64_t MinAlign(uint64_t A, uint64_t B) {
  function NextPowerOf2 (line 406) | inline uint64_t NextPowerOf2(uint64_t A) {
  function NextPowerOf2 (line 418) | inline uint32_t NextPowerOf2(uint32_t A) {
  function RoundUpToAlignment (line 436) | inline uint64_t RoundUpToAlignment(uint64_t Value, uint64_t Align) {
  function OffsetToAlignment (line 443) | inline uint64_t OffsetToAlignment(uint64_t Value, uint64_t Align) {
  function abs64 (line 450) | inline int64_t abs64(int64_t x) {
  function SignExtend32 (line 456) | int32_t SignExtend32(uint32_t x) {
  function SignExtend32 (line 462) | inline int32_t SignExtend32(uint32_t X, unsigned B) {
  function SignExtend64 (line 468) | int64_t SignExtend64(uint64_t x) {
  function SignExtend64 (line 474) | inline int64_t SignExtend64(uint64_t X, unsigned B) {

FILE: InterView-obj-isa-class/objc4-750/runtime/llvm-type_traits.h
  function namespace (line 35) | namespace objc {

FILE: InterView-obj-isa-class/objc4-750/runtime/maptable.h
  type _NXMapTable (line 51) | struct _NXMapTable {
  type NXMapTablePrototype (line 59) | typedef struct _NXMapTablePrototype {
  type NXMapState (line 144) | typedef struct {int index;} NXMapState

FILE: InterView-obj-isa-class/objc4-750/runtime/message.h
  type objc_super (line 34) | struct objc_super {
  type objc_super (line 102) | struct objc_super
  type objc_super (line 143) | struct objc_super

FILE: InterView-obj-isa-class/objc4-750/runtime/objc-abi.h
  type objc_image_info (line 96) | typedef struct objc_image_info {
  type objc_super (line 224) | struct objc_super
  type objc_super (line 228) | struct objc_super
  type objc_super (line 249) | struct objc_super
  type objc_super (line 259) | struct objc_super
  type _Unwind_Exception (line 377) | struct _Unwind_Exception
  type _Unwind_Context (line 378) | struct _Unwind_Context
  type _Unwind_Exception (line 383) | struct _Unwind_Exception
  type _Unwind_Context (line 384) | struct _Unwind_Context
  function OBJC_EXPORT (line 411) | OBJC_EXPORT const struct { char c; }
  function OBJC_EXPORT (line 425) | OBJC_EXPORT const struct { char c; }
  function OBJC_EXPORT (line 427) | OBJC_EXPORT const struct { char c; }
  function OBJC_EXPORT (line 429) | OBJC_EXPORT const struct { char c; }
  function OBJC_EXPORT (line 431) | OBJC_EXPORT const struct { char c; }
  function OBJC_ROOT_CLASS (line 451) | OBJC_ROOT_CLASS

FILE: InterView-obj-isa-class/objc4-750/runtime/objc-auto.h
  function OBJC_INLINE (line 142) | static OBJC_INLINE void objc_collect(unsigned long options __unused) { }
  function OBJC_INLINE (line 144) | static OBJC_INLINE BOOL objc_collectingEnabled(void) { return NO; }
  function OBJC_INLINE (line 147) | static OBJC_INLINE malloc_zone_t *objc_collectableZone(void) { return ni...
  function OBJC_INLINE (line 150) | static OBJC_INLINE void objc_setCollectionThreshold(size_t threshold __u...
  function OBJC_INLINE (line 152) | static OBJC_INLINE void objc_setCollectionRatio(size_t ratio __unused) { }
  function OBJC_INLINE (line 154) | static OBJC_INLINE void objc_startCollectorThread(void) { }
  function OBJC_INLINE (line 163) | static OBJC_INLINE BOOL objc_atomicCompareAndSwapPtr(id predicate, id re...
  function OBJC_INLINE (line 167) | static OBJC_INLINE BOOL objc_atomicCompareAndSwapPtrBarrier(id predicate...
  function OBJC_INLINE (line 171) | static OBJC_INLINE BOOL objc_atomicCompareAndSwapGlobal(id predicate, id...
  function OBJC_INLINE (line 175) | static OBJC_INLINE BOOL objc_atomicCompareAndSwapGlobalBarrier(id predic...
  function OBJC_INLINE (line 179) | static OBJC_INLINE BOOL objc_atomicCompareAndSwapInstanceVariable(id pre...
  function OBJC_INLINE (line 183) | static OBJC_INLINE BOOL objc_atomicCompareAndSwapInstanceVariableBarrier...
  function OBJC_INLINE (line 188) | static OBJC_INLINE id objc_assign_strongCast(id val, id *dest)
  function OBJC_INLINE (line 192) | static OBJC_INLINE id objc_assign_global(id val, id *dest)
  function OBJC_INLINE (line 196) | static OBJC_INLINE id objc_assign_threadlocal(id val, id *dest)
  function OBJC_INLINE (line 200) | static OBJC_INLINE id objc_assign_ivar(id val, id dest, ptrdiff_t offset)
  function OBJC_INLINE (line 204) | static OBJC_INLINE id objc_read_weak(id *location)
  function OBJC_INLINE (line 208) | static OBJC_INLINE id objc_assign_weak(id value, id *location)
  function OBJC_INLINE (line 215) | static OBJC_INLINE void *objc_memmove_collectable(void *dst, const void ...
  function OBJC_INLINE (line 219) | static OBJC_INLINE void objc_finalizeOnMainThread(Class cls __unused) { }
  function OBJC_INLINE (line 221) | static OBJC_INLINE BOOL objc_is_finalized(void *ptr __unused) { return N...
  function OBJC_INLINE (line 223) | static OBJC_INLINE void objc_clear_stack(unsigned long options __unused)...
  function OBJC_INLINE (line 225) | static OBJC_INLINE BOOL objc_collecting_enabled(void) { return NO; }
  function OBJC_INLINE (line 227) | static OBJC_INLINE void objc_set_collection_threshold(size_t threshold _...
  function OBJC_INLINE (line 229) | static OBJC_INLINE void objc_set_collection_ratio(size_t ratio __unused)...
  function OBJC_INLINE (line 231) | static OBJC_INLINE void objc_start_collector_thread(void) { }
  function OBJC_INLINE (line 239) | static OBJC_INLINE id objc_allocate_object(Class cls, int extra)
  function OBJC_INLINE (line 244) | static OBJC_INLINE void objc_registerThreadWithCollector() { }
  function OBJC_INLINE (line 246) | static OBJC_INLINE void objc_unregisterThreadWithCollector() { }
  function OBJC_INLINE (line 248) | static OBJC_INLINE void objc_assertRegisteredThreadWithCollector() { }

FILE: InterView-obj-isa-class/objc4-750/runtime/objc-exception.h
  function OBJC_EXPORT (line 58) | OBJC_EXPORT int objc_exception_match(Class _Nonnull exceptionClass,
  type id (line 93) | typedef id _Nonnull (*objc_exception_preprocessor)(id _Nonnull exception);

FILE: InterView-obj-isa-class/objc4-750/runtime/objc-file-old.h
  type objc_module (line 31) | struct objc_module
  type old_protocol (line 32) | struct old_protocol
  type old_class (line 33) | struct old_class
  type old_protocol (line 39) | struct old_protocol

FILE: InterView-obj-isa-class/objc4-750/runtime/objc-file.h
  type UnsignedInitializer (line 45) | struct UnsignedInitializer {
  function foreach_data_segment (line 64) | static inline void

FILE: InterView-obj-isa-class/objc4-750/runtime/objc-initialize.h
  type _objc_initializing_classes (line 35) | struct _objc_initializing_classes

FILE: InterView-obj-isa-class/objc4-750/runtime/objc-internal.h
  type objc_image_info (line 79) | struct objc_image_info
  type objc_image_info (line 82) | struct objc_image_info
  type mach_header (line 215) | struct mach_header
  type objc_tag_index_t (line 235) | enum objc_tag_index_t : uint16_t
  type objc_tag_index_t (line 237) | typedef uint16_t objc_tag_index_t;
  type objc_tag_index_t (line 271) | typedef enum objc_tag_index_t objc_tag_index_t;
  function _objc_decodeTaggedPointer (line 375) | static inline uintptr_t
  function _objc_taggedPointersEnabled (line 381) | static inline bool
  function _objc_isTaggedPointer (line 414) | static inline bool
  function objc_tag_index_t (line 420) | static inline objc_tag_index_t
  function _objc_getTaggedPointerValue (line 434) | static inline uintptr_t
  function _objc_getTaggedPointerSignedValue (line 447) | static inline intptr_t
  type objc_ivar_memory_management_t (line 556) | typedef enum {
  type _objc_object_disposition_t (line 803) | typedef enum {

FILE: InterView-obj-isa-class/objc4-750/runtime/objc-load.h
  type mach_header (line 41) | struct mach_header

FILE: InterView-obj-isa-class/objc4-750/runtime/objc-lockdebug.h
  function lockdebug_assert_all_locks_locked (line 30) | static constexpr inline void lockdebug_assert_all_locks_locked() { }
  function lockdebug_assert_no_locks_locked (line 31) | static constexpr inline void lockdebug_assert_no_locks_locked() { }
  function lockdebug_setInForkPrepare (line 32) | static constexpr inline void lockdebug_setInForkPrepare(bool) { }
  function lockdebug_lock_precedes_lock (line 33) | static constexpr inline void lockdebug_lock_precedes_lock(const void *, ...
  function lockdebug_remember_mutex (line 43) | static constexpr inline void lockdebug_remember_mutex(mutex_tt<false> *l...
  function lockdebug_mutex_lock (line 44) | static constexpr inline void lockdebug_mutex_lock(mutex_tt<false> *lock)...
  function lockdebug_mutex_try_lock (line 45) | static constexpr inline void lockdebug_mutex_try_lock(mutex_tt<false> *l...
  function lockdebug_mutex_unlock (line 46) | static constexpr inline void lockdebug_mutex_unlock(mutex_tt<false> *loc...
  function lockdebug_mutex_assert_locked (line 47) | static constexpr inline void lockdebug_mutex_assert_locked(mutex_tt<fals...
  function lockdebug_mutex_assert_unlocked (line 48) | static constexpr inline void lockdebug_mutex_assert_unlocked(mutex_tt<fa...
  function lockdebug_remember_monitor (line 58) | static constexpr inline void lockdebug_remember_monitor(monitor_tt<false...
  function lockdebug_monitor_enter (line 59) | static constexpr inline void lockdebug_monitor_enter(monitor_tt<false> *...
  function lockdebug_monitor_leave (line 60) | static constexpr inline void lockdebug_monitor_leave(monitor_tt<false> *...
  function lockdebug_monitor_wait (line 61) | static constexpr inline void lockdebug_monitor_wait(monitor_tt<false> *l...
  function lockdebug_monitor_assert_locked (line 62) | static constexpr inline void lockdebug_monitor_assert_locked(monitor_tt<...
  function lockdebug_monitor_assert_unlocked (line 63) | static constexpr inline void lockdebug_monitor_assert_unlocked(monitor_t...
  function lockdebug_remember_recursive_mutex (line 77) | static constexpr inline void
  function lockdebug_recursive_mutex_lock (line 79) | static constexpr inline void
  function lockdebug_recursive_mutex_unlock (line 81) | static constexpr inline void
  function lockdebug_recursive_mutex_assert_locked (line 83) | static constexpr inline void
  function lockdebug_recursive_mutex_assert_unlocked (line 85) | static constexpr inline void

FILE: InterView-obj-isa-class/objc4-750/runtime/objc-object.h
  type ReturnDisposition (line 35) | enum ReturnDisposition : bool {
  function ALWAYS_INLINE (line 56) | ALWAYS_INLINE Class &
  function isClass (line 66) | inline bool
  function Class (line 76) | inline Class
  function isTaggedPointer (line 94) | inline bool
  function isBasicTaggedPointer (line 100) | inline bool
  function isExtTaggedPointer (line 106) | inline bool
  function Class (line 119) | inline Class
  function isTaggedPointer (line 126) | inline bool
  function isBasicTaggedPointer (line 132) | inline bool
  function isExtTaggedPointer (line 138) | inline bool
  function Class (line 151) | inline Class
  function hasNonpointerIsa (line 167) | inline bool
  function initIsa (line 174) | inline void
  function initClassIsa (line 180) | inline void
  function initProtocolIsa (line 190) | inline void
  function initInstanceIsa (line 196) | inline void
  function initIsa (line 205) | inline void
  function Class (line 244) | inline Class
  function hasAssociatedObjects (line 325) | inline bool
  function setHasAssociatedObjects (line 334) | inline void
  function isWeaklyReferenced (line 351) | inline bool
  function setWeaklyReferenced_nolock (line 360) | inline void
  function hasCxxDtor (line 380) | inline bool
  function rootIsDeallocating (line 390) | inline bool
  function clearDeallocating (line 399) | inline void
  function rootDealloc (line 415) | inline void
  function id (line 436) | inline id
  function release (line 527) | inline void
  function id (line 689) | inline id
  function id (line 700) | inline id
  function rootRetainCount (line 710) | inline uintptr_t
  function Class (line 737) | inline Class
  function hasNonpointerIsa (line 745) | inline bool
  function initIsa (line 752) | inline void
  function initClassIsa (line 760) | inline void
  function initProtocolIsa (line 767) | inline void
  function initInstanceIsa (line 774) | inline void
  function initIsa (line 781) | inline void
  function Class (line 788) | inline Class
  function hasAssociatedObjects (line 812) | inline bool
  function setHasAssociatedObjects (line 819) | inline void
  function isWeaklyReferenced (line 826) | inline bool
  function setWeaklyReferenced_nolock (line 835) | inline void
  function hasCxxDtor (line 844) | inline bool
  function rootIsDeallocating (line 852) | inline bool
  function clearDeallocating (line 860) | inline void
  function rootDealloc (line 867) | inline void
  function id (line 876) | inline id
  function id (line 892) | inline id
  function release (line 901) | inline void
  function rootRelease (line 920) | inline bool
  function rootReleaseShouldDealloc (line 927) | inline bool
  function id (line 936) | inline id
  function id (line 947) | inline id
  function rootTryRetain (line 960) | inline bool
  function rootRetainCount (line 968) | inline uintptr_t
  function ALWAYS_INLINE (line 1042) | static ALWAYS_INLINE bool
  function ALWAYS_INLINE (line 1088) | static ALWAYS_INLINE bool
  function ALWAYS_INLINE (line 1112) | static ALWAYS_INLINE bool
  function ALWAYS_INLINE (line 1126) | static ALWAYS_INLINE bool
  function ALWAYS_INLINE (line 1141) | static ALWAYS_INLINE bool
  function ALWAYS_INLINE (line 1151) | static ALWAYS_INLINE ReturnDisposition
  function ALWAYS_INLINE (line 1158) | static ALWAYS_INLINE void
  function ALWAYS_INLINE (line 1168) | static ALWAYS_INLINE bool
  function ALWAYS_INLINE (line 1185) | static ALWAYS_INLINE ReturnDisposition
  function ALWAYS_INLINE (line 1199) | static ALWAYS_INLINE bool
  function ALWAYS_INLINE (line 1206) | static ALWAYS_INLINE ReturnDisposition

FILE: InterView-obj-isa-class/objc4-750/runtime/objc-os.h
  function word_align (line 45) | static inline uint32_t word_align(uint32_t x) {
  function word_align (line 48) | static inline size_t word_align(size_t x) {
  function class (line 54) | class nocopy_t {
  function ALWAYS_INLINE (line 123) | static ALWAYS_INLINE uintptr_t
  function ALWAYS_INLINE (line 129) | static ALWAYS_INLINE uintptr_t
  function ALWAYS_INLINE (line 145) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 156) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 168) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 179) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 191) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 198) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 206) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 214) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 223) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 230) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 238) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 245) | static ALWAYS_INLINE
  function bcopy (line 400) | static __inline void bcopy(const void *src, void *dst, size_t size) { me...
  function bzero (line 401) | static __inline void bzero(void *dst, size_t size) { memset(dst, 0, size...
  function malloc_zone_t (line 407) | static __inline malloc_zone_t malloc_default_zone(void) { return (malloc...
  function malloc_zone_free (line 411) | static __inline void malloc_zone_free(malloc_zone_t z, void *p) { free(p...
  function malloc_zone_t (line 412) | static __inline malloc_zone_t malloc_zone_from_ptr(const void *p) { retu...
  function malloc_size (line 413) | static __inline size_t malloc_size(const void *p) { return _msize((void*...
  function BOOL (line 418) | static __inline BOOL OSAtomicCompareAndSwapLong(long oldl, long newl, lo...
  function BOOL (line 425) | static __inline BOOL OSAtomicCompareAndSwapPtrBarrier(void *oldp, void *...
  function BOOL (line 431) | static __inline BOOL OSAtomicCompareAndSwap32Barrier(int32_t oldl, int32...
  function OSAtomicDecrement32Barrier (line 437) | static __inline int32_t OSAtomicDecrement32Barrier(volatile int32_t *dst)
  function OSAtomicIncrement32Barrier (line 442) | static __inline int32_t OSAtomicIncrement32Barrier(volatile int32_t *dst)
  type DWORD (line 450) | typedef DWORD objc_thread_t;
  function thread_equal (line 451) | static __inline int thread_equal(objc_thread_t t1, objc_thread_t t2) {
  function objc_thread_t (line 454) | static __inline objc_thread_t thread_self(void) {
  type tls_key_t (line 458) | typedef struct {
  function tls_key_t (line 462) | static __inline tls_key_t tls_create(void (*dtor)(void*)) {
  function tls_set (line 472) | static __inline void tls_set(tls_key_t k, void *value) {
  type mutex_t (line 476) | typedef struct {
  function _mutex_lock_nodebug (line 481) | static __inline int _mutex_lock_nodebug(mutex_t *m) {
  function _mutex_try_lock_nodebug (line 489) | static __inline bool _mutex_try_lock_nodebug(mutex_t *m) {
  function _mutex_unlock_nodebug (line 496) | static __inline int _mutex_unlock_nodebug(mutex_t *m) {
  type mutex_t (line 503) | typedef mutex_t spinlock_t;
  type recursive_mutex_t (line 509) | typedef struct {
  function _recursive_mutex_lock_nodebug (line 515) | static __inline int _recursive_mutex_lock_nodebug(recursive_mutex_t *m) {
  function _recursive_mutex_try_lock_nodebug (line 519) | static __inline bool _recursive_mutex_try_lock_nodebug(recursive_mutex_t...
  function _recursive_mutex_unlock_nodebug (line 523) | static __inline int _recursive_mutex_unlock_nodebug(recursive_mutex_t *m) {
  type monitor_t (line 539) | typedef struct {
  function _monitor_enter_nodebug (line 551) | static inline int _monitor_enter_nodebug(monitor_t *c) {
  function _monitor_leave_nodebug (line 558) | static inline int _monitor_leave_nodebug(monitor_t *c) {
  function _monitor_wait_nodebug (line 562) | static inline int _monitor_wait_nodebug(monitor_t *c) {
  function monitor_notify (line 585) | static inline int monitor_notify(monitor_t *c) {
  function monitor_notifyAll (line 599) | static inline int monitor_notifyAll(monitor_t *c) {
  type IMAGE_DOS_HEADER (line 619) | typedef IMAGE_DOS_HEADER headerType;
  function nanoseconds (line 648) | static inline uint64_t nanoseconds() {
  type pthread_t (line 654) | typedef pthread_t objc_thread_t;
  function thread_equal (line 656) | static __inline int thread_equal(objc_thread_t t1, objc_thread_t t2) {
  function objc_thread_t (line 659) | static __inline objc_thread_t thread_self(void) {
  type pthread_key_t (line 664) | typedef pthread_key_t tls_key_t;
  function tls_key_t (line 666) | static inline tls_key_t tls_create(void (*dtor)(void*)) {
  function tls_set (line 674) | static inline void tls_set(tls_key_t k, void *value) {
  function is_valid_direct_key (line 681) | static bool is_valid_direct_key(tls_key_t k) {
  function tls_set_direct (line 702) | static inline void tls_set_direct(tls_key_t k, void *value)
  function pthread_t (line 717) | static inline pthread_t pthread_self_direct()
  function mach_port_t (line 723) | static inline mach_port_t mach_thread_self_direct()
  type fork_unsafe_lock_t (line 748) | struct fork_unsafe_lock_t {
  function assertLocked (line 785) | void assertLocked() {
  function assertUnlocked (line 789) | void assertUnlocked() {
  function lockTwo (line 796) | static void lockTwo(mutex_tt *lock1, mutex_tt *lock2) {
  function unlockTwo (line 806) | static void unlockTwo(mutex_tt *lock1, mutex_tt *lock2) {
  function class (line 812) | class locker : nocopy_t {
  function class (line 821) | class conditional_locker : nocopy_t {
  function tryUnlock (line 872) | bool tryUnlock()
  function assertLocked (line 881) | void assertLocked() {
  function assertUnlocked (line 885) | void assertUnlocked() {
  function leave (line 915) | void leave()
  function wait (line 923) | void wait()
  function notify (line 931) | void notify()
  function notifyAll (line 937) | void notifyAll()
  function forceReset (line 943) | void forceReset()
  function assertLocked (line 953) | void assertLocked()
  function assertUnlocked (line 958) | void assertUnlocked()
  function semaphore_t (line 966) | static inline semaphore_t create_semaphore(void)
  type headerType (line 977) | typedef struct mach_header headerType;
  type segmentType (line 978) | typedef struct segment_command segmentType;
  type sectionType (line 979) | typedef struct section sectionType;
  type headerType (line 981) | typedef struct mach_header_64 headerType;
  type segmentType (line 982) | typedef struct segment_command_64 segmentType;
  type sectionType (line 983) | typedef struct section_64 sectionType;
  function freeIfMutable (line 1024) | static inline void
  type __darwin_pthread_mutex_t (line 1105) | typedef __darwin_pthread_mutex_t pthread_mutex_t
  type __darwin_pthread_rwlock_t (line 1106) | typedef __darwin_pthread_rwlock_t pthread_rwlock_t
  type OSSpinLock (line 1107) | typedef int32_t OSSpinLock
  type os_unfair_lock (line 1108) | typedef struct os_unfair_lock_s os_unfair_lock

FILE: InterView-obj-isa-class/objc4-750/runtime/objc-private.h
  type objc_class (line 49) | struct objc_class
  type objc_object (line 50) | struct objc_object
  type objc_class (line 52) | struct objc_class
  type objc_object (line 53) | struct objc_object
  type SideTable (line 56) | struct SideTable
  type objc_object (line 75) | struct objc_object {
  type method_t (line 186) | struct method_t
  type ivar_t (line 187) | struct ivar_t
  type category_t (line 188) | struct category_t
  type property_t (line 189) | struct property_t
  type old_method (line 191) | struct old_method
  type old_ivar (line 192) | struct old_ivar
  type old_category (line 193) | struct old_category
  type old_property (line 194) | struct old_property
  type objc_selopt_t (line 236) | struct objc_selopt_t
  type header_info_rw (line 250) | struct header_info_rw {
  function setAllClassesRealized (line 264) | void setAllClassesRealized(bool v) {
  function header_info (line 268) | header_info *getNext() const {
  function setNext (line 272) | void setNext(header_info *v) {
  type header_info_rw (line 288) | struct header_info_rw
  type header_info (line 288) | struct header_info
  type headerType (line 290) | typedef struct header_info {
  function setmhdr (line 314) | void setmhdr(const headerType *mhdr) {
  function objc_image_info (line 318) | const objc_image_info *info() const {
  function setinfo (line 322) | void setinfo(const objc_image_info *info) {
  function isLoaded (line 326) | bool isLoaded() {
  function setLoaded (line 330) | void setLoaded(bool v) {
  function areAllClassesRealized (line 334) | bool areAllClassesRealized() {
  function setAllClassesRealized (line 338) | void setAllClassesRealized(bool v) {
  function header_info (line 342) | header_info *getNext() {
  function setNext (line 346) | void setNext(header_info *v) {
  function isBundle (line 350) | bool isBundle() {
  type old_protocol (line 361) | struct old_protocol
  type objc_module (line 362) | struct objc_module
  type objc_module (line 365) | struct objc_module
  type old_protocol (line 367) | struct old_protocol
  type objc_class (line 373) | struct objc_class
  function segnameEquals (line 398) | static inline bool segnameEquals(const char *lhs, const char *rhs) {
  function segnameStartsWith (line 402) | static inline bool segnameStartsWith(const char *segname, const char *pr...
  function sectnameEquals (line 406) | static inline bool sectnameEquals(const char *lhs, const char *rhs) {
  function sectnameStartsWith (line 410) | static inline bool sectnameStartsWith(const char *sectname, const char *...
  function class (line 508) | class monitor_locker_t : nocopy_t {
  function class (line 515) | class recursive_mutex_locker_t : nocopy_t {
  type alt_handler_list (line 525) | struct alt_handler_list
  type alt_handler_list (line 527) | struct alt_handler_list
  type _objc_pthread_data (line 549) | typedef struct {
  type SyncCache (line 573) | struct SyncCache
  type layout_bitmap (line 583) | typedef struct {
  type mach_header (line 609) | struct mach_header
  type mach_header (line 611) | struct mach_header
  type mach_header (line 612) | struct mach_header
  type mach_header (line 613) | struct mach_header
  type mach_header (line 614) | struct mach_header
  function _objc_strhash (line 665) | static __inline uint32_t _objc_strhash(const char *s) {
  function T (line 678) | inline T log2u(T x) {
  function T (line 683) | inline T exp2u(T x) {
  function T (line 688) | T exp2m1u(T x) {
  function delete (line 715) | inline void operator delete(void* p) throw() { free(p); }
  function delete (line 717) | inline void operator delete(void* p, const std::nothrow_t&) throw() { fr...
  function class (line 723) | class TimeLogger {
  type PaddedT (line 755) | struct PaddedT {
  function indexForPointer (line 761) | static unsigned int indexForPointer(const void *p) {

FILE: InterView-obj-isa-class/objc4-750/runtime/objc-runtime-new.h
  type mask_t (line 28) | typedef uint32_t mask_t;
  type mask_t (line 30) | typedef uint16_t mask_t;
  type cache_key_t (line 32) | typedef uintptr_t cache_key_t;
  type swift_class_t (line 34) | struct swift_class_t
  type bucket_t (line 37) | struct bucket_t {
  function setKey (line 52) | inline void setKey(cache_key_t newKey) { _key = newKey; }
  function setImp (line 53) | inline void setImp(IMP newImp) { _imp = newImp; }
  type cache_t (line 59) | struct cache_t {
  type classref (line 88) | struct classref
  function byteSize (line 125) | static size_t byteSize(uint32_t entsize, uint32_t count) {
  function List (line 129) | List *duplicate() const {
  type iterator (line 137) | struct iterator
  function iterator (line 141) | iterator begin() {
  function iterator (line 147) | iterator end() {
  type iterator (line 151) | struct iterator {
  function iterator (line 180) | const iterator operator + (ptrdiff_t delta) const {
  function iterator (line 183) | const iterator operator - (ptrdiff_t delta) const {
  function iterator (line 189) | iterator operator ++ (int) {
  function iterator (line 192) | iterator operator -- (int) {
  function operator (line 196) | ptrdiff_t operator - (const iterator& rhs) const {
  type method_t (line 222) | struct method_t {
  type ivar_t (line 237) | struct ivar_t {
  function indexOfMethod (line 269) | uint32_t indexOfMethod(const method_t *meth) const {
  type ivar_list_t (line 277) | struct ivar_list_t
  type property_list_t (line 283) | struct property_list_t
  type protocol_ref_t (line 287) | typedef uintptr_t protocol_ref_t;
  function objc_object (line 296) | struct protocol_t : objc_object {
  type protocol_list_t (line 343) | struct protocol_list_t {
  type protocol_ref_t (line 356) | typedef protocol_ref_t* iterator;
  type protocol_ref_t (line 357) | typedef const protocol_ref_t* const_iterator;
  function iterator (line 362) | iterator begin() {
  function iterator (line 368) | iterator end() {
  type locstamped_category_t (line 373) | struct locstamped_category_t {
  type locstamped_category_list_t (line 378) | struct locstamped_category_list_t {
  type class_ro_t (line 553) | struct class_ro_t {
  function byteSize (line 594) | struct array_t {
  function method_array_t (line 796) | method_array_t duplicate() {
  function clearFlags (line 826) | struct class_rw_t {
  function changeFlags (line 857) | void changeFlags(uint32_t set, uint32_t clear)
  type class_data_bits_t (line 870) | struct class_data_bits_t {
  function updateFastAlloc (line 881) | static uintptr_t updateFastAlloc(uintptr_t oldBits, uintptr_t change)
  function updateFastAlloc (line 895) | static uintptr_t updateFastAlloc(uintptr_t oldBits, uintptr_t change) {
  function setBits (line 900) | void setBits(uintptr_t set)
  function clearBits (line 910) | void clearBits(uintptr_t clear)
  function setData (line 925) | void setData(class_rw_t *newData)
  function hasDefaultRR (line 937) | bool hasDefaultRR() {
  function setHasDefaultRR (line 940) | void setHasDefaultRR() {
  function setHasCustomRR (line 943) | void setHasCustomRR() {
  function hasDefaultRR (line 947) | bool hasDefaultRR() {
  function setHasDefaultRR (line 950) | void setHasDefaultRR() {
  function setHasCustomRR (line 953) | void setHasCustomRR() {
  function hasDefaultAWZ (line 959) | bool hasDefaultAWZ() {
  function setHasDefaultAWZ (line 962) | void setHasDefaultAWZ() {
  function setHasCustomAWZ (line 965) | void setHasCustomAWZ() {
  function hasDefaultAWZ (line 969) | bool hasDefaultAWZ() {
  function setHasDefaultAWZ (line 972) | void setHasDefaultAWZ() {
  function setHasCustomAWZ (line 975) | void setHasCustomAWZ() {
  function hasCxxCtor (line 981) | bool hasCxxCtor() {
  function setHasCxxCtor (line 984) | void setHasCxxCtor() {
  function hasCxxCtor (line 988) | bool hasCxxCtor() {
  function setHasCxxCtor (line 991) | void setHasCxxCtor() {
  function hasCxxDtor (line 997) | bool hasCxxDtor() {
  function setHasCxxDtor (line 1000) | void setHasCxxDtor() {
  function hasCxxDtor (line 1004) | bool hasCxxDtor() {
  function setHasCxxDtor (line 1007) | void setHasCxxDtor() {
  function instancesRequireRawIsa (line 1013) | bool instancesRequireRawIsa() {
  function setInstancesRequireRawIsa (line 1016) | void setInstancesRequireRawIsa() {
  function instancesRequireRawIsa (line 1020) | bool instancesRequireRawIsa() {
  function setInstancesRequireRawIsa (line 1023) | void setInstancesRequireRawIsa() {
  function instancesRequireRawIsa (line 1027) | bool instancesRequireRawIsa() {
  function setInstancesRequireRawIsa (line 1030) | void setInstancesRequireRawIsa() {
  function fastInstanceSize (line 1036) | size_t fastInstanceSize()
  function setFastInstanceSize (line 1041) | void setFastInstanceSize(size_t newSize)
  function canAllocFast (line 1060) | bool canAllocFast() {
  function fastInstanceSize (line 1064) | size_t fastInstanceSize() {
  function setFastInstanceSize (line 1067) | void setFastInstanceSize(size_t) {
  function canAllocFast (line 1070) | bool canAllocFast() {
  function setClassArrayIndex (line 1075) | void setClassArrayIndex(unsigned Idx) {
  function classArrayIndex (line 1083) | unsigned classArrayIndex() {
  function isAnySwift (line 1091) | bool isAnySwift() {
  function isSwiftStable (line 1095) | bool isSwiftStable() {
  function setIsSwiftStable (line 1098) | void setIsSwiftStable() {
  function isSwiftLegacy (line 1102) | bool isSwiftLegacy() {
  function setIsSwiftLegacy (line 1105) | void setIsSwiftLegacy() {
  function objc_object (line 1111) | struct objc_class : objc_object {
  function objc_class (line 1364) | struct swift_class_t : objc_class {
  type category_t (line 1382) | struct category_t {
  type header_info (line 1397) | struct header_info
  type objc_super2 (line 1400) | struct objc_super2 {
  type message_ref_t (line 1405) | struct message_ref_t {
  function foreach_realized_class_and_subclass_2 (line 1413) | static inline void
  function foreach_realized_class_and_subclass (line 1445) | static inline void
  function foreach_realized_class_and_metaclass (line 1460) | static inline void
  function alignedInstanceSize (line 1480) | uint32_t alignedInstanceSize() {

FILE: InterView-obj-isa-class/objc4-750/runtime/objc-runtime-old.h
  type old_class_ext (line 84) | struct old_class_ext {
  type old_category (line 90) | struct old_category {
  type old_ivar (line 107) | struct old_ivar {
  type old_ivar_list (line 116) | struct old_ivar_list {
  type old_method (line 126) | struct old_method {
  type old_method_list (line 132) | struct old_method_list {
  type old_protocol (line 143) | struct old_protocol {
  type old_protocol_list (line 151) | struct old_protocol_list {
  type old_protocol_ext (line 157) | struct old_protocol_ext {
  type old_property (line 171) | struct old_property {
  type old_property_list (line 176) | struct old_property_list {
  function objc_object (line 183) | struct objc_class : objc_object {
  function setHasDefaultRR (line 241) | void setHasDefaultRR() { }
  function printCustomRR (line 242) | void printCustomRR(bool) { }
  function hasCustomAWZ (line 244) | bool hasCustomAWZ() {
  function setHasDefaultAWZ (line 248) | void setHasDefaultAWZ() { }
  function printCustomAWZ (line 249) | void printCustomAWZ(bool) { }
  function instancesHaveAssociatedObjects (line 251) | bool instancesHaveAssociatedObjects() {
  function setInstancesHaveAssociatedObjects (line 255) | void setInstancesHaveAssociatedObjects() {
  function shouldGrowCache (line 259) | bool shouldGrowCache() {
  function setShouldGrowCache (line 263) | void setShouldGrowCache(bool grow) {
  function isInitializing (line 269) | bool isInitializing() {
  function setInitializing (line 274) | void setInitializing() {
  function isInitialized (line 279) | bool isInitialized() {
  function setInitialized (line 284) | void setInitialized() {
  function isLoadable (line 288) | bool isLoadable() {
  function isRootClass (line 304) | bool isRootClass() {
  function isRootMetaclass (line 308) | bool isRootMetaclass() {
  function isMetaClass (line 312) | bool isMetaClass() {
  function Class (line 317) | Class getMeta() {
  function unalignedInstanceStart (line 323) | uint32_t unalignedInstanceStart() {
  function alignedInstanceStart (line 336) | uint32_t alignedInstanceStart() {
  function unalignedInstanceSize (line 342) | uint32_t unalignedInstanceSize() {
  function alignedInstanceSize (line 347) | uint32_t alignedInstanceSize() {
  function instanceSize (line 351) | size_t instanceSize(size_t extraBytes) {
  type old_method_list (line 375) | struct old_method_list
  type old_method_list (line 376) | struct old_method_list
  type old_category (line 376) | struct old_category
  type old_method_list (line 377) | struct old_method_list
  type old_property_list (line 379) | struct old_property_list
  type old_property (line 386) | struct old_property
  type old_property_list (line 386) | struct old_property_list
  type old_property (line 387) | struct old_property
  type old_property_list (line 387) | struct old_property_list
  type objc_method_description (line 389) | struct objc_method_description
  type old_protocol (line 389) | struct old_protocol

FILE: InterView-obj-isa-class/objc4-750/runtime/objc-sel-set.h
  type __objc_sel_set (line 41) | struct __objc_sel_set
  type __objc_sel_set (line 42) | struct __objc_sel_set
  type __objc_sel_set (line 43) | struct __objc_sel_set

FILE: InterView-obj-isa-class/objc4-750/runtime/objc-weak.h
  type weak_entry_t (line 80) | struct weak_entry_t {
  function referent (line 106) | referent(newReferent)
  type weak_table_t (line 119) | struct weak_table_t {

FILE: InterView-obj-isa-class/objc4-750/runtime/objc.h
  type objc_class (line 38) | struct objc_class
  type objc_object (line 41) | struct objc_object {
  type objc_object (line 46) | struct objc_object
  type objc_selector (line 50) | struct objc_selector
  type id (line 56) | typedef id _Nullable (*IMP)(id _Nonnull, SEL _Nonnull, ...);
  type BOOL (line 78) | typedef bool BOOL;
  type BOOL (line 81) | typedef signed char BOOL;
  type arith_t (line 241) | typedef long arith_t;
  type uarith_t (line 242) | typedef unsigned long uarith_t;
  type arith_t (line 245) | typedef int arith_t;
  type uarith_t (line 246) | typedef unsigned uarith_t;

FILE: InterView-obj-isa-class/objc4-750/runtime/objcrt.c
  function __objc_init (line 60) | static int __objc_init(void)
  function __objc_unload (line 74) | static void __objc_unload(void)
  function __objc_load (line 79) | static int __objc_load(void)

FILE: InterView-obj-isa-class/objc4-750/runtime/objcrt.h
  type objc_sections (line 7) | typedef struct {

FILE: InterView-obj-isa-class/objc4-750/runtime/runtime.h
  type objc_method (line 44) | struct objc_method
  type objc_ivar (line 47) | struct objc_ivar
  type objc_category (line 50) | struct objc_category
  type objc_property (line 53) | struct objc_property
  type objc_class (line 55) | struct objc_class {
  type Protocol (line 78) | typedef struct objc_object Protocol;
  type objc_method_description (line 82) | struct objc_method_description {
  type objc_property_attribute_t (line 88) | typedef struct {
  type BOOL (line 1707) | typedef BOOL (*objc_hook_getImageName)(Class _Nonnull cls, const char * ...
  type objc_method_description_list (line 1808) | struct objc_method_description_list {
  type objc_protocol_list (line 1814) | struct objc_protocol_list {
  type objc_category (line 1821) | struct objc_category {
  type objc_ivar (line 1830) | struct objc_ivar {
  type objc_ivar_list (line 1839) | struct objc_ivar_list {
  type objc_method (line 1849) | struct objc_method {
  type objc_method_list (line 1855) | struct objc_method_list {
  type objc_symtab (line 1867) | struct objc_symtab
  type objc_symtab (line 1869) | struct objc_symtab {
  type objc_cache (line 1878) | struct objc_cache
  type objc_cache (line 1888) | struct objc_cache {
  type objc_module (line 1895) | struct objc_module
  type objc_module (line 1897) | struct objc_module {
  type objc_method_list (line 1906) | struct objc_method_list
Condensed preview — 267 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,442K chars).
[
  {
    "path": ".gitignore",
    "chars": 1398,
    "preview": "# Xcode\n#\n# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore\n\n"
  },
  {
    "path": "BlockFile.md",
    "chars": 18572,
    "preview": "# Block\n\n> 面试驱动技术合集(初中级iOS开发),关注仓库,及时获取更新 [Interview-series](https://github.com/miniLV/Interview-series)\n\n![](https://us"
  },
  {
    "path": "InterView-obj-isa-class/InterView-obj-isa-class/NSObject+MNTest.h",
    "chars": 237,
    "preview": "//\n//  NSObject+MNTest.h\n//  InterView-obj-isa-class\n//\n//  Created by 梁宇航 on 2019/1/20.\n//  Copyright © 2019年 梁宇航. All "
  },
  {
    "path": "InterView-obj-isa-class/InterView-obj-isa-class/NSObject+MNTest.m",
    "chars": 374,
    "preview": "//\n//  NSObject+MNTest.m\n//  InterView-obj-isa-class\n//\n//  Created by 梁宇航 on 2019/1/20.\n//  Copyright © 2019年 梁宇航. All "
  },
  {
    "path": "InterView-obj-isa-class/InterView-obj-isa-class/main.m",
    "chars": 1467,
    "preview": "//\n//  main.m\n//  InterView-obj-isa-class\n//\n//  Created by 梁宇航 on 2019/1/20.\n//  Copyright © 2019年 梁宇航. All rights rese"
  },
  {
    "path": "InterView-obj-isa-class/InterView-obj-isa-class.xcodeproj/project.pbxproj",
    "chars": 9837,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 50;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "InterView-obj-isa-class/InterView-obj-isa-class.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 168,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:InterView-obj-i"
  },
  {
    "path": "InterView-obj-isa-class/InterView-obj-isa-class.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/.clang-format",
    "chars": 3177,
    "preview": "# Format of this file is YAML\n# Minimum clang-format version required: clang-format version 3.6.0\n# Detailed description"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/.gitattributes",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/.gitignore",
    "chars": 91,
    "preview": "# /libmalloc.xcodeproj/\n/libmalloc.xcodeproj/*.xcworkspace\n/libmalloc.xcodeproj/xcuserdata\n"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/include/malloc/_malloc.h",
    "chars": 2021,
    "preview": "/*\n * Copyright (c) 2018 Apple Computer, Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file co"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/include/malloc/malloc.h",
    "chars": 16238,
    "preview": "/*\n * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n * \n * This file c"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/libmalloc.xcodeproj/project.pbxproj",
    "chars": 97429,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXAggregateTarget sec"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/man/malloc.3",
    "chars": 8498,
    "preview": ".\\\" Copyright (c) 2006 Apple Computer, Inc.  All rights reserved.\n.\\\"\n.\\\" @APPLE_LICENSE_HEADER_START@\n.\\\"\n.\\\" The conte"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/man/malloc_size.3",
    "chars": 1646,
    "preview": ".\\\" Copyright (c) 2006 Apple Computer, Inc.  All rights reserved.\n.\\\"\n.\\\" @APPLE_LICENSE_HEADER_START@\n.\\\"\n.\\\" The conte"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/man/malloc_zone_malloc.3",
    "chars": 3952,
    "preview": ".\\\" Copyright (c) 2008 Apple, Inc.  All rights reserved.\n.\\\"\n.\\\" @APPLE_LICENSE_HEADER_START@\n.\\\"\n.\\\" The contents of th"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/man/manpages.lst",
    "chars": 410,
    "preview": "# manpage tables\n# <source> <dest> [<link> <link> ...]\n\n# man3\nmalloc.3 malloc.3 calloc.3 free.3 realloc.3 reallocf.3 va"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/private/malloc_private.h",
    "chars": 3172,
    "preview": "/*\n * Copyright (c) 1999-2016 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n * \n * This file contai"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/private/stack_logging.h",
    "chars": 7817,
    "preview": "/*\n * Copyright (c) 1999-2007 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n * \n * This file contai"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/resolver/resolver.c",
    "chars": 703,
    "preview": "/*\n * Copyright (c) 2018 Apple Inc. All rights reserved.\n *\n * @APPLE_APACHE_LICENSE_HEADER_START@\n *\n * Licensed under "
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/resolver/resolver.h",
    "chars": 828,
    "preview": "/*\n * Copyright (c) 2018 Apple Inc. All rights reserved.\n *\n * @APPLE_APACHE_LICENSE_HEADER_START@\n *\n * Licensed under "
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/resolver/resolver_internal.h",
    "chars": 872,
    "preview": "/*\n * Copyright (c) 2018 Apple Inc. All rights reserved.\n *\n * @APPLE_APACHE_LICENSE_HEADER_START@\n *\n * Licensed under "
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/base.h",
    "chars": 4712,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/bitarray.c",
    "chars": 19407,
    "preview": "/*\n * Copyright (c) 1999, 2000, 2003, 2005, 2008, 2012 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/bitarray.h",
    "chars": 4510,
    "preview": "/*\n * Copyright (c) 1999, 2000, 2003, 2005, 2008, 2012 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/debug.h",
    "chars": 1988,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/dtrace.h",
    "chars": 1997,
    "preview": "/*\n * Copyright (c) 2016 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/empty.s",
    "chars": 1283,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/frozen_malloc.c",
    "chars": 5536,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/frozen_malloc.h",
    "chars": 1153,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/internal.h",
    "chars": 3353,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/legacy_malloc.c",
    "chars": 2155,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/legacy_malloc.h",
    "chars": 1166,
    "preview": "/*\n * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n * \n * This file c"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/locking.h",
    "chars": 2128,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/magazine_inline.h",
    "chars": 18133,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/magazine_large.c",
    "chars": 25311,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/magazine_lite.c",
    "chars": 9583,
    "preview": "/*\n * Copyright (c) 2016, Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Or"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/magazine_malloc.c",
    "chars": 46323,
    "preview": "/*\n * Copyright (c) 1999, 2006, 2008 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file "
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/magazine_malloc.h",
    "chars": 8115,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/magazine_rack.c",
    "chars": 6075,
    "preview": "/*\n * Copyright (c) 2016 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/magazine_rack.h",
    "chars": 3202,
    "preview": "/*\n * Copyright (c) 2016 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/magazine_small.c",
    "chars": 81220,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/magazine_tiny.c",
    "chars": 84649,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/magazine_zone.h",
    "chars": 21934,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/magmallocProvider.d",
    "chars": 795,
    "preview": "provider magmalloc {\n\t\tprobe refreshIndex(void *, int, int);\n\t\tprobe depotRegion(void *, int, void *, int, int);\n\t\tprobe"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/malloc.c",
    "chars": 77051,
    "preview": "/*\n * Copyright (c) 1999, 2000, 2003, 2005, 2008, 2012 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/malloc_common.c",
    "chars": 3715,
    "preview": "/*\n * Copyright (c) 2018 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/malloc_common.h",
    "chars": 1468,
    "preview": "/*\n * Copyright (c) 2018 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/malloc_printf.c",
    "chars": 6994,
    "preview": "/*\n * Copyright (c) 2018 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/nano_malloc.c",
    "chars": 64939,
    "preview": "/*\n * Copyright (c) 1999, 2000, 2003, 2005, 2008, 2012 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/nano_malloc.h",
    "chars": 1418,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/nano_malloc_common.c",
    "chars": 9758,
    "preview": "/*\n * Copyright (c) 2018 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/nano_malloc_common.h",
    "chars": 2426,
    "preview": "/*\n * Copyright (c) 2018 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/nano_zone.h",
    "chars": 4781,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/nano_zone_common.h",
    "chars": 2176,
    "preview": "/*\n * Copyright (c) 2018 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/nanov2_malloc.c",
    "chars": 102568,
    "preview": "/*\n * Copyright (c) 2018 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/nanov2_malloc.h",
    "chars": 1457,
    "preview": "/*\n * Copyright (c) 2018 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/nanov2_zone.h",
    "chars": 10596,
    "preview": "/*\n * Copyright (c) 2018 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/platform.h",
    "chars": 3314,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/printf.h",
    "chars": 3405,
    "preview": "/*\n * Copyright (c) 2006 Apple Computer, Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n * \n * This file c"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/purgeable_malloc.c",
    "chars": 12084,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/purgeable_malloc.h",
    "chars": 1269,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/radix_tree.c",
    "chars": 18757,
    "preview": "/*\n * Copyright (c) 2016 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/radix_tree.h",
    "chars": 2708,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/radix_tree_debug.c",
    "chars": 3117,
    "preview": "/*\n * Copyright (c) 2017 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/radix_tree_internal.h",
    "chars": 4589,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/stack_logging_disk.c",
    "chars": 100962,
    "preview": "/*\n * Copyright (c) 2007-2013 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contain"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/stack_logging_internal.h",
    "chars": 2585,
    "preview": "/*\n * Copyright (c) 2016, Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Or"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/thresholds.h",
    "chars": 7199,
    "preview": "/*\n * Copyright (c) 2015 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/trace.h",
    "chars": 2786,
    "preview": "/*\n * Copyright (c) 2016 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/vm.c",
    "chars": 10031,
    "preview": "/*\n * Copyright (c) 2016 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/src/vm.h",
    "chars": 1771,
    "preview": "/*\n * Copyright (c) 2016 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/Makefile",
    "chars": 3514,
    "preview": "PROJECT := libmalloc\nTEST_DIR := tests/\n\nDEVELOPER_DIR ?= /Applications/Xcode.app/Contents/Developer/\n\ninclude $(DEVELOP"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/Benchmark.cpp",
    "chars": 7668,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/Benchmark.h",
    "chars": 2764,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/CPUCount.cpp",
    "chars": 1779,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/CPUCount.h",
    "chars": 1434,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/CommandLine.cpp",
    "chars": 2068,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/CommandLine.h",
    "chars": 1889,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/Interpreter.cpp",
    "chars": 4391,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/Interpreter.h",
    "chars": 1840,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/balloon.cpp",
    "chars": 2847,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/balloon.h",
    "chars": 1433,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/big.cpp",
    "chars": 2544,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/big.h",
    "chars": 1417,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/churn.cpp",
    "chars": 2087,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/churn.h",
    "chars": 1425,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/fragment.cpp",
    "chars": 3921,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/fragment.h",
    "chars": 1486,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/list.cpp",
    "chars": 3989,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/list.h",
    "chars": 1476,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/mbmalloc.cpp",
    "chars": 1849,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/mbmalloc.h",
    "chars": 2004,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/medium.cpp",
    "chars": 2549,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/medium.h",
    "chars": 1429,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/memalign.cpp",
    "chars": 2051,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/memalign.h",
    "chars": 1437,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/message.cpp",
    "chars": 4610,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/message.h",
    "chars": 1482,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/realloc.cpp",
    "chars": 1460,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/realloc.h",
    "chars": 1433,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/stress.cpp",
    "chars": 4494,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/stress.h",
    "chars": 1428,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/stress_aligned.cpp",
    "chars": 4814,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/stress_aligned.h",
    "chars": 1460,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/tree.cpp",
    "chars": 5339,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench/tree.h",
    "chars": 1520,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/MallocBench.cpp",
    "chars": 2101,
    "preview": "/*\n * Copyright (C) 2014 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/asan.c",
    "chars": 2119,
    "preview": "#include <TargetConditionals.h>\n#include <darwintest.h>\n#include <dlfcn.h>\n#include <setjmp.h>\n#include <stdlib.h>\n#incl"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/basic_malloc_free_perf.c",
    "chars": 17398,
    "preview": "//\n//  basic_malloc_free_perf.c\n//  libmalloc\n//\n//  Simple and repeatable performance tests for malloc/free, running te"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/calloc_test.c",
    "chars": 3619,
    "preview": "//\n//  malloc_calloc_test.c\n//  libmalloc\n//\n//  test calloc for various sizes\n//\n#include <TargetConditionals.h>\n#inclu"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/libmalloc_tests.xcodeproj/project.pbxproj",
    "chars": 3673,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXFileReference secti"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/madvise.c",
    "chars": 8295,
    "preview": "#include <TargetConditionals.h>\n#include <darwintest.h>\n#include <sys/mman.h>\n#include <stdio.h>\n#include <malloc/malloc"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/magazine_malloc.c",
    "chars": 1245,
    "preview": "//\n//  magazine_malloc.c\n//  libmalloc\n//\n//  Created by Kim Topley on 11/8/17.\n//\n#include <darwintest.h>\n#include <std"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/magazine_rack.c",
    "chars": 695,
    "preview": "//\n//  magazine_rack.c\n//  libmalloc\n//\n//  Created by Matt Wright on 8/29/16.\n//\n//\n\n#include <darwintest.h>\n#include \""
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/magazine_small_test.c",
    "chars": 3797,
    "preview": "//\n//  magazine_small_test.c\n//  libmalloc\n//\n//  Created by Matt Wright on 8/22/16.\n//\n//\n\n#include <darwintest.h>\n\n#in"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/magazine_testing.h",
    "chars": 1740,
    "preview": "/*\n * Copyright (c) 2016 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/magazine_tiny_test.c",
    "chars": 3725,
    "preview": "//\n//  magazine_tiny_test.c\n//  libmalloc\n//\n//  Created by Matt Wright on 8/22/16.\n//\n//\n\n#include <darwintest.h>\n\n#inc"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/malloc_claimed_address_tests.c",
    "chars": 9311,
    "preview": "//\n//  malloc_claimed_address_tests.c\n//  libmalloc\n//\n//  Tests for malloc_claimed_address() and malloc_zone_claimed_ad"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/malloc_free_test.c",
    "chars": 1874,
    "preview": "//\n//  malloc_free_test.c\n//  libmalloc\n//\n//  test allocating and freeing all sizes\n//\n\n#include <darwintest.h>\n#includ"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/malloc_size_test.c",
    "chars": 2164,
    "preview": "//\n//  malloc_size_test.c\n//  libmalloc\n//\n//  Tests for malloc_size() on both good and bad pointers.\n//\n\n#include <darw"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/nano_tests.c",
    "chars": 12542,
    "preview": "//\n//  nano_tests.c\n//  libmalloc\n//\n//  Tests that are specific to the implementation details of Nanov2.\n//\n#include <T"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/perf_contended_malloc_free.c",
    "chars": 9105,
    "preview": "#include <stdlib.h>\n#include <stdio.h>\n#include <stdatomic.h>\n#include <math.h>\n#include <unistd.h>\n#include <sys/sysctl"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/perf_realloc.c",
    "chars": 5063,
    "preview": "#include <stdlib.h>\n#include <mach/vm_page_size.h>\n#include <../src/internal.h>\n#include <darwintest.h>\n#include <perfch"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/radix_tree_test.m",
    "chars": 7997,
    "preview": "\n\n#import <Foundation/Foundation.h>\n\n#include <stdio.h>\n#include <stdlib.h>\n\n#include <assert.h>\n#include <stdbool.h>\n#i"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/reallocarray.c",
    "chars": 920,
    "preview": "#include <stdlib.h>\n\n#include <malloc_private.h>\n\n#include <darwintest.h>\n\nT_DECL(reallorarray, \"reallocarray(3)\",\n\t   T"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/stack_logging_test.c",
    "chars": 42424,
    "preview": "#include <stdio.h>\n#include <stdlib.h>\n#include <stdbool.h>\n#include <malloc/malloc.h>\n#include <mach/mach.h>\n#include <"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/stress_test.c",
    "chars": 19025,
    "preview": "/*\n * malloc_stress:  Stress the heck out of malloc(), and do a lot of\n *                 sanity checks that the malloc("
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tests/tsan.c",
    "chars": 2755,
    "preview": "#include <darwintest.h>\n#include <dlfcn.h>\n#include <pthread.h>\n#include <stdlib.h>\n\nT_DECL(tsan_sanity, \"TSan Sanity Ch"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tools/malloc_replay.cpp",
    "chars": 32271,
    "preview": "/*\n * Copyright (c) 2016 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tools/malloc_replay.h",
    "chars": 5283,
    "preview": "/*\n * Copyright (c) 2018 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tools/malloc_replay_plotter.py",
    "chars": 14656,
    "preview": "#!/usr/bin/env python\n\nfrom __future__ import absolute_import\nfrom __future__ import unicode_literals\nfrom __future__ im"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tools/radix_tree_main.m",
    "chars": 3196,
    "preview": "/*\n * Copyright (c) 2017 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contains Ori"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/tools/read-radix-tree",
    "chars": 519,
    "preview": "#!/usr/bin/perl\n\n# read the radix tree out of a process and write it to stdout\n\nmy $proc = shift;\n\nmy @vmmap_out = `vmma"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/xcodeconfig/interposable.list",
    "chars": 9,
    "preview": "_realloc\n"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/xcodeconfig/libmalloc.dirty",
    "chars": 561,
    "preview": "_max_magazines\n_malloc_entropy\n_first_block_offset_by_size_class\n_last_block_offset_by_size_class\n_ptr_offset_to_size_cl"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/xcodeconfig/libmalloc.xcconfig",
    "chars": 3133,
    "preview": "#include \"<DEVELOPER_DIR>/Makefiles/CoreOS/Xcode/BSD.xcconfig\"\n\nSDKROOT = macosx.internal\nSUPPORTED_PLATFORMS = macosx i"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/xcodeconfig/libmalloc_eos.xcconfig",
    "chars": 328,
    "preview": "#include \"libmalloc.xcconfig\"\n\nBUILD_VARIANTS = normal\nEXECUTABLE_PREFIX = lib\nGENERATE_MASTER_OBJECT_FILE = YES\nINSTALL"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/xcodeconfig/libmalloc_resolved.xcconfig",
    "chars": 210,
    "preview": "#include \"libmalloc.xcconfig\"\n\nSUPPORTED_PLATFORMS = iphoneos appletvos watchos\nPRODUCT_NAME = malloc_$(RESOLVED_VARIANT"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/xcodeconfig/libmalloc_resolver.xcconfig",
    "chars": 32,
    "preview": "#include \"libmalloc.xcconfig\"\n\n\n"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/xcodeconfig/libmalloc_static.xcconfig",
    "chars": 281,
    "preview": "#include \"libmalloc.xcconfig\"\n\nBUILD_VARIANTS = normal debug\nEXECUTABLE_PREFIX = lib\nGENERATE_MASTER_OBJECT_FILE = YES\nI"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/xcodescripts/install-codes.sh",
    "chars": 320,
    "preview": "#!/bin/bash -e\n# install kdebug trace files based on the input file\nINPUT=${SCRIPT_INPUT_FILE_0}\nOUTPUT=${SCRIPT_OUTPUT_"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/xcodescripts/manpages.sh",
    "chars": 1030,
    "preview": "#!/bin/bash -e\n\nif [ \"$ACTION\" = installhdrs ]; then exit 0; fi\nif [[ \"$PLATFORM_NAME\" != \"macosx\" ]]; then exit 0; fi\n\n"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/xcodescripts/reindent.sh",
    "chars": 790,
    "preview": "#!/bin/bash\n#\n# Reindent CWD recursively using clang-format (assumed to be in your PATH),\n# and per-component or per-dir"
  },
  {
    "path": "InterView-obj-isa-class/libmalloc-166.220.1/xcodescripts/sanitise_headers.sh",
    "chars": 702,
    "preview": "#!/bin/bash -e\n#\n# Copyright (c) 2010-2011 Apple Inc. All rights reserved.\n#\n# @APPLE_APACHE_LICENSE_HEADER_START@\n#\n# L"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/APPLE_LICENSE",
    "chars": 19829,
    "preview": "APPLE PUBLIC SOURCE LICENSE\nVersion 2.0 - August 6, 2003\n\nPlease read this License carefully before downloading this sof"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/ReleaseNotes.rtf",
    "chars": 19066,
    "preview": "{\\rtf1\\mac\\ansicpg10000\\cocoartf824\\cocoasubrtf420\n{\\fonttbl\\f0\\fswiss\\fcharset77 Helvetica-Bold;\\f1\\fswiss\\fcharset77 H"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/interposable.txt",
    "chars": 14,
    "preview": "_objc_release\n"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/libobjc.order",
    "chars": 10549,
    "preview": "__objc_init\n_environ_init\n_tls_init\n_lock_init\n_recursive_mutex_init\n_exception_init\n_map_images\n_map_images_nolock\n__ge"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/markgc.cpp",
    "chars": 21218,
    "preview": "/*\n * Copyright (c) 2007-2009 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * This file cont"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/objc.sln",
    "chars": 1847,
    "preview": "\r\nMicrosoft Visual Studio Solution File, Format Version 9.00\r\n# Visual C++ Express 2005\r\nProject(\"{8BC9CEB8-8B4A-11D0-8"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/objc.vcproj",
    "chars": 24260,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\"?>\r\n<VisualStudioProject\r\n\tProjectType=\"Visual C++\"\r\n\tVersion=\"8.00\"\r\n\tName=\""
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/objc.xcodeproj/project.pbxproj",
    "chars": 64319,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXAggregateTarget sec"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/objc.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 135,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/objc.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/objcrt/objcrt.vcproj",
    "chars": 2738,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\"?>\r\n<VisualStudioProject\r\n\tProjectType=\"Visual C++\"\r\n\tVersion=\"8.00\"\r\n\tName=\""
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/prebuild.bat",
    "chars": 827,
    "preview": "@echo off\n\necho prebuild: installing headers\nxcopy /Y \"%ProjectDir%runtime\\objc.h\" \"%DSTROOT%\\AppleInternal\\include\\objc"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/Messengers.subproj/objc-msg-arm.s",
    "chars": 20010,
    "preview": "/*\n * @APPLE_LICENSE_HEADER_START@\n * \n * Copyright (c) 1999-2007 Apple Computer, Inc.  All Rights Reserved.\n * \n * This"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/Messengers.subproj/objc-msg-arm64.s",
    "chars": 13586,
    "preview": "/*\n * @APPLE_LICENSE_HEADER_START@\n * \n * Copyright (c) 2011 Apple Inc.  All Rights Reserved.\n * \n * This file contains "
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/Messengers.subproj/objc-msg-i386.s",
    "chars": 30888,
    "preview": "/*\n * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * This file cont"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/Messengers.subproj/objc-msg-simulator-i386.s",
    "chars": 22174,
    "preview": "/*\n * Copyright (c) 1999-2009 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * This file cont"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/Messengers.subproj/objc-msg-simulator-x86_64.s",
    "chars": 27208,
    "preview": "/*\n * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * This file cont"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/Messengers.subproj/objc-msg-win32.m",
    "chars": 10495,
    "preview": "#include \"objc-private.h\"\r\n\r\n// out-of-band parameter to objc_msgForward\r\n#define kFwdMsgSend 1\r\n#define kFwdMsgSendStre"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/Messengers.subproj/objc-msg-x86_64.s",
    "chars": 28189,
    "preview": "/*\n * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * This file cont"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/Module/ObjectiveC.apinotes",
    "chars": 11147,
    "preview": "---\nName: ObjectiveC\nClasses:\n- Name: NSArray\n  SwiftBridge: 'Swift.Array'\n- Name: NSDictionary\n  SwiftBridge: 'Swift.Di"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/Module/module.modulemap",
    "chars": 673,
    "preview": "module ObjectiveC [system] [extern_c] {\n  umbrella \".\"\n  export *\n  module * { \n    export *\n  }\n\n  module NSObject {\n  "
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/NSObjCRuntime.h",
    "chars": 737,
    "preview": "/*\tNSObjCRuntime.h\n\tCopyright (c) 1994-2012, Apple Inc. All rights reserved.\n*/\n\n#ifndef _OBJC_NSOBJCRUNTIME_H_\n#define "
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/NSObject.h",
    "chars": 3334,
    "preview": "/*\tNSObject.h\n\tCopyright (c) 1994-2012, Apple Inc. All rights reserved.\n*/\n\n#ifndef _OBJC_NSOBJECT_H_\n#define _OBJC_NSOB"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/NSObject.mm",
    "chars": 60087,
    "preview": "/*\n * Copyright (c) 2010-2012 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n *\n * This file contain"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/Object.h",
    "chars": 3875,
    "preview": "/*\n * Copyright (c) 1999-2003, 2005-2007 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * Thi"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/Object.mm",
    "chars": 10390,
    "preview": "/*\n * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * This file cont"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/OldClasses.subproj/List.h",
    "chars": 3624,
    "preview": "/*\n * Copyright (c) 1999-2002, 2005-2007 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * Thi"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/OldClasses.subproj/List.m",
    "chars": 6054,
    "preview": "/*\n * Copyright (c) 1999-2001, 2005-2006 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * Thi"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/Protocol.h",
    "chars": 3012,
    "preview": "/*\n * Copyright (c) 1999-2003, 2006-2007 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * Thi"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/Protocol.mm",
    "chars": 3523,
    "preview": "/*\n * Copyright (c) 1999-2001, 2005-2007 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * Thi"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/arm64-asm.h",
    "chars": 3496,
    "preview": "/*\n * @APPLE_LICENSE_HEADER_START@\n * \n * Copyright (c) 2018 Apple Inc.  All Rights Reserved.\n * \n * This file contains "
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/hashtable.h",
    "chars": 30,
    "preview": "#include <objc/hashtable2.h>\n\n"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/hashtable2.h",
    "chars": 12145,
    "preview": "/*\n * Copyright (c) 1999-2006 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * This file cont"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/hashtable2.mm",
    "chars": 21024,
    "preview": "/*\n * Copyright (c) 1999-2008 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * This file cont"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/isa.h",
    "chars": 5294,
    "preview": "/*\n * @APPLE_LICENSE_HEADER_START@\n * \n * Copyright (c) 2018 Apple Inc.  All Rights Reserved.\n * \n * This file contains "
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/llvm-AlignOf.h",
    "chars": 6532,
    "preview": "//===--- AlignOf.h - Portable calculation of type alignment -----*- C++ -*-===//\n//\n//                     The LLVM Comp"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/llvm-DenseMap.h",
    "chars": 34505,
    "preview": "//===- llvm/ADT/DenseMap.h - Dense probed hash table ------------*- C++ -*-===//\n//\n//                     The LLVM Comp"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/llvm-DenseMapInfo.h",
    "chars": 6466,
    "preview": "//===- llvm/ADT/DenseMapInfo.h - Type traits for DenseMap -------*- C++ -*-===//\n//\n//                     The LLVM Comp"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/llvm-MathExtras.h",
    "chars": 15440,
    "preview": "//===-- llvm/Support/MathExtras.h - Useful math functions -------*- C++ -*-===//\n//\n//                     The LLVM Comp"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/llvm-type_traits.h",
    "chars": 8841,
    "preview": "//===- llvm/Support/type_traits.h - Simplfied type traits -------*- C++ -*-===//\n//\n//                     The LLVM Comp"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/maptable.h",
    "chars": 6759,
    "preview": "/*\n * Copyright (c) 1999-2003, 2006-2007 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * Thi"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/maptable.mm",
    "chars": 17996,
    "preview": "/*\n * Copyright (c) 1999-2003, 2005-2007 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * Thi"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/message.h",
    "chars": 12203,
    "preview": "/*\n * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * This file cont"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/objc-abi.h",
    "chars": 15435,
    "preview": "/*\n * Copyright (c) 2009 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * This file contains "
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/objc-accessors.mm",
    "chars": 4950,
    "preview": "/*\n * Copyright (c) 2006-2008 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * This file cont"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/objc-api.h",
    "chars": 8718,
    "preview": "/*\n * Copyright (c) 1999-2006 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * This file cont"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/objc-auto.h",
    "chars": 14076,
    "preview": "/*\n * Copyright (c) 2004-2007 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n * \n * This file contai"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/objc-auto.mm",
    "chars": 4930,
    "preview": "/*\n * Copyright (c) 2004-2007 Apple Inc. All rights reserved.\n *\n * @APPLE_LICENSE_HEADER_START@\n * \n * This file contai"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/objc-block-trampolines.h",
    "chars": 2062,
    "preview": "/*\n * Copyright (c) 2018 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * This file contains "
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/objc-block-trampolines.mm",
    "chars": 19089,
    "preview": "/*\n * Copyright (c) 2010 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * This file contains "
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/objc-blocktramps-arm.s",
    "chars": 5678,
    "preview": "#if __arm__\n\t\n#include <arm/arch.h>\n#include <mach/vm_param.h>\n\n.syntax unified\n\n.text\n.globl __objc_blockTrampolineImpl"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/objc-blocktramps-arm64.s",
    "chars": 2523,
    "preview": "#if __arm64__\n\n#include <mach/vm_param.h>\n#include \"arm64-asm.h\"\n\n// Offset of block->invoke field.\n#if __LP64__\n    // "
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/objc-blocktramps-i386.s",
    "chars": 25622,
    "preview": "/*\n * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * This file cont"
  },
  {
    "path": "InterView-obj-isa-class/objc4-750/runtime/objc-blocktramps-x86_64.s",
    "chars": 25514,
    "preview": "/*\n * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.\n * \n * @APPLE_LICENSE_HEADER_START@\n * \n * This file cont"
  }
]

// ... and 67 more files (download for full content)

About this extraction

This page contains the full source code of the miniLV/Interview-series GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 267 files (3.1 MB), approximately 821.0k tokens, and a symbol index with 1696 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!