久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS之深入解析如何检测“循环引用”

發(fā)布時間:2024/5/28 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS之深入解析如何检测“循环引用” 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、前言

  • Objective-C 使用引用計數(shù)作為 iPhone 應(yīng)用的內(nèi)存管理方案,引用計數(shù)相比 GC 更適用于內(nèi)存不太充裕的場景,只需要收集與對象關(guān)聯(lián)的局部信息來決定是否回收對象,而 GC 為了明確可達(dá)性,需要全局的對象信息。引用計數(shù)固然有其優(yōu)越性,但也正是因為缺乏對全局對象信息的把控,導(dǎo)致 Objective-C 無法自動銷毀陷入循環(huán)引用的對象。雖然 Objective-C 通過引入弱引用技術(shù),讓開發(fā)者可以盡可能地規(guī)避這個問題,但在引用層級過深,引用路徑不那么直觀的情況下,即使是經(jīng)驗豐富的工程師,也無法百分百保證產(chǎn)出的代碼不存在循環(huán)引用。
  • 這時候就需要有一種檢測方案,可以實時檢測對象之間是否發(fā)生了循環(huán)引用,來輔助開發(fā)者及時地修正代碼中存在的內(nèi)存泄漏問題。要想檢測出循環(huán)引用,最直觀的方式是遞歸地獲取對象強(qiáng)引用的其他對象,并判斷檢測對象是否被其路徑上的對象強(qiáng)引用了,也就是在有向圖中去找環(huán)。明確檢測方式之后,接下來需要解決的是如何獲取強(qiáng)引用鏈,也就是獲取對象的強(qiáng)引用,尤其是最容易造成循環(huán)引用的 block。

二、Block 捕獲實體引用

① 捕獲區(qū)域布局

  • 根據(jù) block 的定義結(jié)構(gòu),可以簡單地將其視為:
struct sr_block_layout {void *isa;int flags;int reserved;void (*invoke)(void *, ...);struct sr_block_descriptor *descriptor;/* Imported variables. */ };// 標(biāo)志位不一樣,這個結(jié)構(gòu)的實際布局也會有差別,這里簡單地放在一起好閱讀 struct sr_block_descriptor {unsigned long reserved; // Block_descriptor_1unsigned long size; // Block_descriptor_1void (*)(void *dst, void *src); // Block_descriptor_2 BLOCK_HAS_COPY_DISPOSEvoid (*dispose)(void *); // Block_descriptor_2const char *signature; // Block_descriptor_3 BLOCK_HAS_SIGNATUREconst char *layout; // Block_descriptor_3 contents depend on BLOCK_HAS_EXTENDED_LAYOUT };
  • 可以看到 block 捕獲的變量都會存儲在 sr_block_layout 結(jié)構(gòu)體 descriptor 字段之后的內(nèi)存空間中,通過 clang -rewrite-objc 重寫如下代碼語句:
int i = 2; ^{i; };
  • 可以得到 :
struct __block_impl {void *isa;int Flags;int Reserved;void *FuncPtr; };struct __main_block_impl_0 {struct __block_impl impl;struct __main_block_desc_0* Desc;int i;... };
  • __main_block_impl_0 結(jié)構(gòu)中新增了捕獲的 i 字段,即 sr_block_layout 結(jié)構(gòu)體的 imported variables 部分,這種操作可以看作在 sr_block_layout 尾部定義了一個 0 長數(shù)組,可以根據(jù)實際捕獲變量的大小,給捕獲區(qū)域申請對應(yīng)的內(nèi)存空間,只不過這一操作由編譯器完成:
struct sr_block_layout {void *isa;int flags;int reserved;void (*invoke)(void *, ...);struct sr_block_descriptor *descriptor;char captured[0]; };
  • 既然已經(jīng)知道捕獲變量 i 的存放地址,那么就可以通過 *(int *)layout->captured 在運行時獲取 i 的值,得到捕獲區(qū)域的起始地址之后,再來看捕獲區(qū)域的布局問題,考慮以下代碼塊:
int i = 2; NSObject *o = [NSObject new]; void (^blk)(void) = ^{i;o; };
  • 捕獲區(qū)域的布局分兩部分看:順序和大小,先使用老方法重寫代碼塊:
struct __main_block_impl_0 {struct __block_impl impl; // 24struct __main_block_desc_0* Desc; // 8 指針占用內(nèi)存大小和尋址長度相關(guān),在 64 位機(jī)環(huán)境下,編譯器分配空間大小為 8 字節(jié)int i; // 8NSObject *o; // 8... };
  • 按照目前 clang 針對 64 位機(jī)的默認(rèn)對齊方式(下文的字節(jié)對齊計算都基于此前提條件),可以計算出這個結(jié)構(gòu)體占用的內(nèi)存空間大小為 24 + 8 + 8 + 8 = 48字節(jié),并且按照上方代碼塊先 i 后 o 的捕獲排序方式,如果要訪問捕獲的 o 對象指針變量,只需要在捕獲區(qū)域起始地址上偏移 8 字節(jié)即可,可以借助 lldb 的 memory read (x) 命令查看這部分內(nèi)存空間:
(lldb) po *(NSObject **)(layout->captured + 8) 0x0000000000000002 (lldb) po *(NSObject **)layout->captured <NSObject: 0x10073f290> (lldb) p *(int *)(layout->captured + 8) (int) $6 = 2 (lldb) p (int *)(layout->captured + 8) (int *) $9 = 0x0000000100740d18 (lldb) p layout->descriptor->size (unsigned long) $11 = 44 (lldb) x/44bx layout 0x100740cf0: 0x70 0x21 0x7b 0xa6 0xff 0x7f 0x00 0x00 0x100740cf8: 0x02 0x00 0x00 0xc3 0x00 0x00 0x00 0x00 0x100740d00: 0x40 0x1d 0x00 0x00 0x01 0x00 0x00 0x00 0x100740d08: 0xb0 0x20 0x00 0x00 0x01 0x00 0x00 0x00 0x100740d10: 0x90 0xf2 0x73 0x00 0x01 0x00 0x00 0x00 0x100740d18: 0x02 0x00 0x00 0x00
  • 和使用 clang -rewrite-objc 重寫時的猜想不一樣,可以從以上終端日志中看出以下兩點:
    • 捕獲變量 i、o 在捕獲區(qū)域的排序方式為 o、i,o 變量地址與捕獲起始地址一致,i 變量地址為捕獲起始地址加上 8 字節(jié);
    • 捕獲整形變量 i 在內(nèi)存中實際占用空間大小為 4 字節(jié);
  • 那么 block 到底是怎么對捕獲變量進(jìn)行排序,并且為其分配內(nèi)存空間的呢?這就需要看 clang 是如何處理 block 捕獲的外部變量。

② 捕獲區(qū)域布局分析

  • 首先解決捕獲變量排序的問題,根據(jù) clang 針對這部分的排序代碼,可以知道,在對齊字節(jié)數(shù) (alignment) 不相等時,捕獲的實體按照 alignment 降序排序 (C 結(jié)構(gòu)體比較特殊,即使整體占用空間比指針變量大,也排在對象指針后面),否則按照以下類型進(jìn)行排序:
    • __strong 修飾對象指針變量;
    • __block 修飾對象指針變量;
    • __weak 修飾對象指針變量;
    • 其他變量;
  • 再結(jié)合 clang 對捕獲變量對齊子節(jié)數(shù)計算方式 ,可以知道,block 捕獲區(qū)域變量的對齊結(jié)果趨向于被 attribute ((packed)) 修飾的結(jié)構(gòu)體,舉個例子:
struct foo {void *p; // 8int i; // 4char c; // 4 實際用到的內(nèi)存大小為 1 };
  • 創(chuàng)建 foo 結(jié)構(gòu)體需要分配的空間大小為 8 + 4 + 4 = 16,關(guān)于結(jié)構(gòu)體的內(nèi)存對齊方式,編譯器會按照成員列表的順序一個接一個地給每個成員分配內(nèi)存,只有當(dāng)存儲成員需要滿足正確的邊界對齊要求時,成員之間才可能出現(xiàn)用于填充的額外內(nèi)存空間,以提升計算機(jī)的訪問速度(對齊標(biāo)準(zhǔn)一般和尋址長度一致),在聲明結(jié)構(gòu)體時,讓那些對齊邊界要求最嚴(yán)格的成員最先出現(xiàn),對邊界要求最弱的成員最后出現(xiàn),可以最大限度地減少因邊界對齊而帶來的空間損失。再看以下代碼塊:
struct foo {void *p; // 8int i; // 4char c; // 1 } __attribute__ ((__packed__));
  • attribute ((packed)) 編譯屬性會告訴編譯器,按照字段的實際占用子節(jié)數(shù)進(jìn)行對齊,所以創(chuàng)建 foo 結(jié)構(gòu)體需要分配的空間大小為 8 + 4 + 1 = 13。
  • 結(jié)合以上兩點,可以嘗試分析以下 block 捕獲區(qū)域的變量布局情況:
NSObject *o1 = [NSObject new]; __weak NSObject *o2 = o1; __block NSObject *o3 = o1; unsigned long long j = 4; int i = 3; char c = 'a'; void (^blk)(void) = ^{i;c;o1;o2;o3;j; };
  • 按照 aligment 排序,可以得到排序順序為 [o1 o2 o3] j i c,再根據(jù) __strong、__block、__weak 修飾符對 o1 o2 o3 進(jìn)行排序,可得到最終結(jié)果 o1[8] o3[8] o2[8] j[8] i[4] c[1]。同樣的,我們使用 lldb 的 x 命令驗證分析結(jié)果是否正確:
(lldb) x/69bx layout 0x10200d940: 0x70 0x21 0x7b 0xa6 0xff 0x7f 0x00 0x00 0x10200d948: 0x02 0x00 0x00 0xc3 0x00 0x00 0x00 0x00 0x10200d950: 0xf0 0x1b 0x00 0x00 0x01 0x00 0x00 0x00 0x10200d958: 0xf8 0x20 0x00 0x00 0x01 0x00 0x00 0x00 0x10200d960: 0xa0 0xf6 0x00 0x02 0x01 0x00 0x00 0x00 // o1 0x10200d968: 0x90 0xd9 0x00 0x02 0x01 0x00 0x00 0x00 // o3 0x10200d970: 0xa0 0xf6 0x00 0x02 0x01 0x00 0x00 0x00 // o2 0x10200d978: 0x04 0x00 0x00 0x00 0x00 0x00 0x00 0x00 // j 0x10200d980: 0x03 0x00 0x00 0x00 0x61 // i c (lldb) p o1 (NSObject *) $1 = 0x000000010200f6a0
  • 可以看到,小端模式下,捕獲的 o1 和 o2 指針變量值為 0x10200f6a0,對應(yīng)內(nèi)存地址為 0x10200d960 和 0x10200d970,而 o3 因為被 __block 修飾,編譯器為 o3 捕獲變量包裝了一層 byref 結(jié)構(gòu),所以其值為 byref 結(jié)構(gòu)的地址 0x102000d990,而不是 0x10200f6a0,捕獲的 j 變量地址為 0x10200d978,i 變量地址為 0x10200d980,c 字符變量緊隨其后。

③ Descriptor 的 Layout 信息

  • 經(jīng)過上述的一系列分析,捕獲區(qū)域變量的布局方式已經(jīng)大致清楚,接下來回過頭看下 sr_block_descriptor 結(jié)構(gòu)的 layout 字段是用來干什么的?從字面上理解,這個字段很可能保存了 block 某一部分的內(nèi)存布局信息,比如捕獲區(qū)域的布局信息,依然使用上文的最后一個例子,看看 layout 的值:
(lldb) p layout->descriptor->layout (const char *) $2 = 0x0000000000000111 ""
  • 可以看到 layout 值為空字符串,并沒有展示出任何直觀的布局信息,看來要想知道 layout 是怎么運作的,可以閱讀 block 代碼 和 clang 代碼,繼續(xù)一步步地分析這兩段代碼里面隱藏的信息,這里貼出其中的部分代碼和注釋:
// block // Extended layout encoding.// Values for Block_descriptor_3->layout with BLOCK_HAS_EXTENDED_LAYOUT // and for Block_byref_3->layout with BLOCK_BYREF_LAYOUT_EXTENDED// If the layout field is less than 0x1000, then it is a compact encoding // of the form 0xXYZ: X strong pointers, then Y byref pointers, // then Z weak pointers.// If the layout field is 0x1000 or greater, it points to a // string of layout bytes. Each byte is of the form 0xPN. // Operator P is from the list below. Value N is a parameter for the operator.enum {...BLOCK_LAYOUT_NON_OBJECT_BYTES = 1, // N bytes non-objectsBLOCK_LAYOUT_NON_OBJECT_WORDS = 2, // N words non-objectsBLOCK_LAYOUT_STRONG = 3, // N words strong pointersBLOCK_LAYOUT_BYREF = 4, // N words byref pointersBLOCK_LAYOUT_WEAK = 5, // N words weak pointers... };// clang /// InlineLayoutInstruction - This routine produce an inline instruction for the /// block variable layout if it can. If not, it returns 0. Rules are as follow: /// If ((uintptr_t) layout) < (1 << 12), the layout is inline. In the 64bit world, /// an inline layout of value 0x0000000000000xyz is interpreted as follows: /// x captured object pointers of BLOCK_LAYOUT_STRONG. Followed by /// y captured object of BLOCK_LAYOUT_BYREF. Followed by /// z captured object of BLOCK_LAYOUT_WEAK. If any of the above is missing, zero /// replaces it. For example, 0x00000x00 means x BLOCK_LAYOUT_STRONG and no /// BLOCK_LAYOUT_BYREF and no BLOCK_LAYOUT_WEAK objects are captured.
  • 首先要解釋的是 inline 這個詞,Objective-C 中有一種叫做 Tagged Pointer 的技術(shù),它讓指針保存實際值,而不是保存實際值的地址,這里的 inline 也是相同的效果,即讓 layout 指針保存實際的編碼信息。在 inline 狀態(tài)下,使用十六進(jìn)制中的一位表示捕獲變量的數(shù)量,所以每種類型的變量最多只能有 15 個,此時的 layout 的值以 0xXYZ 形式呈現(xiàn),其中 X、Y、Z 分別表示捕獲 __strong、__block、__weak 修飾指針變量的個數(shù),如果其中某個類型的數(shù)量超過 15 或者捕獲變量的修飾類型不為這三種任何一個時,比如捕獲的變量由 __unsafe_unretained 修飾,則采用另一種編碼方式,這種方式下,layout 會指向一個字符串,這個字符串的每個字節(jié)以 0xPN 的形式呈現(xiàn),并以 0x00 結(jié)束,P 表示變量類型,N 表示變量個數(shù),需要注意的是,N 為 0 表示 P 類型有一個,而不是 0 個,也就是說實際的變量個數(shù)比 N 大 1。
  • 需要注意的是,捕獲 int 等基礎(chǔ)類型,不影響 layout 的呈現(xiàn)方式,layout 編碼中也不會有關(guān)于基礎(chǔ)類型的信息,除非需要基礎(chǔ)類型的編碼來輔助定位對象指針類型的位置,比如捕獲含有對象指針字段的結(jié)構(gòu)體。
  • 如下所示:代碼塊沒有捕獲任何對象指針,所以實際的 descriptor 不包含 copy 和 dispose 字段:
unsigned long long j = 4; int i = 3; char c = 'a'; void (^blk)(void) = ^{i;c;j; };
  • 去除這兩個字段后,再輸出實際的布局信息,結(jié)果為空(0x00 表示結(jié)束),說明捕獲一般基礎(chǔ)類型變量不會計入實際的 layout 編碼:
(lldb) p/x (long)layout->descriptor->layout (long) $0 = 0x0000000100001f67 (lldb) x/8bx layout->descriptor->layout 0x100001f67: 0x00 0x76 0x31 0x36 0x40 0x30 0x3a 0x38
  • 接著嘗試第一種 layout 方式:
NSObject *o1 = [NSObject new]; __block NSObject *o3 = o1; __weak NSObject *o2 = o1; void (^blk)(void) = ^{o1;o2;o3; };
  • 以上代碼塊對應(yīng)的 layout 值為 0x111,表示三種類型變量每種一個:
(lldb) p/x (long)layout->descriptor->layout (long) $0 = 0x0000000000000111
  • 再嘗試第二種 layout 編碼方式:
NSObject *o1 = [NSObject new]; __block NSObject *o3 = o1; __weak NSObject *o2 = o1; NSObject *o4 = o1; ... // 5 - 18 NSObject *o19 = o1; void (^blk)(void) = ^{o1;o2;o3;o4;... // 5 - 18o19; };
  • 以上代碼塊對應(yīng)的 layout 值是一個地址 0x0000000100002f44 ,這個地址為編碼字符串的起始地址,轉(zhuǎn)換成十六進(jìn)制后為 0x3f 0x30 0x40 0x50 0x00,其中 P 為 3 表示 __strong 修飾的變量,數(shù)量為 15(f) + 1 + 0 + 1 = 17 個,P 為 4 表示 __block 修飾的變量,數(shù)量為 0 + 1 = 1 個, P 為 5 表示 __weak 修飾的變量,數(shù)量為 0 + 1 = 1 個:
(lldb) p/x (long)layout->descriptor->layout (long) $0 = 0x0000000100002f44 (lldb) x/8bx layout->descriptor->layout 0x100002f44: 0x3f 0x30 0x40 0x50 0x00 0x76 0x31 0x36

④ 結(jié)構(gòu)體對捕獲布局的影響

  • 由于結(jié)構(gòu)體字段的布局順序在聲明時就已經(jīng)確定,無法像 block 構(gòu)造捕獲區(qū)域一樣,按照變量類型、修飾符進(jìn)行調(diào)整,所以如果結(jié)構(gòu)體中有類型為對象指針的字段,就需要一些額外信息來計算這些對象指針字段的偏移量,需要注意的是,被捕獲結(jié)構(gòu)體的內(nèi)存對齊信息和未捕獲時一致,以尋址長度作為對齊基準(zhǔn),捕獲操作并不會變更對齊信息。
  • 同樣地,先嘗試捕獲只有基本類型字段的結(jié)構(gòu)體:
struct S {char c;int i;long j; } foo; void (^blk)(void) = ^{foo; };
  • 然后調(diào)整 descriptor 結(jié)構(gòu),輸出 layout :
(lldb) x/8bx layout->descriptor->layout 0x100001f67: 0x00 0x76 0x31 0x36 0x40 0x30 0x3a 0x38
  • 可以看到,只有含有基本類型的結(jié)構(gòu)體,同樣不會影響 block 的 layout 編碼信息。給結(jié)構(gòu)體新增 __strong 和 __weak 修飾的對象指針字段:
struct S {char c;int i;__strong NSObject *o1;long j;__weak NSObject *o2; } foo; void (^blk)(void) = ^{foo; };
  • 同樣分析輸出 layout :
(lldb) x/8bx layout->descriptor->layout 0x100002f47: 0x20 0x30 0x20 0x50 0x00 0x76 0x31 0x36
  • layout 編碼為0x20 0x30 0x20 0x50 0x00,其中 P 為 2 表示 word 字類型(非對象),由于字大小一般和指針一致,所以表示占用 8 * (N + 1) 個字節(jié),第一個 0x20 表示非對象指針類型占用了 8 個字節(jié),也就是 char 類型和 int 類型字段對齊之后所占用的空間,接著 0x30 表示有一個 __strong 修飾的對象指針字段,第二個 0x20 表示非對象指針 long 類型占用 8 個字節(jié),最后的 0x50 表示有一個 __weak 修飾的對象指針字段。由于編碼中包含每個字段的排序和大小,就可以通過解析 layout 編碼后的偏移量,拿到想要的對象指針值。 P 還有個 byte 類型,值為 1,和 word 類型有相似的功能,只是表示的空間大小不同。

⑤ Byref 結(jié)構(gòu)的布局

  • 由 __block 修飾的捕獲變量,會先轉(zhuǎn)換成 byref 結(jié)構(gòu),再由這個結(jié)構(gòu)去持有實際的捕獲變量,block 只負(fù)責(zé)管理 byref 結(jié)構(gòu):
// 標(biāo)志位不一樣,這個結(jié)構(gòu)的實際布局也會有差別,簡單地放在一起好閱讀 struct sr_block_byref {void *isa;struct sr_block_byref *forwarding;// contains ref countvolatile int32_t flags; uint32_t size;// requires BLOCK_BYREF_HAS_COPY_DISPOSEvoid (*byref_keep)(struct sr_block_byref *dst, struct sr_block_byref *src);void (*byref_destroy)(struct sr_block_byref *);// requires BLOCK_BYREF_LAYOUT_EXTENDEDconst char *layout; };
  • 以上代碼塊就是 byref 對應(yīng)的結(jié)構(gòu)體,第一眼看上去,比較困惑為什么還要有 layout 字段,雖然 block 源碼注釋說明 byref 和 block 結(jié)構(gòu)一樣,都具備兩種不同的布局編碼方式,但是 byref 不是只針對一個變量嗎,難道和 block 捕獲區(qū)域一樣也可以攜帶多個捕獲變量?帶著這個困惑,先看下以下表達(dá)式 :
__block NSObject *o1 = [NSObject new];
  • 使用 clang 重寫之后:
struct __Block_byref_o1_0 {void *__isa;__Block_byref_o1_0 *__forwarding;int __flags;int __size;void (*__Block_byref_id_object_copy)(void*, void*);void (*__Block_byre/* @autoreleasepool */o{ __AtAutoreleasePool __autoreleasepool; e)(void*);NSObject *o1; };
  • 和 block 捕獲變量一樣,byref 攜帶的變量也是保存在結(jié)構(gòu)體尾部的內(nèi)存空間里,當(dāng)前上下文中,可以直接通過 sr_block_byref 的 layout 字段獲取 o1 對象指針值。可以看到,在包裝如對象指針這類常規(guī)變量時,layout 字段并沒有起到實質(zhì)性的作用,那什么條件下的 layout 才表示布局編碼信息呢?如果使用 layout 字段表示編碼信息,那么攜帶的變量又是何處安放的呢?
  • 針對第一個問題,先看以下代碼塊 :
__block struct S {NSObject *o1; } foo; foo.o1 = [NSObject new]; void (^blk)(void) = ^{foo; };
  • 使用 clang 重寫之后:
struct __Block_byref_foo_0 {void *__isa;__Block_byref_foo_0 *__forwarding;int __flags;int __size;void (*__Block_byref_id_object_copy)(void*, void*);void (*__Block_byref_id_object_dispose)(void*);struct S foo; };
  • 和常規(guī)類型一樣,foo 結(jié)構(gòu)體保存在結(jié)構(gòu)體尾部,也就是原本 layout 所在的字段,重寫的代碼中依然看不到 layout 的蹤影,接著輸出 foo :
(lldb) po foo.o1 <NSObject: 0x10061f130> (lldb) p (struct S)a_byref->layout error: Multiple internal symbols found for 'S' (lldb) p/x (long)a_byref->layout (long) $3 = 0x0000000000000100 (lldb) x/56bx a_byref 0x100627c20: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x100627c28: 0x20 0x7c 0x62 0x00 0x01 0x00 0x00 0x00 0x100627c30: 0x04 0x00 0x00 0x13 0x38 0x00 0x00 0x00 0x100627c38: 0x90 0x1b 0x00 0x00 0x01 0x00 0x00 0x00 0x100627c40: 0x00 0x1c 0x00 0x00 0x01 0x00 0x00 0x00 0x100627c48: 0x00 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x100627c50: 0x30 0xf1 0x61 0x00 0x01 0x00 0x00 0x00
  • 看來事情并沒有看上去的那么簡單,首先重寫代碼中 foo 字段所在內(nèi)存保存的并不是結(jié)構(gòu)體,而是 0x0000000000000100,這個 100 是不是看著有點眼熟?沒錯,這就是 byref 的 layout 信息,根據(jù) 0xXYZ 編碼規(guī)則,這個值表示有 1 個 __strong 修飾的對象指針。
  • 接著針對第二個問題,攜帶的對象指針變量存在哪?往下移動 8 個字節(jié),這不就是 foo.o1 對象指針的值么?總結(jié)下,在存在 layout 的情況下,byref 使用 8 個字節(jié)保存 layout 編碼信息,并緊跟著在 layout 字段后存儲捕獲的變量。
  • 以上是 byref 的第一種 layout 編碼方式,再嘗試第二種:
__block struct S {char c;NSObject *o1;__weak NSObject *o3; } foo; foo.o1 = [NSObject new]; void (^blk)(void) = ^{foo; };
  • 使用 clang 重寫代碼之后 :
struct __Block_byref_foo_0 {void *__isa; __Block_byref_foo_0 *__forwarding;int __flags;int __size;void (*__Block_byref_id_object_copy)(void*, void*/* @autoreleasepool */c{ __AtAutoreleasePool __autoreleasepool; _byref struct __main_block_impl_0 {struct __block_impl impl;struct __main_block_desc_0* Desc;__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;} };
  • 上面代碼并不是粘貼錯誤,貌似 Rewriter 并不能很好地處理這種情況,看來又需要直接去看對應(yīng)內(nèi)存地址中的值:
(lldb) x/72bx a_byref 0x100755140: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x100755148: 0x40 0x51 0x75 0x00 0x01 0x00 0x00 0x00 0x100755150: 0x04 0x00 0x00 0x13 0x48 0x00 0x00 0x00 0x100755158: 0x10 0x1b 0x00 0x00 0x01 0x00 0x00 0x00 0x100755160: 0xa0 0x1b 0x00 0x00 0x01 0x00 0x00 0x00 0x100755168: 0x8d 0x3e 0x00 0x00 0x01 0x00 0x00 0x00 0x100755170: 0x00 0x5f 0x6b 0x65 0x79 0x00 0x00 0x00 0x100755178: 0xd0 0x6e 0x75 0x00 0x01 0x00 0x00 0x00 0x100755180: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 (lldb) x/8bx a_byref->layout 0x100003e8d: 0x20 0x30 0x50 0x00 0x53 0x52 0x4c 0x61
  • 地址 0x100755168 中保存 layout 編碼字符串的地址 0x0000000100003e8d ,將此字符串轉(zhuǎn)換成十六進(jìn)制后為 0x20 0x30 0x50 0x00。

⑥ 強(qiáng)引用對象的獲取

  • 已經(jīng)知道 block / byref 如何布局捕獲區(qū)域內(nèi)存,以及如何獲取關(guān)鍵的布局信息,接下來就可以嘗試獲取 block 強(qiáng)引用的對象,強(qiáng)引用的對象可以分成兩部分:
    • 被 block 強(qiáng)引用;
    • 被 byref 結(jié)構(gòu)強(qiáng)引用。
  • 只要獲取這兩部分強(qiáng)引用的對象就可以了,由于上文已經(jīng)將整個原理脈絡(luò)理清,所以編寫出可用的代碼并不困難。這兩部分都涉及到布局編碼,先根據(jù) layout 的編碼方式,解析出捕獲變量的類型和數(shù)量:
SRCapturedLayoutInfo *info = [SRCapturedLayoutInfo new];if ((uintptr_t)layout < (1 << 12)) {uintptr_t inlineLayout = (uintptr_t)layout;[info addItemWithType:SR_BLOCK_LAYOUT_STRONG count:(inlineLayout & 0xf00) >> 8];[info addItemWithType:SR_BLOCK_LAYOUT_BYREF count:(inlineLayout & 0xf0) >> 4];[info addItemWithType:SR_BLOCK_LAYOUT_WEAK count:inlineLayout & 0xf]; } else {while (layout && *layout != '\x00') {unsigned int type = (*layout & 0xf0) >> 4;unsigned int count = (*layout & 0xf) + 1;[info addItemWithType:type count:count];layout++;} }
  • 然后遍歷 block 的布局編碼信息,根據(jù)變量類型和數(shù)量,計算出對象指針地址偏移,獲取對應(yīng)的對象指針值:
- (NSHashTable *)strongReferencesForBlockLayout:(void *)iLayout {if (!iLayout) return nil;struct sr_block_layout *aLayout = (struct sr_block_layout *)iLayout;const char *extenedLayout = sr_block_extended_layout(aLayout);_blockLayoutInfo = [SRCapturedLayoutInfo infoForLayoutEncode:extenedLayout];NSHashTable *references = [NSHashTable weakObjectsHashTable];uintptr_t *begin = (uintptr_t *)aLayout->captured;for (SRLayoutItem *item in _blockLayoutInfo.layoutItems) {switch (item.type) {case SR_BLOCK_LAYOUT_STRONG: {NSHashTable *objects = [item objectsForBeginAddress:begin];SRAddObjectsFromHashTable(references, objects);begin += item.count;} break;case SR_BLOCK_LAYOUT_BYREF: {for (int i = 0; i < item.count; i++, begin++) {struct sr_block_byref *aByref = *(struct sr_block_byref **)begin;NSHashTable *objects = [self strongReferenceForBlockByref:aByref];SRAddObjectsFromHashTable(references, objects);}} break;case SR_BLOCK_LAYOUT_NON_OBJECT_BYTES: {begin = (uintptr_t *)((uintptr_t)begin + item.count);} break;default: {begin += item.count;} break;}}return references; }
  • block 布局區(qū)域中的 byref 結(jié)構(gòu)需要進(jìn)行額外的處理,如果 byref 直接攜帶 __strong 修飾的變量,則不需要關(guān)心 layout 編碼,直接從結(jié)構(gòu)尾部獲取指針變量值即可,否則需要和處理 block 布局區(qū)域一樣,先得到布局信息,然后遍歷這些布局信息,計算偏移量,獲取強(qiáng)引用對象地址:
- (NSHashTable *)strongReferenceForBlockByref:(void *)iByref {if (!iByref) return nil;struct sr_block_byref *aByref = (struct sr_block_byref *)iByref;NSHashTable *references = [NSHashTable weakObjectsHashTable];int32_t flag = aByref->flags & SR_BLOCK_BYREF_LAYOUT_MASK;switch (flag) {case SR_BLOCK_BYREF_LAYOUT_STRONG: {void **begin = sr_block_byref_captured(aByref);id object = (__bridge id _Nonnull)(*(void **)begin);if (object) [references addObject:object];} break;case SR_BLOCK_BYREF_LAYOUT_EXTENDED: {const char *layout = sr_block_byref_extended_layout(aByref);SRCapturedLayoutInfo *info = [SRCapturedLayoutInfo infoForLayoutEncode:layout];[_blockByrefLayoutInfos addObject:info];uintptr_t *begin = (uintptr_t *)sr_block_byref_captured(aByref) + 1;for (SRLayoutItem *item in info.layoutItems) {switch (item.type) {case SR_BLOCK_LAYOUT_NON_OBJECT_BYTES: {begin = (uintptr_t *)((uintptr_t)begin + item.count);} break;case SR_BLOCK_LAYOUT_STRONG: {NSHashTable *objects = [item objectsForBeginAddress:begin];SRAddObjectsFromHashTable(references, objects);begin += item.count;} break;default: {begin += item.count;} break;}}} break;default: break;}return references; }

⑦ 另一種強(qiáng)引用對象獲取方式

  • 上文通過將 block 的布局編碼信息轉(zhuǎn)化為對應(yīng)字段的偏移量來獲取強(qiáng)引用對象,還有另外一種比較取巧的方式,也是目前檢測循環(huán)引用工具獲取 block 強(qiáng)引用對象的常用方式,比如 facebook 的 FBRetainCycleDetector。
  • 根據(jù) FBRetainCycleDetector 對應(yīng)的源碼,此方式大致原理如下:
    • 獲取 block 的 dispose 函數(shù) (如果捕獲了強(qiáng)引用對象,需要利用這個函數(shù)解引用);
    • 構(gòu)造一個 fake 對象,此對象由若干個擴(kuò)展的 byref 結(jié)構(gòu) (對象) 組成,其個數(shù)由 block size 決定,即把 block 劃分為若干個 8 字節(jié)內(nèi)存區(qū)域,就像以下代碼塊一樣 :
struct S {NSObject *o1;NSObject *o2; }; struct S s = {.o2 = [NSObject new] }; void **fake = (void **)&s; // fake[1] 和 s.o2 是一樣的
    • 擴(kuò)展的 byref 結(jié)構(gòu)會重寫 release 方法,只在此方法中設(shè)置強(qiáng)引用標(biāo)識位,不執(zhí)行原釋放邏輯;
    • 將 fake 對象作為參數(shù),調(diào)用 dispose 函數(shù),dispose 函數(shù)會去 release 每個 block 強(qiáng)引用的對象,這些強(qiáng)引用對象被替換成 byref 結(jié)構(gòu),所以可以通過它的強(qiáng)引用標(biāo)識位判斷 block 的哪塊區(qū)域保存了強(qiáng)引用對象地址;
    • 遍歷 fake 對象,保存所有強(qiáng)引用標(biāo)志位被設(shè)置的 byref 結(jié)構(gòu)對應(yīng)索引,通過這個索引可以去 block 中找強(qiáng)引用指針地址;
    • 釋放所有的 byref 結(jié)構(gòu);
    • 根據(jù)上面得到的索引,獲取捕獲變量偏移量,偏移量為索引值 * 8 字節(jié) (指針大小) ,再根據(jù)偏移量去 block 內(nèi)存塊中拿強(qiáng)引用對象地址。
  • 關(guān)于這種方案,需要明確:
    • 首先這種方案也需要在明確 block 內(nèi)存布局的情況下才能夠?qū)嵤?#xff0c;因為 block ,或者說 block 結(jié)構(gòu)體,實際執(zhí)行內(nèi)存對齊時,并沒有按照尋址大小也就是 8 字節(jié)對齊,假設(shè) block 捕獲區(qū)域的對齊方式變成如下的這樣 :
struct __main_block_impl_0 {struct __block_impl impl; // 24struct __main_block_desc_0* Desc; // 8 指針占用內(nèi)存大小和尋址長度相關(guān),在 64 位機(jī)環(huán)境下,編譯器分配空間大小為 8 字節(jié)int i; // 4 FakedByref 8NSObject *o1; // 8 FakedByref 8 [這里上個 FakedByref 后 4 個子節(jié)和當(dāng)前 FakedByref 前 4 字節(jié)覆蓋 o1 對象指針的 8 字節(jié),導(dǎo)致 miss ]char c; // 1NSObject *o2; // 8 }
    • 那么使用 fake 的方案就會失效,因為這種方案的前提是 block 內(nèi)存對齊基準(zhǔn)基于尋址長度,即指針大小。不過 block 對捕獲的變量按照類型和尺寸進(jìn)行了排序,__strong 修飾的對象指針都在前面,本來只需要這種類型的變量,并不關(guān)心其它類型,所以即使后面的對齊方式不滿足 fake 條件也沒關(guān)系,另外捕獲結(jié)構(gòu)體的對齊基準(zhǔn)是基于尋址長度的,即使結(jié)構(gòu)體有其他類型,也滿足 fake 條件 :
struct __main_block_impl_0 {struct __block_impl impl; // 24struct __main_block_desc_0* Desc; // 8 指針占用內(nèi)存大小和尋址長度相關(guān),在 64 位機(jī)環(huán)境下,編譯器分配空間大小為 8 字節(jié)NSObject *o1; // 8 FakedByref 8NSObject *o2; // 8 FakedByref 8int i; // 4 FakedByref 8char c; // 1 }
    • 可以看到,通過以上代碼塊的排序,讓 o1 和 o2 都被 FakedByref 結(jié)構(gòu)覆蓋,而 i、c 變量本身就不會在 dispose 函數(shù)中訪問,因此怎么設(shè)置都不會影響到策略的生效;
    • 第二點是為什么要用擴(kuò)展的 byref 結(jié)構(gòu),而不是隨便整個重寫 release 的類,這是因為當(dāng) block 捕獲了 __block 修飾的指針變量時,會將這個指針變量包裝成 byref 結(jié)構(gòu),而 dispose 函數(shù)會對這個 byref 結(jié)構(gòu)執(zhí)行 _Block_object_dispose 操作,這個函數(shù)有兩個形參,一個是對象指針,一個是 flag,當(dāng) flag 指明對象指針為 byref 類型,而實際傳入的實參不是,就會出現(xiàn)問題,所以必須用擴(kuò)展的 byref 結(jié)構(gòu);
    • 第三點是這種方式無法處理 __block 修飾對象指針的情況。
  • 不過這種方式貴在簡潔,無需考慮內(nèi)部每種變量類型具體的布局方式,就可以滿足大部分需要獲取 block 強(qiáng)引用對象的場景。

三、對象成員變量強(qiáng)引用

  • 對象強(qiáng)引用成員變量的獲取相對來說直接些,因為每個對象對應(yīng)的類中都有其成員變量的布局信息,并且 runtime 有現(xiàn)成的接口,只需要分析出編碼格式,然后按順序和成員變量匹配即可。獲取編碼信息的接口有兩個, class_getIvarLayout 函數(shù)返回描述 strong ivar 數(shù)量和索引信的編碼信息,相對的 class_getWeakIvarLayout 函數(shù)返回描述 weak ivar 的編碼信息。
  • class_getIvarLayout 返回值是一個 uint8 指針,指向一個字符串,uint8 在 16 進(jìn)制下占用 2 位,所以編碼以 2 位為一組,組內(nèi)首位描述非 strong ivar 個數(shù),次位為 strong ivar 個數(shù),最后一組如果 strong ivar 個數(shù)為 0,則忽略,且 layout 以 0x00 結(jié)尾。
  • 如下所示:
// 0x0100 @interface A : NSObject {__strong NSObject *s1; } @end
  • 起始非 strong ivar 個數(shù)為 0,并且接著一個 strong ivar ,得出編碼為 0x01 。
// 0x0100 @interface A : NSObject {__strong NSObject *s1;__weak NSObject *w1; } @end
  • 起始非 strong ivar 個數(shù)為 0,并且接著一個 strong ivar ,得出編碼為 0x01,接著有個 weak ivar,但是后面沒有 strong ivar,所以忽略。
// 0x011100 @interface A : NSObject {__strong NSObject *s1;__weak NSObject *w1;__strong NSObject *s2; } @end
  • 起始非 strong ivar 個數(shù)為 0,并且接著一個 strong ivar ,得出編碼為 0x01,接著有個 weak ivar,并且后面緊接著一個 strong ivar ,得出編碼 0x11 ,合并得到 0x0111。
// 0x211100 @interface A : NSObject {int i1;void *p1;__strong NSObject *s1;__weak NSObject *w1;__strong NSObject *s2; } @end
  • 起始非 strong ivar 個數(shù)為 2,并且緊接著一個 strong ivar,得出編碼 0x21,接著有個 weak ivar,后面緊接著一個 strong ivar ,得出編碼 0x11 ,合并得到 0x2111。
  • 了解了成員變量的編碼格式,剩下的就是如何解碼并依次和成員變量進(jìn)行匹配, FBRetainCycleDetector 已經(jīng)實現(xiàn)了這部分功能 ,主要原理如下:
    • 獲取所有的成員變量以及 ivar 編碼;
    • 解析 ivar 編碼,跳過非 strong ivar ,獲得 strong ivar 所在索引值 (把對象分成若干個 8 字節(jié)內(nèi)存片段);
    • 利用 ivar_getOffset 函數(shù)獲取 ivar 的偏移量,除以指針大小就是自身的索引值 (對象布局對齊基準(zhǔn)為尋址長度,這里為 8 字節(jié));
    • 匹配 2、3 步獲得的索引值,得到 strong ivar;
    • 實現(xiàn)了對結(jié)構(gòu)體的處理。

四、總結(jié)

  • “Block 捕獲實體引用”和“對象成員變量強(qiáng)引用”是檢測循環(huán)引用兩個比較關(guān)鍵的點,特別是獲取 block 捕獲的強(qiáng)引用對象環(huán)節(jié),block ABI 中并沒有詳細(xì)說明捕獲區(qū)域布局信息,需要自己結(jié)合 block 源碼以及 clang 生成 block 的 CodeGen 邏輯去推測實際的布局信息。

總結(jié)

以上是生活随笔為你收集整理的iOS之深入解析如何检测“循环引用”的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

无码免费一区二区三区 | 国产精品理论片在线观看 | 欧美精品免费观看二区 | 国产手机在线αⅴ片无码观看 | 中文字幕乱码亚洲无线三区 | 人妻夜夜爽天天爽三区 | 亚洲综合精品香蕉久久网 | 99久久婷婷国产综合精品青草免费 | 国产精品久久久久久无码 | 欧美怡红院免费全部视频 | 一本无码人妻在中文字幕免费 | 精品欧美一区二区三区久久久 | 人妻尝试又大又粗久久 | 亚洲精品鲁一鲁一区二区三区 | 欧美激情综合亚洲一二区 | a在线亚洲男人的天堂 | 377p欧洲日本亚洲大胆 | 国产人妻大战黑人第1集 | 国产欧美精品一区二区三区 | 久久亚洲精品成人无码 | 国内少妇偷人精品视频 | 国产三级久久久精品麻豆三级 | 色婷婷综合激情综在线播放 | 国产99久久精品一区二区 | 波多野结衣av在线观看 | 人妻无码αv中文字幕久久琪琪布 | 国产一区二区三区影院 | 99久久无码一区人妻 | 色欲久久久天天天综合网精品 | 两性色午夜视频免费播放 | 麻豆精品国产精华精华液好用吗 | 中文字幕无码av激情不卡 | 久久久久久国产精品无码下载 | 伊人久久大香线蕉亚洲 | 麻豆md0077饥渴少妇 | 国产香蕉尹人综合在线观看 | 久久 国产 尿 小便 嘘嘘 | 玩弄中年熟妇正在播放 | 久久天天躁狠狠躁夜夜免费观看 | 夜夜躁日日躁狠狠久久av | 在线观看国产午夜福利片 | 日本大香伊一区二区三区 | 荫蒂添的好舒服视频囗交 | 亚洲 日韩 欧美 成人 在线观看 | 精品厕所偷拍各类美女tp嘘嘘 | 乱人伦中文视频在线观看 | 国产成人精品无码播放 | 人妻无码αv中文字幕久久琪琪布 | 午夜性刺激在线视频免费 | 久久久精品456亚洲影院 | 亚洲人亚洲人成电影网站色 | 久久精品人人做人人综合试看 | 无码人妻精品一区二区三区不卡 | 少妇久久久久久人妻无码 | 老熟妇乱子伦牲交视频 | 国产suv精品一区二区五 | 网友自拍区视频精品 | 国产又粗又硬又大爽黄老大爷视 | 国产乱人伦偷精品视频 | 日本免费一区二区三区最新 | 久久综合九色综合欧美狠狠 | 久久熟妇人妻午夜寂寞影院 | 综合人妻久久一区二区精品 | 亚洲欧洲日本综合aⅴ在线 | 熟女体下毛毛黑森林 | 国产色视频一区二区三区 | 欧美真人作爱免费视频 | 成人动漫在线观看 | 久久无码中文字幕免费影院蜜桃 | 一本无码人妻在中文字幕免费 | 婷婷六月久久综合丁香 | 久久www免费人成人片 | 97久久精品无码一区二区 | 在线亚洲高清揄拍自拍一品区 | 久久综合九色综合97网 | 国产精品第一区揄拍无码 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 国产偷国产偷精品高清尤物 | 免费无码的av片在线观看 | 性生交大片免费看女人按摩摩 | 国产精品自产拍在线观看 | 久久亚洲日韩精品一区二区三区 | 亚洲经典千人经典日产 | 内射老妇bbwx0c0ck | 全黄性性激高免费视频 | 少妇无码av无码专区在线观看 | 亚洲高清偷拍一区二区三区 | 超碰97人人做人人爱少妇 | 婷婷六月久久综合丁香 | 亚洲色成人中文字幕网站 | 亚洲区欧美区综合区自拍区 | 日日碰狠狠躁久久躁蜜桃 | 色五月五月丁香亚洲综合网 | 亚洲天堂2017无码中文 | 欧美精品无码一区二区三区 | 国产成人av免费观看 | 亚洲欧美精品aaaaaa片 | 无码吃奶揉捏奶头高潮视频 | 女高中生第一次破苞av | 在线成人www免费观看视频 | 欧美 亚洲 国产 另类 | 国产无套粉嫩白浆在线 | 亚洲日本va中文字幕 | 特级做a爰片毛片免费69 | 亚洲欧美日韩综合久久久 | 国产人妻大战黑人第1集 | 国产在线aaa片一区二区99 | 97色伦图片97综合影院 | 九九热爱视频精品 | 无码人妻av免费一区二区三区 | 色老头在线一区二区三区 | 国产精品久久久久久久影院 | 成 人影片 免费观看 | 亚洲区欧美区综合区自拍区 | 亚洲欧美日韩综合久久久 | 久久国产精品精品国产色婷婷 | 亚洲成av人影院在线观看 | 国产尤物精品视频 | 午夜精品一区二区三区的区别 | 精品国精品国产自在久国产87 | 亚洲乱码日产精品bd | 国产高清不卡无码视频 | 国产高清不卡无码视频 | 亚洲а∨天堂久久精品2021 | 亚洲精品午夜国产va久久成人 | 女人色极品影院 | 中文字幕无码人妻少妇免费 | 极品嫩模高潮叫床 | 中文字幕av无码一区二区三区电影 | 日本在线高清不卡免费播放 | 少妇邻居内射在线 | 欧美 日韩 亚洲 在线 | 色婷婷香蕉在线一区二区 | 麻豆蜜桃av蜜臀av色欲av | 精品国产麻豆免费人成网站 | 成在人线av无码免观看麻豆 | 水蜜桃亚洲一二三四在线 | 亚洲男人av香蕉爽爽爽爽 | 成人精品天堂一区二区三区 | 亚洲中文字幕无码中字 | 老子影院午夜精品无码 | 小泽玛莉亚一区二区视频在线 | 亚洲自偷自拍另类第1页 | 色综合视频一区二区三区 | 久久久久成人精品免费播放动漫 | 国产在线aaa片一区二区99 | 97久久超碰中文字幕 | 青青久在线视频免费观看 | 爆乳一区二区三区无码 | 亚洲国产精华液网站w | 亚洲中文字幕无码中字 | 婷婷色婷婷开心五月四房播播 | 精品国产一区二区三区四区在线看 | 中文字幕 亚洲精品 第1页 | 国产高潮视频在线观看 | 久久亚洲中文字幕精品一区 | 亚洲日本在线电影 | 青青青爽视频在线观看 | av人摸人人人澡人人超碰下载 | 国产精品久久久久久亚洲影视内衣 | 亚洲综合另类小说色区 | 2019nv天堂香蕉在线观看 | 国产人妻久久精品二区三区老狼 | 97se亚洲精品一区 | а√资源新版在线天堂 | 国产人妻人伦精品1国产丝袜 | 久久精品一区二区三区四区 | 久久精品人妻少妇一区二区三区 | 久久久久se色偷偷亚洲精品av | 999久久久国产精品消防器材 | 免费观看的无遮挡av | 精品国偷自产在线视频 | 日本丰满护士爆乳xxxx | 国产午夜福利亚洲第一 | 美女极度色诱视频国产 | 性色av无码免费一区二区三区 | 国产av一区二区三区最新精品 | 无套内射视频囯产 | 99精品视频在线观看免费 | 欧美35页视频在线观看 | 免费国产成人高清在线观看网站 | 成人无码视频在线观看网站 | 国产亚洲精品久久久久久大师 | 99在线 | 亚洲 | 国产97人人超碰caoprom | 成 人 网 站国产免费观看 | 亚洲 欧美 激情 小说 另类 | 亚洲色大成网站www国产 | 一本久久伊人热热精品中文字幕 | 亚洲小说春色综合另类 | 性欧美熟妇videofreesex | 人人妻人人藻人人爽欧美一区 | 欧美日本免费一区二区三区 | 久久伊人色av天堂九九小黄鸭 | 少妇一晚三次一区二区三区 | 日韩视频 中文字幕 视频一区 | 黑人巨大精品欧美黑寡妇 | 99麻豆久久久国产精品免费 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国产深夜福利视频在线 | 国产偷国产偷精品高清尤物 | 99国产欧美久久久精品 | 欧美自拍另类欧美综合图片区 | 亚洲色欲色欲欲www在线 | 又粗又大又硬毛片免费看 | 日韩精品久久久肉伦网站 | 欧美35页视频在线观看 | 亚洲欧洲日本综合aⅴ在线 | 人妻互换免费中文字幕 | 久久久久av无码免费网 | 亚洲国精产品一二二线 | 日韩人妻无码一区二区三区久久99 | 午夜丰满少妇性开放视频 | 一本无码人妻在中文字幕免费 | 99久久精品国产一区二区蜜芽 | 日韩少妇白浆无码系列 | 国产成人无码一二三区视频 | 国产真实乱对白精彩久久 | 精品无码成人片一区二区98 | 欧美国产日韩久久mv | 欧美性生交活xxxxxdddd | 日韩视频 中文字幕 视频一区 | 亚洲国产一区二区三区在线观看 | 成人一在线视频日韩国产 | 牲欲强的熟妇农村老妇女视频 | 国产亚洲精品久久久ai换 | 人妻互换免费中文字幕 | 国产情侣作爱视频免费观看 | 漂亮人妻洗澡被公强 日日躁 | 欧洲极品少妇 | 国产精品爱久久久久久久 | 乱人伦中文视频在线观看 | 久久精品一区二区三区四区 | 国产精品久免费的黄网站 | 久久精品一区二区三区四区 | 美女极度色诱视频国产 | 波多野结衣高清一区二区三区 | 国产免费久久精品国产传媒 | 精品一区二区三区无码免费视频 | 国产无遮挡又黄又爽又色 | 日本www一道久久久免费榴莲 | 性色av无码免费一区二区三区 | 内射白嫩少妇超碰 | 99国产精品白浆在线观看免费 | 国产精品99久久精品爆乳 | 精品一区二区三区无码免费视频 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 日韩精品久久久肉伦网站 | 国产网红无码精品视频 | 牛和人交xxxx欧美 | 美女扒开屁股让男人桶 | 小sao货水好多真紧h无码视频 | 色欲人妻aaaaaaa无码 | 国产成人无码区免费内射一片色欲 | 精品久久久无码中文字幕 | 久久婷婷五月综合色国产香蕉 | 国产精品久久久午夜夜伦鲁鲁 | 少妇被黑人到高潮喷出白浆 | 亚洲国产精品久久久天堂 | 东京热男人av天堂 | 亚洲熟妇色xxxxx亚洲 | 色综合久久网 | 波多野结衣乳巨码无在线观看 | 欧美国产日产一区二区 | 亚洲综合色区中文字幕 | 牲欲强的熟妇农村老妇女 | 久久精品人人做人人综合 | 99视频精品全部免费免费观看 | 又紧又大又爽精品一区二区 | 欧美日韩亚洲国产精品 | a片在线免费观看 | 欧美成人家庭影院 | 99视频精品全部免费免费观看 | 精品国偷自产在线视频 | 免费观看的无遮挡av | 色综合天天综合狠狠爱 | 亚洲中文字幕无码中字 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 婷婷丁香五月天综合东京热 | 国产真人无遮挡作爱免费视频 | 日韩成人一区二区三区在线观看 | 亚洲一区二区三区香蕉 | 中文字幕乱码人妻无码久久 | 精品无码一区二区三区的天堂 | 18精品久久久无码午夜福利 | 亚洲一区二区观看播放 | 亚拍精品一区二区三区探花 | 国产九九九九九九九a片 | 奇米影视7777久久精品人人爽 | 午夜成人1000部免费视频 | 中文字幕 亚洲精品 第1页 | 亚洲 高清 成人 动漫 | 丰满少妇女裸体bbw | 精品一区二区不卡无码av | 香港三级日本三级妇三级 | 国产偷国产偷精品高清尤物 | 婷婷色婷婷开心五月四房播播 | 亚洲成av人片天堂网无码】 | 全球成人中文在线 | 国产精品久久久久久亚洲毛片 | 国产精品高潮呻吟av久久4虎 | 99久久久无码国产aaa精品 | 久久亚洲中文字幕无码 | 国产免费久久精品国产传媒 | 国产人妻久久精品二区三区老狼 | 内射爽无广熟女亚洲 | 国产精品无码久久av | 欧美老人巨大xxxx做受 | 色情久久久av熟女人妻网站 | 麻豆精产国品 | 无码人妻精品一区二区三区下载 | 日韩av激情在线观看 | 久精品国产欧美亚洲色aⅴ大片 | 精品国产乱码久久久久乱码 | 亚洲精品午夜无码电影网 | 国精品人妻无码一区二区三区蜜柚 | 婷婷综合久久中文字幕蜜桃三电影 | 色情久久久av熟女人妻网站 | 天天躁夜夜躁狠狠是什么心态 | 日韩欧美中文字幕在线三区 | 亚洲s色大片在线观看 | 欧美日韩一区二区免费视频 | 中文字幕乱码中文乱码51精品 | 久久国内精品自在自线 | 熟女少妇在线视频播放 | 1000部啪啪未满十八勿入下载 | 久久熟妇人妻午夜寂寞影院 | 欧美日韩一区二区三区自拍 | 丰满人妻精品国产99aⅴ | 人妻少妇被猛烈进入中文字幕 | 蜜桃视频插满18在线观看 | 欧美丰满熟妇xxxx | 丰满人妻被黑人猛烈进入 | 亚洲国产精华液网站w | 丰腴饱满的极品熟妇 | 日日干夜夜干 | 人人妻人人藻人人爽欧美一区 | 久久天天躁狠狠躁夜夜免费观看 | 99riav国产精品视频 | 超碰97人人射妻 | 久久午夜夜伦鲁鲁片无码免费 | 性色av无码免费一区二区三区 | 人妻少妇精品视频专区 | 国内精品久久毛片一区二区 | 无套内谢的新婚少妇国语播放 | 色欲久久久天天天综合网精品 | 51国偷自产一区二区三区 | 免费乱码人妻系列无码专区 | 国产av无码专区亚洲awww | 牲欲强的熟妇农村老妇女 | 亚洲精品一区三区三区在线观看 | 熟妇人妻中文av无码 | 国产高清不卡无码视频 | 免费男性肉肉影院 | 午夜精品久久久内射近拍高清 | www一区二区www免费 | 呦交小u女精品视频 | 在线 国产 欧美 亚洲 天堂 | 国产成人一区二区三区在线观看 | 久久综合香蕉国产蜜臀av | 国产精品无套呻吟在线 | 日本精品久久久久中文字幕 | av人摸人人人澡人人超碰下载 | 成人免费无码大片a毛片 | 欧美日韩视频无码一区二区三 | 2020久久超碰国产精品最新 | 又大又黄又粗又爽的免费视频 | 露脸叫床粗话东北少妇 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 久久综合久久自在自线精品自 | 久久精品无码一区二区三区 | 日本精品高清一区二区 | 熟妇人妻激情偷爽文 | 国产精品久免费的黄网站 | 日本免费一区二区三区最新 | 日韩亚洲欧美中文高清在线 | 国产一区二区不卡老阿姨 | 在线观看免费人成视频 | 国产精品美女久久久网av | 国内少妇偷人精品视频免费 | 久久伊人色av天堂九九小黄鸭 | 国产高清不卡无码视频 | 亚洲第一无码av无码专区 | 一个人看的视频www在线 | 青草青草久热国产精品 | 狂野欧美性猛xxxx乱大交 | 亚洲国产精品一区二区第一页 | 久久人人爽人人爽人人片ⅴ | 99久久精品国产一区二区蜜芽 | 国产尤物精品视频 | 国产猛烈高潮尖叫视频免费 | 中文字幕av无码一区二区三区电影 | 国产香蕉97碰碰久久人人 | 亚洲区小说区激情区图片区 | 波多野结衣av一区二区全免费观看 | 亚洲啪av永久无码精品放毛片 | 久久无码人妻影院 | 精品国产一区二区三区av 性色 | 无码免费一区二区三区 | 久久无码人妻影院 | 天堂а√在线地址中文在线 | 国产成人无码一二三区视频 | 国产成人综合色在线观看网站 | 色 综合 欧美 亚洲 国产 | 欧美日韩精品 | 国产超碰人人爽人人做人人添 | 国产熟女一区二区三区四区五区 | 久久99热只有频精品8 | 日本一卡2卡3卡四卡精品网站 | 在线a亚洲视频播放在线观看 | 白嫩日本少妇做爰 | 无码人妻久久一区二区三区不卡 | 免费无码午夜福利片69 | 亚洲 日韩 欧美 成人 在线观看 | 亚洲伊人久久精品影院 | 精品久久久中文字幕人妻 | 人妻少妇精品无码专区动漫 | 1000部啪啪未满十八勿入下载 | 国产精品va在线观看无码 | 中文字幕无码av激情不卡 | 欧美国产日产一区二区 | 日日橹狠狠爱欧美视频 | 久久久久国色av免费观看性色 | 欧美日本精品一区二区三区 | 欧美阿v高清资源不卡在线播放 | 亚洲国产精品一区二区美利坚 | 久久 国产 尿 小便 嘘嘘 | 夜夜高潮次次欢爽av女 | 伊在人天堂亚洲香蕉精品区 | 一个人看的视频www在线 | 奇米影视888欧美在线观看 | 99国产精品白浆在线观看免费 | 精品一区二区不卡无码av | 中文字幕中文有码在线 | 成人片黄网站色大片免费观看 | 1000部夫妻午夜免费 | 激情五月综合色婷婷一区二区 | 久久久精品成人免费观看 | 日本护士毛茸茸高潮 | 暴力强奷在线播放无码 | 2019nv天堂香蕉在线观看 | 熟女少妇人妻中文字幕 | 人妻人人添人妻人人爱 | 欧美国产日韩亚洲中文 | 好爽又高潮了毛片免费下载 | 久久综合狠狠综合久久综合88 | 国产超级va在线观看视频 | 扒开双腿吃奶呻吟做受视频 | 性色欲网站人妻丰满中文久久不卡 | 国产高清不卡无码视频 | 天堂亚洲免费视频 | 亚洲精品综合五月久久小说 | www国产精品内射老师 | 久久天天躁狠狠躁夜夜免费观看 | 极品尤物被啪到呻吟喷水 | 欧美性色19p | 久久99精品国产.久久久久 | 久久人人爽人人人人片 | 牲欲强的熟妇农村老妇女 | 精品无码一区二区三区爱欲 | 粗大的内捧猛烈进出视频 | 亚洲乱亚洲乱妇50p | 亚洲中文字幕久久无码 | 在线观看国产一区二区三区 | 初尝人妻少妇中文字幕 | 鲁大师影院在线观看 | 精品久久久无码中文字幕 | 色偷偷人人澡人人爽人人模 | 欧美色就是色 | 一本久久a久久精品vr综合 | 国产偷自视频区视频 | 亚洲人成网站色7799 | 无套内谢的新婚少妇国语播放 | 日韩av无码一区二区三区 | 国产免费久久精品国产传媒 | 天堂无码人妻精品一区二区三区 | 国产精品美女久久久 | 在线播放免费人成毛片乱码 | 青青青爽视频在线观看 | 色欲综合久久中文字幕网 | 领导边摸边吃奶边做爽在线观看 | 国产乱人偷精品人妻a片 | 思思久久99热只有频精品66 | 男人扒开女人内裤强吻桶进去 | 国产精品亚洲一区二区三区喷水 | 午夜精品久久久久久久久 | 色欲久久久天天天综合网精品 | 中文久久乱码一区二区 | 国产免费观看黄av片 | 中文字幕人妻丝袜二区 | 无码人妻精品一区二区三区不卡 | 精品国产一区av天美传媒 | 国产精品怡红院永久免费 | 日韩 欧美 动漫 国产 制服 | a片在线免费观看 | 欧美xxxxx精品 | 国产精品无套呻吟在线 | 成人性做爰aaa片免费看 | 亚洲狠狠婷婷综合久久 | 亚洲精品成人福利网站 | 西西人体www44rt大胆高清 | 中文字幕 亚洲精品 第1页 | 一本无码人妻在中文字幕免费 | 国产午夜精品一区二区三区嫩草 | 国产午夜福利100集发布 | 欧美日本日韩 | 亚洲中文字幕va福利 | 亚洲综合无码一区二区三区 | 欧美日韩久久久精品a片 | 精品久久久中文字幕人妻 | 天天做天天爱天天爽综合网 | 男女作爱免费网站 | 99久久精品日本一区二区免费 | 无遮无挡爽爽免费视频 | 亚洲精品一区二区三区大桥未久 | 亚洲男女内射在线播放 | 久久精品国产大片免费观看 | 日韩成人一区二区三区在线观看 | 蜜臀av无码人妻精品 | 99久久久国产精品无码免费 | 丰满人妻一区二区三区免费视频 | 亚洲精品成a人在线观看 | 77777熟女视频在线观看 а天堂中文在线官网 | 久久精品视频在线看15 | 国产色xx群视频射精 | 国产亚洲视频中文字幕97精品 | 亚洲精品鲁一鲁一区二区三区 | 亚洲国产欧美国产综合一区 | 色综合天天综合狠狠爱 | 国产人妻精品午夜福利免费 | 中文字幕无线码 | 最近中文2019字幕第二页 | 大肉大捧一进一出好爽视频 | 高清无码午夜福利视频 | 乱码午夜-极国产极内射 | 99久久久无码国产精品免费 | 国产午夜精品一区二区三区嫩草 | 亚洲国产成人a精品不卡在线 | 久久久久久av无码免费看大片 | 人妻少妇被猛烈进入中文字幕 | 久久精品人人做人人综合 | 久久国语露脸国产精品电影 | 久久久中文久久久无码 | 亚洲国产精品成人久久蜜臀 | 国产成人精品久久亚洲高清不卡 | 小sao货水好多真紧h无码视频 | 98国产精品综合一区二区三区 | 色综合久久久无码中文字幕 | 精品一区二区三区波多野结衣 | 黑森林福利视频导航 | 丝袜 中出 制服 人妻 美腿 | 精品国精品国产自在久国产87 | 日韩精品a片一区二区三区妖精 | 日日碰狠狠躁久久躁蜜桃 | 亚洲国产精品一区二区美利坚 | 欧美日韩精品 | 人妻夜夜爽天天爽三区 | 久久精品女人天堂av免费观看 | 无码人妻av免费一区二区三区 | 精品久久久久久人妻无码中文字幕 | 欧美性生交活xxxxxdddd | 亚洲精品午夜国产va久久成人 | 久久99热只有频精品8 | 日日碰狠狠躁久久躁蜜桃 | 欧美 亚洲 国产 另类 | 欧美熟妇另类久久久久久多毛 | 国产尤物精品视频 | 亚洲熟妇自偷自拍另类 | 午夜理论片yy44880影院 | 久久久亚洲欧洲日产国码αv | 亚洲国产精品毛片av不卡在线 | 一二三四社区在线中文视频 | 97无码免费人妻超级碰碰夜夜 | 亚洲娇小与黑人巨大交 | 日日噜噜噜噜夜夜爽亚洲精品 | 2020久久香蕉国产线看观看 | 特黄特色大片免费播放器图片 | 婷婷五月综合激情中文字幕 | 曰韩无码二三区中文字幕 | 中文字幕无码视频专区 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 亚洲s码欧洲m码国产av | 国产成人无码av一区二区 | 亚洲精品www久久久 | 亚洲精品久久久久久久久久久 | 欧美国产日产一区二区 | 亚洲爆乳精品无码一区二区三区 | 少妇性l交大片欧洲热妇乱xxx | 野狼第一精品社区 | 日韩av无码一区二区三区不卡 | 精品国产一区二区三区四区在线看 | 久久久久免费看成人影片 | 狠狠亚洲超碰狼人久久 | 在线播放免费人成毛片乱码 | 一二三四在线观看免费视频 | 国内精品久久毛片一区二区 | 久久国内精品自在自线 | 在线а√天堂中文官网 | 麻豆成人精品国产免费 | a国产一区二区免费入口 | 女人被男人爽到呻吟的视频 | 黑人玩弄人妻中文在线 | 国产熟妇另类久久久久 | 成人影院yy111111在线观看 | 人人澡人人妻人人爽人人蜜桃 | 67194成是人免费无码 | 国产偷自视频区视频 | 一本色道久久综合狠狠躁 | 日本一区二区三区免费高清 | 日本熟妇乱子伦xxxx | 国产成人精品视频ⅴa片软件竹菊 | 性欧美牲交在线视频 | 免费看少妇作爱视频 | 少妇人妻大乳在线视频 | 日韩精品a片一区二区三区妖精 | 成人动漫在线观看 | 熟妇人妻无乱码中文字幕 | 久久国语露脸国产精品电影 | 国产一区二区三区日韩精品 | 国产九九九九九九九a片 | 国产精品欧美成人 | 国产成人无码区免费内射一片色欲 | 88国产精品欧美一区二区三区 | 日韩少妇白浆无码系列 | 色欲综合久久中文字幕网 | 亚洲国产精品久久久天堂 | 国产精品亚洲综合色区韩国 | 人人澡人人妻人人爽人人蜜桃 | 丝袜足控一区二区三区 | 亚洲日韩乱码中文无码蜜桃臀网站 | 免费看男女做好爽好硬视频 | 国产成人无码a区在线观看视频app | 久久精品国产亚洲精品 | 97无码免费人妻超级碰碰夜夜 | 国内少妇偷人精品视频免费 | 真人与拘做受免费视频 | 色偷偷人人澡人人爽人人模 | 学生妹亚洲一区二区 | 国产真实伦对白全集 | 麻花豆传媒剧国产免费mv在线 | 精品国产麻豆免费人成网站 | 精品无人区无码乱码毛片国产 | 欧洲美熟女乱又伦 | 亚洲色大成网站www国产 | 最新国产乱人伦偷精品免费网站 | 无码一区二区三区在线观看 | 久久99精品久久久久婷婷 | 色综合久久久无码网中文 | 精品日本一区二区三区在线观看 | 狠狠色噜噜狠狠狠狠7777米奇 | 免费观看激色视频网站 | 中文字幕人妻无码一区二区三区 | 丰满少妇高潮惨叫视频 | 亚洲爆乳大丰满无码专区 | 欧美性猛交xxxx富婆 | 日本高清一区免费中文视频 | 无套内谢的新婚少妇国语播放 | 内射巨臀欧美在线视频 | 国产成人精品视频ⅴa片软件竹菊 | 久久久www成人免费毛片 | 久久人妻内射无码一区三区 | 99久久无码一区人妻 | 色欲综合久久中文字幕网 | 国产在线一区二区三区四区五区 | 四虎国产精品一区二区 | 亚洲七七久久桃花影院 | 亚洲а∨天堂久久精品2021 | 九九久久精品国产免费看小说 | 国产精品久久久久久无码 | 亚洲精品一区三区三区在线观看 | 久久99久久99精品中文字幕 | 日韩无码专区 | 日本大乳高潮视频在线观看 | 亚洲综合色区中文字幕 | 日本乱偷人妻中文字幕 | 99久久精品国产一区二区蜜芽 | 亚洲精品中文字幕 | 人妻插b视频一区二区三区 | 图片区 小说区 区 亚洲五月 | 99riav国产精品视频 | 又粗又大又硬又长又爽 | 日本熟妇大屁股人妻 | 国产麻豆精品精东影业av网站 | 国产女主播喷水视频在线观看 | 亚洲乱码国产乱码精品精 | 亚洲中文字幕在线无码一区二区 | 国产亚洲人成在线播放 | 欧美国产亚洲日韩在线二区 | 性色av无码免费一区二区三区 | 久久国产精品_国产精品 | 东京热男人av天堂 | 国产精品高潮呻吟av久久 | 午夜熟女插插xx免费视频 | 又粗又大又硬又长又爽 | 国产亚洲精品久久久久久国模美 | 装睡被陌生人摸出水好爽 | 亚洲国产日韩a在线播放 | 亚洲人成人无码网www国产 | 在线成人www免费观看视频 | 露脸叫床粗话东北少妇 | 日日天日日夜日日摸 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 色妞www精品免费视频 | 日韩精品a片一区二区三区妖精 | 又紧又大又爽精品一区二区 | 欧美freesex黑人又粗又大 | 六月丁香婷婷色狠狠久久 | 特级做a爰片毛片免费69 | 俺去俺来也在线www色官网 | 波多野结衣av一区二区全免费观看 | 3d动漫精品啪啪一区二区中 | 亚洲热妇无码av在线播放 | 在线看片无码永久免费视频 | 最近中文2019字幕第二页 | 亚洲小说春色综合另类 | 亚洲成av人影院在线观看 | 国语自产偷拍精品视频偷 | 波多野结衣 黑人 | 色诱久久久久综合网ywww | 国产明星裸体无码xxxx视频 | 久久99精品久久久久久动态图 | 樱花草在线社区www | 国产97在线 | 亚洲 | 精品人人妻人人澡人人爽人人 | 国产精品人人爽人人做我的可爱 | 国产精品人人爽人人做我的可爱 | 国产亚洲精品久久久久久大师 | 亚洲国产av精品一区二区蜜芽 | 国产人妖乱国产精品人妖 | 亚洲综合精品香蕉久久网 | 亚洲热妇无码av在线播放 | 无套内谢的新婚少妇国语播放 | 又色又爽又黄的美女裸体网站 | 亚洲精品成人福利网站 | 国产suv精品一区二区五 | 丝袜人妻一区二区三区 | 夜夜躁日日躁狠狠久久av | 嫩b人妻精品一区二区三区 | 狂野欧美性猛交免费视频 | 中文字幕无码av波多野吉衣 | 丝袜 中出 制服 人妻 美腿 | 日本丰满护士爆乳xxxx | 日产精品高潮呻吟av久久 | 狂野欧美性猛xxxx乱大交 | 日韩在线不卡免费视频一区 | 欧美国产亚洲日韩在线二区 | 性生交大片免费看l | 国产午夜视频在线观看 | 一区二区三区乱码在线 | 欧洲 | 人人妻人人澡人人爽人人精品 | 在线亚洲高清揄拍自拍一品区 | 免费观看激色视频网站 | 久久久久亚洲精品中文字幕 | 在线播放免费人成毛片乱码 | 久久久久99精品国产片 | 少妇人妻偷人精品无码视频 | 巨爆乳无码视频在线观看 | 亚洲精品一区二区三区婷婷月 | 捆绑白丝粉色jk震动捧喷白浆 | 无码一区二区三区在线 | 中文字幕无线码 | 人人妻在人人 | 玩弄少妇高潮ⅹxxxyw | 在线视频网站www色 | 麻豆成人精品国产免费 | 高潮喷水的毛片 | 性欧美大战久久久久久久 | 欧美亚洲国产一区二区三区 | 国产绳艺sm调教室论坛 | 人妻与老人中文字幕 | 欧美兽交xxxx×视频 | 国产精品对白交换视频 | 亚洲日本一区二区三区在线 | 99久久精品日本一区二区免费 | 日韩精品无码一本二本三本色 | 中文字幕无线码免费人妻 | 色狠狠av一区二区三区 | 欧美老人巨大xxxx做受 | 7777奇米四色成人眼影 | 亚洲毛片av日韩av无码 | 中文字幕日产无线码一区 | 日本护士毛茸茸高潮 | 亚洲自偷自拍另类第1页 | 老熟妇乱子伦牲交视频 | 中文字幕av无码一区二区三区电影 | 欧美猛少妇色xxxxx | 3d动漫精品啪啪一区二区中 | 玩弄人妻少妇500系列视频 | 精品成在人线av无码免费看 | 日本在线高清不卡免费播放 | av人摸人人人澡人人超碰下载 | 波多野结衣乳巨码无在线观看 | 天天燥日日燥 | 我要看www免费看插插视频 | 天天拍夜夜添久久精品 | 激情爆乳一区二区三区 | 鲁鲁鲁爽爽爽在线视频观看 | 2020最新国产自产精品 | 男女性色大片免费网站 | 亚洲欧美中文字幕5发布 | 国产精品igao视频网 | 欧美性生交xxxxx久久久 | 久久精品丝袜高跟鞋 | 色噜噜亚洲男人的天堂 | 日韩亚洲欧美中文高清在线 | 亚洲精品无码人妻无码 | 中文字幕精品av一区二区五区 | 中文字幕色婷婷在线视频 | 国产成人精品视频ⅴa片软件竹菊 | 欧美xxxx黑人又粗又长 | 亚洲成色在线综合网站 | 亚洲自偷自偷在线制服 | 成人免费视频视频在线观看 免费 | 婷婷五月综合激情中文字幕 | 成人精品天堂一区二区三区 | 国语自产偷拍精品视频偷 | 国产精品99久久精品爆乳 | 亚洲成色www久久网站 | 成人一在线视频日韩国产 | 天干天干啦夜天干天2017 | 国产农村妇女高潮大叫 | 麻豆国产丝袜白领秘书在线观看 | 国产精品毛多多水多 | 久久国产精品萌白酱免费 | 正在播放东北夫妻内射 | 人妻少妇精品无码专区动漫 | 国产人妻精品一区二区三区 | 久久久www成人免费毛片 | 亚洲va欧美va天堂v国产综合 | 精品国偷自产在线视频 | 成人无码精品1区2区3区免费看 | 大屁股大乳丰满人妻 | 亚洲成a人片在线观看日本 | 男人的天堂2018无码 | 欧美熟妇另类久久久久久不卡 | 四虎影视成人永久免费观看视频 | 丰满少妇熟乱xxxxx视频 | 伊人久久大香线焦av综合影院 | 精品久久综合1区2区3区激情 | 婷婷丁香五月天综合东京热 | 天干天干啦夜天干天2017 | 丝袜人妻一区二区三区 | 无码人妻少妇伦在线电影 | 精品一区二区三区无码免费视频 | 日本www一道久久久免费榴莲 | 色偷偷人人澡人人爽人人模 | 无码国产乱人伦偷精品视频 | 婷婷五月综合缴情在线视频 | 暴力强奷在线播放无码 | 荫蒂被男人添的好舒服爽免费视频 | 国产在线精品一区二区高清不卡 | 亚洲精品久久久久久久久久久 | 国语自产偷拍精品视频偷 | 国产人妻大战黑人第1集 | 欧美三级不卡在线观看 | 女人和拘做爰正片视频 | 欧美成人免费全部网站 | 人人妻人人澡人人爽欧美精品 | 午夜丰满少妇性开放视频 | 天天摸天天碰天天添 | 国产一区二区三区日韩精品 | 粉嫩少妇内射浓精videos | 日本va欧美va欧美va精品 | 成人动漫在线观看 | 无码精品人妻一区二区三区av | 久久精品女人天堂av免费观看 | 欧美性猛交xxxx富婆 | 奇米影视7777久久精品人人爽 | 成人三级无码视频在线观看 | 亚洲码国产精品高潮在线 | 国产免费无码一区二区视频 | 久久婷婷五月综合色国产香蕉 | 国产精品鲁鲁鲁 | 久久久久99精品成人片 | 少妇厨房愉情理9仑片视频 | 久久久久免费看成人影片 | 日韩精品乱码av一区二区 | 国产在线aaa片一区二区99 | 亚洲精品国产精品乱码不卡 | 亚洲精品国产第一综合99久久 | 老熟女乱子伦 | 18无码粉嫩小泬无套在线观看 | 中文字幕无码视频专区 | 亚洲a无码综合a国产av中文 | 天天躁夜夜躁狠狠是什么心态 | 精品国产麻豆免费人成网站 | 色一情一乱一伦一区二区三欧美 | 国产欧美亚洲精品a | 国产精品对白交换视频 | √天堂资源地址中文在线 | 中文字幕 人妻熟女 | 久久综合给合久久狠狠狠97色 | 中文字幕av无码一区二区三区电影 | 鲁大师影院在线观看 | 精品偷自拍另类在线观看 | 波多野42部无码喷潮在线 | 亚洲 欧美 激情 小说 另类 | 国产人妻精品一区二区三区 | 久久人妻内射无码一区三区 | 国产综合在线观看 | 男女下面进入的视频免费午夜 | 国产超碰人人爽人人做人人添 | 久久精品国产99精品亚洲 | 国产九九九九九九九a片 | 国产欧美精品一区二区三区 | 久久精品丝袜高跟鞋 | 亚洲色欲色欲欲www在线 | 熟女少妇人妻中文字幕 | 国产舌乚八伦偷品w中 | 激情亚洲一区国产精品 | 午夜不卡av免费 一本久久a久久精品vr综合 | 少妇性l交大片 | 无码国模国产在线观看 | 亚洲色欲久久久综合网东京热 | 18黄暴禁片在线观看 | 欧美自拍另类欧美综合图片区 | 福利一区二区三区视频在线观看 | 亚洲综合无码久久精品综合 | 精品国产一区二区三区四区 | 久久aⅴ免费观看 | 日韩精品无码一本二本三本色 | 久久久久免费精品国产 | 极品尤物被啪到呻吟喷水 | 日韩精品成人一区二区三区 | 欧美精品免费观看二区 | 女人被爽到呻吟gif动态图视看 | 亚洲成av人片天堂网无码】 | 亚洲国产精品成人久久蜜臀 | 成人一在线视频日韩国产 | 天下第一社区视频www日本 | 午夜理论片yy44880影院 | 一区二区三区乱码在线 | 欧洲 | 四虎国产精品免费久久 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 国产精品无码久久av | 精品亚洲成av人在线观看 | 未满成年国产在线观看 | 熟女俱乐部五十路六十路av | 曰本女人与公拘交酡免费视频 | 任你躁在线精品免费 | a在线观看免费网站大全 | 精品人妻中文字幕有码在线 | 中文字幕无码热在线视频 | 日日摸日日碰夜夜爽av | 婷婷五月综合激情中文字幕 | 精品国精品国产自在久国产87 | 午夜无码人妻av大片色欲 | 成人性做爰aaa片免费看 | 久久99精品国产.久久久久 | 粗大的内捧猛烈进出视频 | 国产精品亚洲五月天高清 | 99麻豆久久久国产精品免费 | 一二三四在线观看免费视频 | 人人妻在人人 | 午夜福利一区二区三区在线观看 | 一本色道久久综合亚洲精品不卡 | 国产无套内射久久久国产 | 亚洲精品国产a久久久久久 | 国内综合精品午夜久久资源 | 女人被男人爽到呻吟的视频 | 国产精品a成v人在线播放 | 亚洲男女内射在线播放 | 激情综合激情五月俺也去 | 爆乳一区二区三区无码 | 国产精品久久久av久久久 | 亚洲热妇无码av在线播放 | 亚洲综合无码久久精品综合 | 精品人人妻人人澡人人爽人人 | 三级4级全黄60分钟 | 国产精品久久久午夜夜伦鲁鲁 | 欧美日韩一区二区三区自拍 | 亚洲经典千人经典日产 | 在线天堂新版最新版在线8 | 领导边摸边吃奶边做爽在线观看 | 99久久婷婷国产综合精品青草免费 | 日韩欧美中文字幕公布 | 99久久久国产精品无码免费 | 国内少妇偷人精品视频 | 天天爽夜夜爽夜夜爽 | 色综合天天综合狠狠爱 | 四十如虎的丰满熟妇啪啪 | 色 综合 欧美 亚洲 国产 | 欧美日本免费一区二区三区 | 国产超级va在线观看视频 | 熟妇人妻无码xxx视频 | 久久久精品国产sm最大网站 | 久久99精品久久久久久动态图 | 色综合久久中文娱乐网 | 成人免费无码大片a毛片 | 亚洲精品久久久久久一区二区 | 国产人妻人伦精品1国产丝袜 | 亚洲熟妇色xxxxx欧美老妇 | 色综合久久久无码中文字幕 | 精品人妻人人做人人爽 | 美女扒开屁股让男人桶 | 国产97人人超碰caoprom | 久久久av男人的天堂 | 国产精品亚洲综合色区韩国 | 色一情一乱一伦一视频免费看 | 两性色午夜免费视频 | 久久综合香蕉国产蜜臀av | 欧美日韩一区二区三区自拍 | 亚洲色大成网站www国产 | 国产亚洲tv在线观看 | 久久国产劲爆∧v内射 | 久久精品一区二区三区四区 | 香港三级日本三级妇三级 | 六月丁香婷婷色狠狠久久 | 无码国产激情在线观看 | 色综合久久中文娱乐网 | 无码帝国www无码专区色综合 | 国产精品a成v人在线播放 | 欧美xxxx黑人又粗又长 | 国产xxx69麻豆国语对白 | 精品亚洲韩国一区二区三区 | 无码人妻出轨黑人中文字幕 | 亚洲七七久久桃花影院 | 国产精品亚洲综合色区韩国 | 色五月五月丁香亚洲综合网 | 国产激情一区二区三区 | 图片小说视频一区二区 | 丰满人妻翻云覆雨呻吟视频 | 图片小说视频一区二区 | 人人爽人人澡人人人妻 | 1000部夫妻午夜免费 | 无码av岛国片在线播放 | 久久99热只有频精品8 | 成人无码精品一区二区三区 | 强伦人妻一区二区三区视频18 | 国产特级毛片aaaaaa高潮流水 | 亚洲中文字幕va福利 | 爆乳一区二区三区无码 | 一二三四在线观看免费视频 | 日日碰狠狠躁久久躁蜜桃 | 亚洲天堂2017无码中文 | 成人片黄网站色大片免费观看 | 六十路熟妇乱子伦 | 中文久久乱码一区二区 | 欧美精品国产综合久久 | 中文字幕人成乱码熟女app | 天天爽夜夜爽夜夜爽 | 久久久久久av无码免费看大片 | 亚洲伊人久久精品影院 | 老熟妇乱子伦牲交视频 | 久久综合久久自在自线精品自 | 久久久www成人免费毛片 | 亚洲一区二区观看播放 | 熟妇女人妻丰满少妇中文字幕 | 国产精品无码永久免费888 | 亚洲爆乳精品无码一区二区三区 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲成a人片在线观看日本 | 激情内射亚州一区二区三区爱妻 | 超碰97人人射妻 | 中文字幕乱妇无码av在线 | 日日麻批免费40分钟无码 | 日本大香伊一区二区三区 | 未满成年国产在线观看 | 亚洲中文字幕成人无码 | 亚洲国产欧美日韩精品一区二区三区 | 亚洲国产欧美日韩精品一区二区三区 | 欧美野外疯狂做受xxxx高潮 | 欧美熟妇另类久久久久久不卡 | 波多野结衣 黑人 | 沈阳熟女露脸对白视频 | 午夜无码区在线观看 | 免费观看激色视频网站 | 99麻豆久久久国产精品免费 | 色综合久久88色综合天天 | 中文字幕无线码免费人妻 | 国产特级毛片aaaaaa高潮流水 | 丰满少妇人妻久久久久久 | 人人超人人超碰超国产 | 中文无码成人免费视频在线观看 | 一本精品99久久精品77 | 中文字幕av日韩精品一区二区 | 天堂а√在线中文在线 | 精品一区二区三区波多野结衣 | 一本久道高清无码视频 | 午夜男女很黄的视频 | 国产女主播喷水视频在线观看 | 中文字幕av伊人av无码av | 夫妻免费无码v看片 | 国产凸凹视频一区二区 | 国产乱人伦av在线无码 | 人人妻人人澡人人爽欧美一区 | 精品熟女少妇av免费观看 | 日本丰满熟妇videos | 7777奇米四色成人眼影 | 久久国产精品精品国产色婷婷 | 国精产品一区二区三区 | 国产成人一区二区三区别 | 99re在线播放 | 色五月丁香五月综合五月 | 亚洲自偷自拍另类第1页 | 欧美丰满老熟妇xxxxx性 | 又大又黄又粗又爽的免费视频 | 欧美三级不卡在线观看 | 天天燥日日燥 | 色欲综合久久中文字幕网 | 无码中文字幕色专区 | 国产亚洲人成a在线v网站 | 国产人妻精品一区二区三区 | 色爱情人网站 | 欧美人与禽猛交狂配 | 在线 国产 欧美 亚洲 天堂 | 131美女爱做视频 | 国产成人无码av一区二区 | 日本又色又爽又黄的a片18禁 | 六月丁香婷婷色狠狠久久 | 亚洲熟悉妇女xxx妇女av | 亚洲欧美国产精品专区久久 | 国产熟女一区二区三区四区五区 | 妺妺窝人体色www在线小说 | 久久精品成人欧美大片 | 99er热精品视频 | 玩弄人妻少妇500系列视频 | 日韩av激情在线观看 | 露脸叫床粗话东北少妇 | 狠狠综合久久久久综合网 | 国产成人精品三级麻豆 | 成人欧美一区二区三区黑人 | 夜夜夜高潮夜夜爽夜夜爰爰 | 荫蒂添的好舒服视频囗交 | 乱人伦人妻中文字幕无码久久网 | 狠狠色噜噜狠狠狠7777奇米 | 欧洲美熟女乱又伦 | 免费无码av一区二区 | yw尤物av无码国产在线观看 | 国产午夜精品一区二区三区嫩草 | 四虎国产精品一区二区 | 国产乱码精品一品二品 | 乱人伦人妻中文字幕无码 | 精品国产青草久久久久福利 | 亚洲欧美综合区丁香五月小说 | 九九热爱视频精品 | 欧美老人巨大xxxx做受 | 人妻尝试又大又粗久久 | 国产热a欧美热a在线视频 | 一本精品99久久精品77 | 在线播放无码字幕亚洲 | 精品 日韩 国产 欧美 视频 | 国产成人精品优优av | 性做久久久久久久免费看 | 日本一卡二卡不卡视频查询 | 精品国产aⅴ无码一区二区 | 国产av一区二区精品久久凹凸 | 无码纯肉视频在线观看 | 国产在线精品一区二区高清不卡 | 无套内谢老熟女 | 国产激情无码一区二区 | 久久久久成人精品免费播放动漫 | 国产精品美女久久久 | 131美女爱做视频 | 中文精品无码中文字幕无码专区 | 俄罗斯老熟妇色xxxx | 日日麻批免费40分钟无码 | 欧美日韩一区二区三区自拍 | 性生交大片免费看女人按摩摩 | 永久免费观看国产裸体美女 | 久久熟妇人妻午夜寂寞影院 | 九九综合va免费看 | 亚洲爆乳大丰满无码专区 | 2019nv天堂香蕉在线观看 | 久久久久se色偷偷亚洲精品av | 欧美阿v高清资源不卡在线播放 | 国产婷婷色一区二区三区在线 | 波多野结衣高清一区二区三区 | 99久久精品无码一区二区毛片 | 自拍偷自拍亚洲精品10p | 野狼第一精品社区 | 国产精品久久久av久久久 | 国产亚洲精品久久久久久国模美 | 欧美xxxx黑人又粗又长 | 欧洲熟妇色 欧美 | 亚洲 日韩 欧美 成人 在线观看 | 日本xxxx色视频在线观看免费 | 亚洲综合无码一区二区三区 | 亚洲午夜久久久影院 | 无码人妻丰满熟妇区五十路百度 | 沈阳熟女露脸对白视频 | 欧美丰满少妇xxxx性 | 精品一区二区三区无码免费视频 | 极品尤物被啪到呻吟喷水 | 国产亚洲日韩欧美另类第八页 | 亚洲精品一区二区三区大桥未久 | 国内揄拍国内精品人妻 | 亚洲 另类 在线 欧美 制服 | 强伦人妻一区二区三区视频18 | 亚洲精品美女久久久久久久 | www国产亚洲精品久久网站 | 精品国产一区二区三区四区在线看 | 在线播放亚洲第一字幕 | 999久久久国产精品消防器材 | 国内精品九九久久久精品 | 无套内谢的新婚少妇国语播放 | 又色又爽又黄的美女裸体网站 | 国产另类ts人妖一区二区 | 国产福利视频一区二区 | 无遮挡国产高潮视频免费观看 | 国产凸凹视频一区二区 | 国产精品爱久久久久久久 | 性色欲网站人妻丰满中文久久不卡 | 久久久久久亚洲精品a片成人 | 久久精品人人做人人综合试看 | 亚洲一区二区三区偷拍女厕 | 国产精品va在线观看无码 | 亚洲精品中文字幕乱码 | 国产无遮挡又黄又爽免费视频 | 荫蒂被男人添的好舒服爽免费视频 | 好男人www社区 | 麻豆精品国产精华精华液好用吗 | 精品无码一区二区三区爱欲 | 性欧美videos高清精品 | 男人扒开女人内裤强吻桶进去 | 无码人妻少妇伦在线电影 | 亚洲色欲色欲天天天www | 精品国产成人一区二区三区 | 欧美精品无码一区二区三区 | 任你躁国产自任一区二区三区 | 沈阳熟女露脸对白视频 | 永久免费观看国产裸体美女 | 精品国产青草久久久久福利 | 精品日本一区二区三区在线观看 | 蜜桃无码一区二区三区 | 亚洲国产日韩a在线播放 | 亚洲精品久久久久久久久久久 | 久久无码中文字幕免费影院蜜桃 | 国色天香社区在线视频 | 人人妻在人人 | 成在人线av无码免观看麻豆 | 中文字幕无码日韩欧毛 | 男人的天堂av网站 | 亚洲成熟女人毛毛耸耸多 | 婷婷六月久久综合丁香 | 捆绑白丝粉色jk震动捧喷白浆 | 亚洲gv猛男gv无码男同 | 色综合久久中文娱乐网 | 国产人妻人伦精品 | 日韩精品久久久肉伦网站 | 一个人免费观看的www视频 | 好屌草这里只有精品 | 国产精品.xx视频.xxtv | 久久久久99精品国产片 | 狠狠色丁香久久婷婷综合五月 | 精品乱码久久久久久久 | 97se亚洲精品一区 | 自拍偷自拍亚洲精品被多人伦好爽 | 色综合久久久无码中文字幕 | 亚洲精品午夜国产va久久成人 | 97精品国产97久久久久久免费 | 高清无码午夜福利视频 | 亚洲の无码国产の无码影院 | 亚洲综合无码一区二区三区 | 亚洲一区二区三区香蕉 | 天天躁夜夜躁狠狠是什么心态 | 无码av最新清无码专区吞精 | 日韩精品一区二区av在线 | 狠狠躁日日躁夜夜躁2020 | 人人妻人人澡人人爽人人精品 | 亚洲色成人中文字幕网站 | 国产熟女一区二区三区四区五区 | 人妻少妇精品无码专区二区 | 男人扒开女人内裤强吻桶进去 | 蜜桃av抽搐高潮一区二区 | 欧美人与禽zoz0性伦交 | 国产国产精品人在线视 | 成人免费无码大片a毛片 | 免费观看激色视频网站 | 国产综合色产在线精品 | 狠狠色丁香久久婷婷综合五月 | 久久精品无码一区二区三区 | 撕开奶罩揉吮奶头视频 | 欧美 日韩 人妻 高清 中文 | 久久99精品久久久久久动态图 | 俺去俺来也www色官网 | 丰满人妻精品国产99aⅴ | 四虎4hu永久免费 | 少妇无码av无码专区在线观看 | 麻豆国产人妻欲求不满 | 国产超级va在线观看视频 | 日韩人妻系列无码专区 | 999久久久国产精品消防器材 | 亚洲精品一区二区三区四区五区 | av小次郎收藏 | 亚洲中文字幕在线无码一区二区 | 中文字幕无码热在线视频 | 国产亚洲精品久久久久久久 | 国产特级毛片aaaaaaa高清 | 久久精品女人天堂av免费观看 | 久久久成人毛片无码 | 色窝窝无码一区二区三区色欲 | 国产福利视频一区二区 | 人人澡人摸人人添 | 精品久久综合1区2区3区激情 | 久热国产vs视频在线观看 | 少妇性荡欲午夜性开放视频剧场 | 色情久久久av熟女人妻网站 | 久久人人爽人人爽人人片ⅴ | 国产精品内射视频免费 | 日韩av无码中文无码电影 | 亚洲 欧美 激情 小说 另类 | 久久精品女人天堂av免费观看 | 思思久久99热只有频精品66 | 欧洲极品少妇 | 性做久久久久久久久 | 欧美丰满熟妇xxxx | 大地资源中文第3页 | 久久久久国色av免费观看性色 | 亚无码乱人伦一区二区 | 蜜桃视频插满18在线观看 | 日韩av无码中文无码电影 | 亚无码乱人伦一区二区 | av无码久久久久不卡免费网站 | 欧美日韩视频无码一区二区三 | 精品熟女少妇av免费观看 | 伊人久久婷婷五月综合97色 | 欧美国产亚洲日韩在线二区 | 国产舌乚八伦偷品w中 | 亚洲一区二区三区国产精华液 | 人妻少妇精品无码专区二区 | 少妇厨房愉情理9仑片视频 | 亚洲日韩乱码中文无码蜜桃臀网站 | 精品无码成人片一区二区98 | 国产人妻大战黑人第1集 | 一区二区三区乱码在线 | 欧洲 | 免费观看的无遮挡av | 国产午夜亚洲精品不卡下载 | 国产精品久久久av久久久 | 一二三四社区在线中文视频 | 国产特级毛片aaaaaa高潮流水 | 成人欧美一区二区三区黑人免费 | 亚洲国产精品成人久久蜜臀 | 精品aⅴ一区二区三区 | 亚洲综合在线一区二区三区 | 高清国产亚洲精品自在久久 | 欧美 亚洲 国产 另类 | 亚洲国产成人av在线观看 | 波多野结衣av一区二区全免费观看 | 青草视频在线播放 | 男女爱爱好爽视频免费看 | 成人性做爰aaa片免费看不忠 | 人人妻人人澡人人爽欧美一区九九 | 麻豆精产国品 | 国产麻豆精品精东影业av网站 | 欧美黑人乱大交 | 又大又紧又粉嫩18p少妇 | 欧美老妇与禽交 | 欧洲vodafone精品性 | 内射老妇bbwx0c0ck | 纯爱无遮挡h肉动漫在线播放 | 一区二区三区高清视频一 | 亚洲s色大片在线观看 | 黑人巨大精品欧美黑寡妇 | 精品国偷自产在线视频 | 少妇高潮喷潮久久久影院 | аⅴ资源天堂资源库在线 | 啦啦啦www在线观看免费视频 | 女人被男人躁得好爽免费视频 | 亚洲熟悉妇女xxx妇女av | 亚洲综合精品香蕉久久网 | 我要看www免费看插插视频 | 99视频精品全部免费免费观看 | 亚洲一区二区观看播放 | 性生交大片免费看女人按摩摩 | 九月婷婷人人澡人人添人人爽 | 精品偷拍一区二区三区在线看 | 无码人妻黑人中文字幕 | 激情内射日本一区二区三区 | 午夜肉伦伦影院 | 人人澡人摸人人添 | 精品人妻人人做人人爽 | a在线亚洲男人的天堂 | 300部国产真实乱 | 国产成人久久精品流白浆 | 国产性生交xxxxx无码 | 欧美乱妇无乱码大黄a片 | 亚洲小说春色综合另类 | 荡女精品导航 | 男女超爽视频免费播放 | 亚洲精品鲁一鲁一区二区三区 | 亚洲一区二区三区在线观看网站 | 中文字幕乱妇无码av在线 | 色一情一乱一伦一视频免费看 | 99久久人妻精品免费一区 | 国产激情一区二区三区 | 色诱久久久久综合网ywww | 精品人人妻人人澡人人爽人人 | 国语精品一区二区三区 | 久久久精品国产sm最大网站 | 色情久久久av熟女人妻网站 | 亚洲va欧美va天堂v国产综合 | 久久综合九色综合97网 | 成人一在线视频日韩国产 | 国产一区二区三区日韩精品 | 亚洲色在线无码国产精品不卡 | 在线天堂新版最新版在线8 | 欧美日本精品一区二区三区 | 无码国模国产在线观看 | 久久久av男人的天堂 | 久久国产精品_国产精品 | 老熟女重囗味hdxx69 | 亚洲精品国产品国语在线观看 | 中文字幕无线码免费人妻 | 日欧一片内射va在线影院 | 亚洲男女内射在线播放 | av在线亚洲欧洲日产一区二区 | 国产av无码专区亚洲awww | 在线观看国产午夜福利片 | 老子影院午夜精品无码 | 色综合久久中文娱乐网 | 国产九九九九九九九a片 | 国产性生交xxxxx无码 | 一本精品99久久精品77 | 丰满诱人的人妻3 | 无码人妻黑人中文字幕 | 国内丰满熟女出轨videos | 强奷人妻日本中文字幕 | 免费人成在线视频无码 | 99久久99久久免费精品蜜桃 | √天堂中文官网8在线 | 亚洲精品一区三区三区在线观看 | 精品国产av色一区二区深夜久久 | 亚洲爆乳大丰满无码专区 | 国产成人一区二区三区在线观看 | 未满小14洗澡无码视频网站 | 美女毛片一区二区三区四区 | 国产综合久久久久鬼色 | 亚洲七七久久桃花影院 | 精品无码国产自产拍在线观看蜜 | 人妻少妇精品无码专区动漫 | 国产午夜精品一区二区三区嫩草 | 久激情内射婷内射蜜桃人妖 | 精品久久综合1区2区3区激情 | 精品无人国产偷自产在线 | 最近中文2019字幕第二页 | 欧美成人高清在线播放 | 国产成人一区二区三区别 | 俄罗斯老熟妇色xxxx | 午夜丰满少妇性开放视频 | 亚洲欧美日韩成人高清在线一区 | 无码播放一区二区三区 | 国产疯狂伦交大片 | 亚洲一区二区三区在线观看网站 | aⅴ在线视频男人的天堂 | 综合激情五月综合激情五月激情1 | 无码国内精品人妻少妇 | 荫蒂添的好舒服视频囗交 | 在线观看免费人成视频 | 久久99精品久久久久久动态图 | 国产特级毛片aaaaaa高潮流水 | 自拍偷自拍亚洲精品被多人伦好爽 | 99riav国产精品视频 | 精品人妻中文字幕有码在线 | 精品无码av一区二区三区 | 日本欧美一区二区三区乱码 | 综合人妻久久一区二区精品 | 日本精品人妻无码77777 天堂一区人妻无码 | 免费男性肉肉影院 | 国内精品一区二区三区不卡 | 女人被爽到呻吟gif动态图视看 | 亚洲一区av无码专区在线观看 | 国产两女互慰高潮视频在线观看 | v一区无码内射国产 | 青青久在线视频免费观看 | 色 综合 欧美 亚洲 国产 | 中文字幕乱码人妻二区三区 | 国内精品久久毛片一区二区 | 日韩欧美中文字幕在线三区 | 国产99久久精品一区二区 | 啦啦啦www在线观看免费视频 | 麻豆果冻传媒2021精品传媒一区下载 | 国产又爽又猛又粗的视频a片 | 狠狠色丁香久久婷婷综合五月 | 人人澡人摸人人添 | 乱人伦人妻中文字幕无码 | 亚洲国产欧美日韩精品一区二区三区 | 欧美国产亚洲日韩在线二区 | 亚洲精品久久久久avwww潮水 | 久久综合给久久狠狠97色 | 亚洲日韩精品欧美一区二区 | 国精产品一品二品国精品69xx | 久久久久久久女国产乱让韩 | 久久久精品人妻久久影视 | 日韩av激情在线观看 | av人摸人人人澡人人超碰下载 | 国产无遮挡又黄又爽免费视频 | 久久伊人色av天堂九九小黄鸭 | 激情人妻另类人妻伦 | 国产精品久久久av久久久 | 我要看www免费看插插视频 | 国产尤物精品视频 | 精品国产福利一区二区 | 中文字幕 人妻熟女 | 亚洲精品中文字幕 | 免费网站看v片在线18禁无码 | 内射爽无广熟女亚洲 | 日本熟妇大屁股人妻 | 成在人线av无码免观看麻豆 | 成人精品天堂一区二区三区 | 欧美日韩视频无码一区二区三 | 日本精品少妇一区二区三区 | 老熟妇仑乱视频一区二区 | 国内揄拍国内精品少妇国语 | 中国女人内谢69xxxxxa片 | 野外少妇愉情中文字幕 | 精品无码国产自产拍在线观看蜜 | 动漫av一区二区在线观看 | 国产手机在线αⅴ片无码观看 | 久久久久se色偷偷亚洲精品av | 久久久久成人精品免费播放动漫 | 2019nv天堂香蕉在线观看 | 亚洲欧洲日本无在线码 | 精品久久久久久人妻无码中文字幕 | 亚洲国产综合无码一区 | 日日摸日日碰夜夜爽av | 四虎国产精品免费久久 | 精品国产麻豆免费人成网站 | 中国女人内谢69xxxxxa片 | 中文字幕 人妻熟女 | 伊人久久大香线蕉亚洲 | 日本一区二区三区免费高清 | 内射巨臀欧美在线视频 | 狠狠色色综合网站 | 国产乱人伦偷精品视频 | 久久 国产 尿 小便 嘘嘘 | 日韩少妇白浆无码系列 | 兔费看少妇性l交大片免费 | 无码任你躁久久久久久久 | 精品久久综合1区2区3区激情 | 久久久久人妻一区精品色欧美 | 亚洲综合另类小说色区 | 一个人免费观看的www视频 | 国产免费观看黄av片 | 欧美大屁股xxxxhd黑色 | 丰满人妻精品国产99aⅴ | 丰满少妇熟乱xxxxx视频 | 国产热a欧美热a在线视频 | √天堂中文官网8在线 | 小泽玛莉亚一区二区视频在线 | 欧美精品无码一区二区三区 | 欧美人妻一区二区三区 | 国产精品毛片一区二区 | √8天堂资源地址中文在线 | 国产午夜无码视频在线观看 | 国产一区二区三区精品视频 | 99re在线播放 | 又粗又大又硬又长又爽 | 国产亚洲精品久久久ai换 | 成人无码影片精品久久久 | 中文久久乱码一区二区 | 国产精品第一区揄拍无码 | 国产精品高潮呻吟av久久4虎 | 精品国产乱码久久久久乱码 | 日本熟妇人妻xxxxx人hd | 欧美性生交xxxxx久久久 | 蜜桃视频韩日免费播放 | 无码免费一区二区三区 | 中文字幕无码热在线视频 | 色一情一乱一伦一区二区三欧美 | 国产内射爽爽大片视频社区在线 | 丝袜 中出 制服 人妻 美腿 | 日韩av无码中文无码电影 | 国产精品久久福利网站 | 久久久国产精品无码免费专区 | 性色av无码免费一区二区三区 | 成人无码视频免费播放 | 国产一区二区三区四区五区加勒比 | 国产高清不卡无码视频 | 国産精品久久久久久久 | 日本护士毛茸茸高潮 | 日本一区二区三区免费播放 | 性色av无码免费一区二区三区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 丝袜美腿亚洲一区二区 | 亚洲狠狠婷婷综合久久 | 成熟女人特级毛片www免费 | 久久亚洲日韩精品一区二区三区 | 久久精品成人欧美大片 | 好男人www社区 | 三级4级全黄60分钟 | 色爱情人网站 | 成人免费视频在线观看 | 荫蒂被男人添的好舒服爽免费视频 | 久久精品女人天堂av免费观看 | 日本精品人妻无码77777 天堂一区人妻无码 | 夜夜夜高潮夜夜爽夜夜爰爰 | 精品国精品国产自在久国产87 | 久久无码专区国产精品s | 国产乱子伦视频在线播放 | 亚洲 a v无 码免 费 成 人 a v | 性开放的女人aaa片 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 人妻熟女一区 | 乱人伦人妻中文字幕无码久久网 | 熟女体下毛毛黑森林 | 精品熟女少妇av免费观看 | 国产美女精品一区二区三区 | 亚洲中文字幕av在天堂 | 亚洲中文字幕在线无码一区二区 | 狠狠色噜噜狠狠狠7777奇米 | 久久精品国产一区二区三区肥胖 | 欧美变态另类xxxx | 网友自拍区视频精品 | 乱人伦人妻中文字幕无码 | 欧美性色19p | 狠狠综合久久久久综合网 | 2020久久超碰国产精品最新 | 强伦人妻一区二区三区视频18 | 国产黄在线观看免费观看不卡 | 国产亚洲视频中文字幕97精品 | 内射爽无广熟女亚洲 | 美女毛片一区二区三区四区 | 99久久精品无码一区二区毛片 | 99精品国产综合久久久久五月天 | 久久久久久国产精品无码下载 | 2020最新国产自产精品 | 中文无码成人免费视频在线观看 | 欧美日韩一区二区三区自拍 | 天堂亚洲免费视频 | 亚洲精品午夜无码电影网 | 亚洲欧美国产精品久久 | 亚洲成熟女人毛毛耸耸多 | 久久久久久久人妻无码中文字幕爆 | 欧美丰满熟妇xxxx性ppx人交 | 国产成人午夜福利在线播放 | 色噜噜亚洲男人的天堂 | 激情五月综合色婷婷一区二区 | 亚洲色大成网站www国产 | 两性色午夜免费视频 | 一本色道婷婷久久欧美 | 国产香蕉尹人综合在线观看 | 性啪啪chinese东北女人 | 中文字幕无线码免费人妻 | 久久精品成人欧美大片 | 欧美老妇交乱视频在线观看 | 亚洲日本va午夜在线电影 | 国产亚洲欧美日韩亚洲中文色 | 成 人 网 站国产免费观看 | 欧美人与牲动交xxxx | 又大又硬又爽免费视频 | 久久综合九色综合欧美狠狠 | yw尤物av无码国产在线观看 | 对白脏话肉麻粗话av | 在线a亚洲视频播放在线观看 | 欧美人与动性行为视频 | www一区二区www免费 | v一区无码内射国产 | 色婷婷综合激情综在线播放 | 欧美人与动性行为视频 | 亚洲va中文字幕无码久久不卡 | 香港三级日本三级妇三级 | 精品无码国产一区二区三区av | 狠狠综合久久久久综合网 | 欧美丰满老熟妇xxxxx性 | 国产午夜亚洲精品不卡 | 性开放的女人aaa片 | 久久99精品久久久久久 | 国产成人无码a区在线观看视频app | aa片在线观看视频在线播放 | 成人动漫在线观看 | 亚洲日韩乱码中文无码蜜桃臀网站 | 丰满人妻精品国产99aⅴ | 亚洲日本在线电影 | 色婷婷av一区二区三区之红樱桃 | 在线观看免费人成视频 | 中文字幕乱码亚洲无线三区 | 无套内射视频囯产 | av无码久久久久不卡免费网站 | 性做久久久久久久免费看 | 国产网红无码精品视频 | 曰韩无码二三区中文字幕 | 扒开双腿吃奶呻吟做受视频 | 性欧美videos高清精品 | 国产亚洲精品久久久久久国模美 | 午夜性刺激在线视频免费 |