日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

编写你的第一个垃圾收集器

發布時間:2024/9/30 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编写你的第一个垃圾收集器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

每當我倍感壓力以及有很多事情要做的時候,我總是有這樣一種反常的反應,那就是希望做一些其他的事情來擺脫這種狀況。通常情況下,這些事情都是些我能夠編寫并實現的獨立的小程序。

一天早上,我幾乎要被一堆事情給整瘋了——我得看一本書、處理一些工作上的事情、還要準備一場Strange Loop的演講,然后這時我突然想到:“我該寫一個垃圾收集器了”。

是的,我知道那一刻讓我看上去有多瘋狂。不過我的神經故障卻是你實現一段基礎的程序語言設計的免費教程!在100行左右毫無新意的c代碼中,我設法實現一個基本的標記和掃描模塊。

垃圾收集被認為是有更多編程牛人出沒的水域之一,但在這里,我會給你一個漂亮的兒童游泳池去玩耍。可能這里面仍然會有一些能手,但至少這會是一個淺水區。

?

精簡、復用、再復用

垃圾收集背后有這樣一個基本的觀念:編程語言(大多數的)似乎總能訪問無限的內存。而開發者可以一直分配、分配再分配——像魔法一樣,取之不盡用之不竭。

當然,我們從來都沒有無限的內存。所以計算機實現收集的方式就是當機器需要分配一些內存,而內存又不足時,讓它收集垃圾

“垃圾(Garbage)”在這里表示那些事先分配過但后來不再被使用的內存。而基于對無限內存的幻想,我們需要確保“不再被使用”對于編程語言來說是非常安全的。要知道在你的程序試圖訪問一些隨機的對象時它們卻剛好正在得到回收,這可不是一件好玩的事情。

為了實現收集,編程語言需要確保程序不再使用那個對象。如果該程序不能得到一個對象的引用,那么顯然它也不會再去使用它。所以關于”in use”的定義事實上非常簡單:

  • 任何被一個變量引用的對象,仍然在作用域內,就屬于”in use”狀態。
  • 任何被另一個對象引用的對象,仍在使用中,就是”in use”狀態。
  • 如果對象A被一個變量引用,而它又有一些地方引用了對象B,那么B就是在使用中(“in use”),因為你能夠通過A來訪問到它。

    這樣到最后的結果就是得到一張可訪問的對象圖——以一個變量為起點并能夠遍歷到的所有對象。任何不在圖中的對象對于程序來說都是死的,而它的內存也是時候被回收了。

    ?

    標記并清理

    有很多不同的方法可以實現關于查找和回收所有未被使用的對象的操作,但是最簡單也是第一個被提出的算法就是”標記-清除”算法。它由John McCarthy——Lisp(列表處理語言)的發明者提出,所以你現在做的事情就像是與一個古老的神在交流,但希望你別用一些洛夫克拉夫特式的方法——最后以你的大腦和視網膜的完全枯萎而結束。

    該算法的工作原理幾乎與我們對”可訪問性(reachability)”的定義完全一樣:

  • 從根節點開始,依次遍歷整個對象圖。每當你訪問到一個對象,在上面設置一個”標記(mark)”位,置為true。
  • 一旦搞定,找出所有標記位為”not”的對象集,然后刪除它們。
  • 對,就是這樣。我猜你可能已經想到了,對吧?如果是,那你可能就成為了一位被引用了數百次的文章的作者。所以這件事情的教訓就是,想要在CS(計算機科學)領域中出名,你不必開始就搞出一個很牛的東西,你只需要第一個整出來即可,哪怕這玩意看上去很搓。

    ?

    對象對

    在我們落實這兩個步驟之前,讓我們先做些不相關的準備工作。我們不會為一種語言真正實現一個解釋器——沒有分析器,字節碼、或任何這種愚蠢的東西。但我們確實需要一些少量的代碼來創建一些垃圾去收集。

    讓我們假裝我們正在為一種簡單的語言編寫一個解釋器。它是動態類型,并且有兩種類型的變量:int 和 pair。 下面是用枚舉來標示一個對象的類型:

    1 2 3 4 typedef enum { ??OBJ_INT, ??OBJ_PAIR } ObjectType;

    其中,pair可以是任何一對東西,兩個int、一個int和另一個pair,什么都可以。隨你怎么想都行。因為一個對象在虛擬機中可以是這兩個當中的任意一種類型,所以在c中實現對象的典型方法是時用一個標記聯合體(tagged union)。

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 typedefstructsObject { ??ObjectType type; ??union{ ????/* OBJ_INT */ ????intvalue; ????/* OBJ_PAIR */ ????struct{ ??????structsObject* head; ??????structsObject* tail; ????}; ??}; } Object;

    這個Object結構擁有一個type字段表示它是哪種類型的值——要么是int要么是pair。接下來用一個union來持有這個int或是pair的數據。如果你對c語言很生疏,一個union就是一個結構體,它將字段重疊在內存中。由于一個給定的對象只能是int或是pair,我們沒有任何理在一個單獨的對象中同時為所有這3個字段分配內存。一個union就搞定。帥吧。

    ?

    小虛擬機

    現在我們可以將其包裝在一個小的虛擬機結構中了。它(指虛擬機)在這里的角色是用一個棧來存儲在當前作用域內的變量。大多數語言虛擬機要么是基于棧(如JVM和CLR)的,要么是基于寄存器(如Lua)的。但是不管哪種情況,實際上仍然存在這樣一個棧。它用來存放在一個表達式中間需要用到的臨時變量和局部變量。

    我們來簡潔明了地建立這個模型,如下:

    1 2 3 4 5 6 #define STACK_MAX 256 typedefstruct{ ??Object* stack[STACK_MAX]; ??intstackSize; } VM;

    現在我們得到了一個合適的基本數據結構,接下來我們一起敲些代碼來創建些東西。首先,我們來寫一個方法創建并初始化一個虛擬機:

    1 2 3 4 5 VM* newVM() { ??VM* vm = malloc(sizeof(VM)); ??vm->stackSize = 0; ??returnvm; }

    一旦我們得到了虛擬機,我們需要能夠操作它的堆棧:

    1 2 3 4 5 6 7 8 9 voidpush(VM* vm, Object* value) { ??assert(vm->stackSize < STACK_MAX, "Stack overflow!"); ??vm->stack[vm->stackSize++] = value; } Object* pop(VM* vm) { ??assert(vm->stackSize > 0, "Stack underflow!"); ??returnvm->stack[--vm->stackSize]; }

    好了,現在我們能敲些玩意到”變量”中了,我們需要能夠實際的創建對象。首先來一些輔助函數:

    1 2 3 4 5 Object* newObject(VM* vm, ObjectType type) { ??Object* object = malloc(sizeof(Object)); ??object->type = type; ??returnobject; }

    它實現了內存的分配和設置類型標記。我們一會兒會重溫它的。利用它,我們可以編寫方法將每種類型的對象壓到虛擬機的棧上:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 voidpushInt(VM* vm, intintValue) { ??Object* object = newObject(vm, OBJ_INT); ??object->value = intValue; ??push(vm, object); } Object* pushPair(VM* vm) { ??Object* object = newObject(vm, OBJ_PAIR); ??object->tail = pop(vm); ??object->head = pop(vm); ??push(vm, object); ??returnobject; }

    這就是我們的小小虛擬機。如果我們有調用這些方法的解析器和解釋器,那我們手上就有了一種對上帝都誠實的語言。而且,如果我們有無限的內存,它甚至能夠運行真正的程序。可惜咱們沒有,所以讓我們來收集些垃圾吧。

    ?

    標記

    第一個階段就是標記(marking)。我們需要掃遍所有可以訪問到的對象,并設置其標志位。現在我們需要做的第一件事就是為對象添加一個標志位(mark bit):

    1 2 3 4 typedefstructsObject { ??unsignedcharmarked; ??/* Previous stuff... */ } Object;

    一旦我們創建了一個新的對象,我們將修改newObject()方法初始化marked為0。為了標記所有可訪問的對象,我們從內存中的變量入手,這樣就意味著要掃一遍堆棧。看上去就像這樣:

    1 2 3 4 5 6 voidmarkAll(VM* vm) { ??for(inti = 0; i < vm->stackSize; i++) { ????mark(vm->stack[i]); ??} }

    里面又調用了mark。我們來分幾步搭建它。第一:

    1 2 3 voidmark(Object* object) { ??object->marked = 1; }

    毫無疑問,這是最重要的一點。我們標記了這個對象自身是可訪問的,但記住,我們還需要處理對象中的引用:可訪問性是遞歸的。如果該對象是一個pair,它的兩個字段也是可訪問的。操作很簡單:

    1 2 3 4 5 6 7 8 voidmark(Object* object) { ??object->marked = 1; ??if(object->type == OBJ_PAIR) { ????mark(object->head); ????mark(object->tail); ??} }

    但是這里有一個bug。你看到了嗎?我們正在遞歸,但我們沒有檢查循環。如果你有一堆pair在一個循環中相互指向對方,這就會造成棧溢出并崩潰。

    為了解決這個情況,我們僅需要做的是在訪問到了一個已經處理過的對象時,退出即可。所以完整的mark()方法應該是:

    1 2 3 4 5 6 7 8 9 10 11 12 voidmark(Object* object) { ??/* If already marked, we're done. Check this first ?????to avoid recursing on cycles in the object graph. */ ??if(object->marked)return; ??object->marked = 1; ??if(object->type == OBJ_PAIR) { ????mark(object->head); ????mark(object->tail); ??} }

    現在我們可以調用markAll()方法了,它會準確的標記內存中所有可訪問的對象。我們已經成功一半了!

    ?

    清理

    下一個階段就是清理一遍所有我們已經分配過(內存)的對象并釋放那些沒有被標記過的(對象)。但這里有一個問題:所有未被標記的對象——我們所定義的——都不可達!我們都不能訪問到它們!

    虛擬機已經實現了對象引用的語義:所以我們只在變量和pair元素中儲存指向對象的指針。當一個對象不再被任何指針指向時,那我們就完全失去它了,而這也實際上造成了內存泄露。

    解決這個問題的訣竅是:虛擬機可以有它自己的對象引用,而這不同于對語言使用者可讀的那種語義。換句話說,我們自己可以保留它們的痕跡。

    這么做最簡單的方法是僅維持一張由所有分配過(內存)的對象(組成)的鏈表。我們在這個鏈表中將對象自身擴展為一個節點:

    1 2 3 4 5 6 typedefstructsObject { ??/* The next object in the list of all objects. */ ??structsObject* next; ??/* Previous stuff... */ } Object;

    虛擬機會保留這個鏈表頭的痕跡:

    1 2 3 4 5 6 typedefstruct{ ??/* The first object in the list of all objects. */ ??Object* firstObject; ??/* Previous stuff... */ } VM;

    在newVM()方法中我們確保將firstObject初始化為NULL。無論何時創建一個對象,我們都將其添加到鏈表中:

    1 2 3 4 5 6 7 8 9 10 11 Object* newObject(VM* vm, ObjectType type) { ??Object* object = malloc(sizeof(Object)); ??object->type = type; ??object->marked = 0; ??/* Insert it into the list of allocated objects. */ ??object->next = vm->firstObject; ??vm->firstObject = object; ??returnobject; }

    這樣一來,即便是語言找不到一個對像,它還是可以被實現。想要清理并刪除那些未被標記的對象,我們只需要遍歷該鏈表:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 voidsweep(VM* vm) { ??Object** object = &vm->firstObject; ??while(*object) { ????if(!(*object)->marked) { ??????/* This object wasn't reached, so remove it from the list ?????????and free it. */ ??????Object* unreached = *object; ??????*object = unreached->next; ??????free(unreached); ????}else{ ??????/* This object was reached, so unmark it (for the next GC) ?????????and move on to the next. */ ??????(*object)->marked = 0; ??????object = &(*object)->next; ????} ??} }

    這段代碼讀起來有點棘手,因為那個指針(指object)指向的是一個指針,但是通過它的工作你會發現它還是非常簡單的。它只是掃遍了整張鏈表。只要它碰到了一個未被標記的對象,它就會釋放該對象的內存并將其從鏈表中移除。最后,我們將會刪除所有不可訪問的對象。

    祝賀你!我們已經有了一個垃圾收集器!現在只剩下一點工作了:實際調用它!首先我們將這兩個階段整合在一起:

    1 2 3 4 voidgc(VM* vm) { ??markAll(vm); ??sweep(vm); }

    沒有比這更明顯的”標記-清除”算法了。現在最棘手的是搞清楚什么時候來實際調用它。”內存不足(low on memory)”是個什么意思?尤其是對于現在的計算機,它們幾乎擁有無限的虛擬內存!

    事實證明,我們沒有完全正確或錯誤的答案。這真的取決于你使用虛擬機的目的以及讓它運行在什么樣的硬件上。為了讓這個例子看上去很簡單,我們僅在進行了一定數量的內存分配之后開始收集。事實上一些語言的實現就是這么做的,而這也很容易。

    我們將邀請虛擬機來追蹤我們到底創建了多少(對象):

    1 2 3 4 5 6 7 8 9 typedefstruct{ ??/* The total number of currently allocated objects. */ ??intnumObjects; ??/* The number of objects required to trigger a GC. */ ??intmaxObjects; ??/* Previous stuff... */ } VM;

    接下來,初始化:

    1 2 3 4 5 6 7 VM* newVM() { ??/* Previous stuff... */ ??vm->numObjects = 0; ??vm->maxObjects = INITIAL_GC_THRESHOLD; ??returnvm; }

    其中,INITIAL_GC_THRESHOLD為你啟動第一個GC(垃圾收集器)的對象數量。較小的值會更節省內存,而較大的值則更省時。自己看著辦吧。

    每當我們創建一個對象,我們增加numObjects,如果它達到最大值就啟動一次收集:

    1 2 3 4 5 6 7 8 Object* newObject(VM* vm, ObjectType type) { ??if(vm->numObjects == vm->maxObjects) gc(vm); ??/* Create object... */ ??vm->numObjects++; ??returnobject; }

    我不會費心的顯示它(指numObjects),但是我們也會稍微調整sweep()方法,每釋放一次就遞減numObjects。最后,我們修改了gc()方法來更新最大值:

    1 2 3 4 5 6 7 8 voidgc(VM* vm) { ??intnumObjects = vm->numObjects; ??markAll(vm); ??sweep(vm); ??vm->maxObjects = vm->numObjects * 2; }

    每次收集之后,我們更新maxObjects——以進行收集后仍在活動的對象為基準。乘法器讓我們的堆隨著活動中的對象數量的增加而增加。同樣,也會隨著一些對象最終被釋放掉而自動減少。



    最后

    你成功了!如果你全部照做了,那你現在已經得到了一個簡單的垃圾收集算法的句柄。如果你想看完整的代碼,在這里。我再強調一點,盡管這個收集器很簡單,但它可不是一個玩具。

    你可以在這上面做一大堆的優化(像在GC和程序設計語言這些事情中,90%的努力都在優化上),但它的核心代碼可是真正的GC。它與目前Ruby和Lua中的收集器非常的相似。你可以使用一些類似的代碼到你的項目中。去做些很酷的事情吧!

    #include <stdio.h> #include <stdlib.h>#define STACK_MAX 256typedef enum {OBJ_INT,OBJ_PAIR } ObjectType;typedef struct sObject {ObjectType type;unsigned char marked;/* The next object in the linked list of heap allocated objects. */struct sObject* next;union {/* OBJ_INT */int value;/* OBJ_PAIR */struct {struct sObject* head;struct sObject* tail;};}; } Object;typedef struct {Object* stack[STACK_MAX];int stackSize;/* The first object in the linked list of all objects on the heap. */Object* firstObject;/* The total number of currently allocated objects. */int numObjects;/* The number of objects required to trigger a GC. */int maxObjects; } VM;void assert(int condition, const char* message) {if (!condition) {printf("%s\n", message);exit(1);} }VM* newVM() {VM* vm =(VM *) malloc(sizeof(VM));vm->stackSize = 0;vm->firstObject = NULL;vm->numObjects = 0;vm->maxObjects = 8;return vm; }void push(VM* vm, Object* value) {assert(vm->stackSize < STACK_MAX, "Stack overflow!");vm->stack[vm->stackSize++] = value; }Object* pop(VM* vm) {assert(vm->stackSize > 0, "Stack underflow!");return vm->stack[--vm->stackSize]; }void mark(Object* object) {/* If already marked, we're done. Check this first to avoid recursingon cycles in the object graph. */if (object->marked) return;object->marked = 1;if (object->type == OBJ_PAIR) {mark(object->head);mark(object->tail);} }void markAll(VM* vm) {for (int i = 0; i < vm->stackSize; i++) {mark(vm->stack[i]);} }void sweep(VM* vm) {Object** object = &vm->firstObject;while (*object) {if (!(*object)->marked) {/* This object wasn't reached, so remove it from the list and free it. */Object* unreached = *object;*object = unreached->next;free(unreached);vm->numObjects--;} else {/* This object was reached, so unmark it (for the next GC) and move on tothe next. */(*object)->marked = 0;object = &(*object)->next;}} }void gc(VM* vm) {int numObjects = vm->numObjects;markAll(vm);sweep(vm);vm->maxObjects = vm->numObjects * 2;printf("Collected %d objects, %d remaining.\n", numObjects - vm->numObjects,vm->numObjects); }Object* newObject(VM* vm, ObjectType type) {if (vm->numObjects == vm->maxObjects) gc(vm);Object* object = (Object *)malloc(sizeof(Object));object->type = type;object->next = vm->firstObject;vm->firstObject = object;object->marked = 0;vm->numObjects++;return object; }void pushInt(VM* vm, int intValue) {Object* object = newObject(vm, OBJ_INT);object->value = intValue;push(vm, object); }Object* pushPair(VM* vm) {Object* object = newObject(vm, OBJ_PAIR);object->tail = pop(vm);object->head = pop(vm);push(vm, object);return object; }void objectPrint(Object* object) {switch (object->type) {case OBJ_INT:printf("%d", object->value);break;case OBJ_PAIR:printf("(");objectPrint(object->head);printf(", ");objectPrint(object->tail);printf(")");break;} }void test1() {printf("Test 1: Objects on stack are preserved.\n");VM* vm = newVM();pushInt(vm, 1);pushInt(vm, 2);gc(vm);assert(vm->numObjects == 2, "Should have preserved objects."); }void test2() {printf("Test 2: Unreached objects are collected.\n");VM* vm = newVM();pushInt(vm, 1);pushInt(vm, 2);pop(vm);pop(vm);gc(vm);assert(vm->numObjects == 0, "Should have collected objects."); }void test3() {printf("Test 3: Reach nested objects.\n");VM* vm = newVM();pushInt(vm, 1);pushInt(vm, 2);pushPair(vm);pushInt(vm, 3);pushInt(vm, 4);pushPair(vm);pushPair(vm);gc(vm);assert(vm->numObjects == 7, "Should have reached objects."); }void test4() {printf("Test 4: Handle cycles.\n");VM* vm = newVM();pushInt(vm, 1);pushInt(vm, 2);Object* a = pushPair(vm);pushInt(vm, 3);pushInt(vm, 4);Object* b = pushPair(vm);a->tail = b;b->tail = a;gc(vm);assert(vm->numObjects == 4, "Should have collected objects."); }void perfTest() {printf("Performance Test.\n");VM* vm = newVM();for (int i = 0; i < 1000; i++) {for (int j = 0; j < 20; j++) {pushInt(vm, i);}for (int k = 0; k < 20; k++) {pop(vm);}} }int main(int argc, const char * argv[]) {test1();test2();test3();test4();perfTest();return 0; }
    vm中有一個指針,指向最近加入的一個對象,需要注意的是,在沒有gc之前,所有new的對象都由單鏈表相連,注意new的新對象的標志位為0

    在vm中有一個棧,存儲的是所有的局部變量,定義一個局部變量就壓入棧中,離開了作用域就從棧中彈出

    gc的過程是這樣的,首先遞歸變量棧中的變量,并將其所指向的對象的標志位設為1,這樣就能標志出所有還在使用中的對象,沒有被遍歷到的變量所指向的對象的標志位保持為0,

    接著,通過vm中的那個指針,遍歷所有的變量,如果標志位為1,則將其標志位設為0;如果標志位為0.,直接將其free,注意在free之前,要將其前一個對象的next執行其后一個對象。



    https://github.com/munificent/mark-sweep

    ?http://blog.jobbole.com/53376/

    總結

    以上是生活随笔為你收集整理的编写你的第一个垃圾收集器的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    黄色成品视频 | 国产资源在线播放 | 丁香资源影视免费观看 | 九九精品毛片 | 91亚洲精品久久久蜜桃网站 | 99色| 91在线精品秘密一区二区 | 国产99久久久精品 | 黄色1级毛片 | 丁香花在线观看免费完整版视频 | 亚洲欧美日本国产 | 亚洲视频在线免费观看 | 在线观看视频你懂得 | 日韩av片无码一区二区不卡电影 | 在线播放 日韩专区 | 最新在线你懂的 | 免费亚洲黄色 | 香蕉视频久久 | 四虎影视成人精品国库在线观看 | 亚洲一区黄色 | 午夜av大片| 国内精品久久久久久久久 | 久久久免费毛片 | 成人高清在线观看 | 色综合久久五月 | 久久99精品久久久久久 | 日韩一级黄色大片 | 五月色综合 | 97人人澡人人爽人人模亚洲 | 亚洲资源网 | av在线com | 日韩高清免费在线观看 | 日韩在线欧美在线 | 国产高清免费视频 | 久久伊人综合 | 最新黄色av网址 | 中文字幕中文字幕在线一区 | 色综合欧洲 | 久久99精品视频 | 黄色h在线观看 | 正在播放一区 | 成人国产综合 | 午夜成人免费电影 | free,性欧美| 中文字幕免费高清av | 91在线在线观看 | 91看片淫黄大片一级在线观看 | 91视频啪 | 国内外成人在线视频 | 久久精品亚洲精品国产欧美 | 91丨九色丨高潮丰满 | 在线观看911视频 | www.狠狠色.com | 爱射综合 | 精品国产一区二区三区久久 | 天天插一插 | 亚洲精品网址在线观看 | 午夜 久久 tv | 五月婷婷国产 | 国产精品免费一区二区三区在线观看 | 国产精品一区二区三区久久久 | 国产精品理论片在线播放 | 九九视频网 | 免费a视频 | 国产精品成人自拍 | 在线中文字幕播放 | 欧美性网站 | 日本久久免费电影 | 精品一二三四五区 | 丁香婷婷色综合亚洲电影 | 国产高清在线不卡 | 国产一级片久久 | 97在线视频免费观看 | 免费国产一区二区视频 | 在线免费高清一区二区三区 | 超碰人人国产 | 99热免费在线 | 高清精品视频 | 国产精品麻| 中文字幕资源在线 | 国产伦精品一区二区三区四区视频 | 亚洲麻豆精品 | 69精品在线 | 国产精品嫩草影视久久久 | 五月黄色 | 精品在线视频一区二区三区 | 亚洲资源在线观看 | 免费a级大片 | av电影不卡 | 国内精品久久久久久久影视麻豆 | 综合伊人av | 久久国产免费看 | 欧美资源在线观看 | 五月天婷婷在线观看视频 | 五月天激情综合网 | 正在播放一区 | 成人黄色在线视频 | 午夜体验区 | 丁香九月婷婷综合 | 久久艹影院 | 中字幕视频在线永久在线观看免费 | 国产福利精品视频 | 午夜影视剧场 | 久久免费黄色网址 | 人人射人人插 | 99草视频| 五月天最新网址 | 亚洲高清av在线 | 成人av一区二区三区 | 天天插天天 | 狠狠躁夜夜躁人人爽超碰97香蕉 | www.久久久.com| 中文字幕丝袜制服 | 午夜视频不卡 | 精品999在线观看 | 波多野结衣电影一区二区三区 | 日韩偷拍精品 | 国产亚洲午夜高清国产拍精品 | 人人爽人人爽av | 九月婷婷综合网 | 免费不卡中文字幕视频 | 337p日本大胆噜噜噜噜 | 99精品久久久久 | 亚洲国产免费看 | www色网站 | 国产精品久久久久久一区二区 | 日韩av高潮 | 欧美日韩国产网站 | 亚洲欧洲av在线 | 欧美激情精品 | 97手机电影网 | 亚洲精品毛片一级91精品 | 69国产成人综合久久精品欧美 | 六月丁香激情网 | 日韩久久久久久 | 中文字幕在线一区二区三区 | 字幕网av | 国内久久精品 | 国产精品在线看 | 色综合狠狠干 | 国产高清视频网 | 日日干av| 丁五月婷婷 | 天天色中文 | 亚洲欧美偷拍另类 | 水蜜桃亚洲一二三四在线 | 亚洲网久久 | 麻豆视屏 | 蜜桃视频日本 | 欧美精品久久久久久久久久久 | 久久久久久久久久久影院 | 天天综合视频在线观看 | 天天射天天搞 | 天天干天天操天天拍 | 夜夜操夜夜干 | 激情五月看片 | 激情综合网五月婷婷 | 亚洲精品黄网站 | 日日干夜夜操视频 | 97福利在线观看 | 99久久日韩精品免费热麻豆美女 | 欧美乱大交 | 99久久久国产精品免费观看 | 麻豆一精品传二传媒短视频 | 国产免费小视频 | 欧美日韩在线观看一区二区 | 麻豆网站免费观看 | 亚洲最新av | 九九热在线精品视频 | www.在线观看视频 | 中文永久免费观看 | 国产福利av在线 | 在线观看中文字幕2021 | 欧美激情视频一二区 | 午夜视频日本 | 国产精品资源在线 | 天天做日日爱夜夜爽 | 精品国产福利在线 | 亚洲精品资源 | 91精品国产乱码 | 91久久国产综合精品女同国语 | 国产一级黄色av | 91九色蝌蚪在线 | 一区二区三区在线视频观看58 | 中文字幕日韩一区二区三区不卡 | 成人午夜剧场在线观看 | 国产人免费人成免费视频 | 特级毛片aaa | 激情五月在线视频 | 国产在线视频在线观看 | 午夜影院先 | 久久人人爽人人爽人人片 | 深夜免费小视频 | 日韩专区 在线 | 激情五月播播久久久精品 | 国产在线精品福利 | 久久久福利 | 免费在线成人 | 久久久久久久久久久久久久免费看 | 国产福利中文字幕 | 国产精品扒开做爽爽的视频 | 免费看的国产视频网站 | 久久久久国产精品厨房 | a在线观看国产 | 在线不卡视频 | 首页国产精品 | 免费在线观看国产黄 | 天天超碰| av在线免费观看黄 | 欧美日韩一区二区三区在线免费观看 | 国产一区在线观看视频 | 欧美日韩国产一二三区 | www.com操| 蜜臀aⅴ国产精品久久久国产 | 天天玩天天操天天射 | 中文字幕在线影院 | 国产高清无av久久 | www久久99| 国产在线观看av | 欧美日韩在线精品一区二区 | 欧美乱大交| 99精品国产在热久久 | 欧美精品在线观看一区 | 亚洲一区二区三区四区精品 | 国产精品一区二区三区久久 | 夜夜骑日日 | 午夜视频在线观看一区二区 | 一级黄色毛片 | 日韩欧美一区二区不卡 | 日日爽夜夜操 | 亚洲区另类春色综合小说校园片 | 99在线播放| 亚洲一区欧美精品 | 日韩精品免费在线视频 | 在线探花 | 久久久亚洲网站 | 欧美夫妻性生活电影 | 欧美成a人片在线观看久 | 久久国产免费视频 | 精品高清美女精品国产区 | 日本久草电影 | www.天天成人国产电影 | 国产自产在线视频 | 一级黄色片在线观看 | 亚洲日本成人网 | 精品国产一区二区三区免费 | av黄色影院| 五月激情姐姐 | 成年一级片 | 五月天色丁香 | 中文字幕电影一区 | 欧美精品你懂的 | 五月花激情 | 色综合天天综合 | 日韩18p| 亚洲精品免费在线观看视频 | 国产免费资源 | 日韩在线大片 | 免费99视频 | 免费观看一区 | 天天天插 | 久一久久 | 亚洲一区免费在线 | 香蕉视频在线播放 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 日韩av二区 | 久久久久成人精品免费播放动漫 | 亚洲欧美国产精品va在线观看 | 爱爱av网 | 日韩成人看片 | 午夜精品一区二区三区免费 | 丁香国产视频 | 久久中文字幕视频 | 久久久久久久久黄色 | 天天草天天摸 | av在线a| 日韩精品视频在线观看网址 | 久久综合丁香 | 久草色在线观看 | 99免费视频 | 成人黄色资源 | 国产成人一级电影 | 国产精品大片免费观看 | 精品麻豆入口免费 | 色天天综合久久久久综合片 | 亚洲人人爱 | 久久久精品视频网站 | 五月婷婷婷婷婷 | 精品免费视频 | 国产色在线视频 | 99视频这里只有 | 国产福利电影网址 | 国产欧美精品一区二区三区四区 | 午夜男人影院 | 亚洲精品tv | 在线高清一区 | 婷婷久久国产 | 婷婷丁香六月 | 激情av网| 亚洲精品国产第一综合99久久 | 99精品视频精品精品视频 | 六月丁香婷婷网 | 久久久精品国产一区二区 | 久久久亚洲精华液 | 九热精品| 久久免费精彩视频 | 国产麻豆电影在线观看 | 狠狠色丁香久久婷婷综合丁香 | 99久久综合国产精品二区 | 五月婷婷中文 | 伊人在线视频 | 片网站 | 五月天网站在线 | 久久视频这里有久久精品视频11 | 成人午夜在线电影 | 欧美一级在线 | 国产又黄又爽又猛视频日本 | 黄色一级大片免费看 | 国产手机视频精品 | 久久免费观看少妇a级毛片 久久久久成人免费 | 婷婷去俺也去六月色 | 91人人澡人人爽 | 91在线视频免费观看 | se婷婷| 久久影院午夜论 | 国产成人精品一区二区在线观看 | 日韩精品免费一区二区 | 欧美大片www | 日本精品久久久久影院 | 国产精品一区久久久久 | 少妇性色午夜淫片aaaze | 手机成人免费视频 | 在线黄色国产电影 | 国产精品福利在线播放 | 欧美天天射 | 免费日韩一区二区三区 | 亚洲草视频 | 98久久| 一二区av | 色综合久久久久久中文网 | 99国内精品 | 毛片二区 | 久久免费视频1 | 五月婷婷久久丁香 | 国产精品美女免费 | 97在线观看视频免费 | 97超碰免费在线观看 | 国产高清亚洲 | 久久国产精品影片 | 日韩视频二区 | 久久精品人人做人人综合老师 | 亚洲一区二区精品3399 | av黄色大片 | 99精品偷拍视频一区二区三区 | 九九免费在线观看视频 | 国产成人精品一区二区三区 | 欧美另类巨大 | 免费看片网址 | 婷婷丁香九月 | 日韩精品久久久久久 | 亚洲一区欧美精品 | 日韩中文字幕视频在线 | 国产精久久久 | 午夜精品一区二区三区在线视频 | 精品一区二区久久久久久久网站 | 欧美乱淫视频 | 在线a亚洲视频播放在线观看 | 国外成人在线视频网站 | 国产精品一级视频 | 91在线免费观看国产 | 精品国产电影一区二区 | 夜夜操天天操 | 瑞典xxxx性hd极品 | 黄色av一区| 91在线操 | 国产成人精品久久久久 | 久久99久久99免费视频 | 亚洲japanese制服美女 | 婷婷激情5月天 | 日本h视频在线观看 | www日| 国产亚洲精品久久19p | 99视频在线观看一区三区 | 99国产免费网址 | 五月天久久激情 | 久草香蕉在线视频 | 国产一区二区精品久久91 | 9在线观看免费高清完整版 玖玖爱免费视频 | 麻豆国产精品永久免费视频 | 亚洲精品国精品久久99热 | 国产精品av电影 | 中文字幕网站视频在线 | 日日夜夜免费精品视频 | 91男人影院 | 粉嫩av一区二区三区免费 | 色a综合| 婷婷丁香视频 | 久久精品一二三 | 国产精品综合在线 | 中文字幕在线观看一区 | www.久久91 | 91九色精品 | 99精品久久久 | 精品久久国产一区 | 午夜精品久久久久久久99婷婷 | 久久精品91久久久久久再现 | 夜色.com| 午夜视频免费在线观看 | 久99热| 五月婷婷在线观看视频 | 婷婷丁香自拍 | 日韩精品第一区 | 成人91在线 | 国产手机视频 | 日日操日日干 | 日韩有码在线观看视频 | 九九99靖品| 久久久久国产精品视频 | 成人免费观看a | 国产对白av | 丁香在线观看完整电影视频 | 国模一二三区 | 精品国产一区二区三区在线观看 | 亚洲一区二区三区四区在线视频 | 久久精品香蕉 | 久久久久久久久久久电影 | 亚洲天堂社区 | 亚洲精品国产精品国自产 | 国产在线观看二区 | 亚洲国产婷婷 | 就色干综合 | 亚洲清纯国产 | 亚洲成av人片在线观看无 | 久热电影| 五月婷综合 | 久二影院 | 久久久久久国产一区二区三区 | 天天操天天爱天天干 | 国产粉嫩在线 | 国产精品成人免费 | 国产一级黄色免费看 | 天天干,天天操 | 亚洲国产视频网站 | 国产xx视频 | 狠狠躁夜夜躁人人爽视频 | 亚洲免费av网站 | 国产美女视频免费观看的网站 | 亚洲成人国产精品 | 五月天丁香视频 | 精品久久五月天 | 91精品久久久久久综合乱菊 | 国产精品v欧美精品 | 日本精品在线看 | 精品国产色 | 国产亚洲欧美在线视频 | 五月天,com | 亚洲精品中文字幕视频 | 国产不卡免费视频 | 国产在线国偷精品产拍 | 精品国产乱码久久久久久三级人 | 97超视频 | 国产精品6999成人免费视频 | 黄色91在线观看 | 丁香在线观看完整电影视频 | 久久久久久久久福利 | 欧美一区二区在线刺激视频 | 懂色av一区二区在线播放 | 国产尤物在线视频 | 久久人人爽人人片av | 懂色av懂色av粉嫩av分享吧 | 免费中午字幕无吗 | 天天色天天干天天 | 免费在线观看av电影 | 激情五月在线视频 | 91在线中字| 制服丝袜在线 | 国产精品第一页在线观看 | 国产男男gay做爰 | 亚洲不卡123| 在线天堂v | 国内综合精品午夜久久资源 | 激情五月婷婷综合网 | 伊人色**天天综合婷婷 | 国产精品一区二区av影院萌芽 | 九九爱免费视频在线观看 | 久久99热精品 | 久久久久久久久久久黄色 | 天天干天天干天天干 | 97超视频免费观看 | 九九爱免费视频在线观看 | 91系列在线观看 | 日日激情| 日韩影视在线观看 | 日韩av一区二区在线 | 99久久婷婷国产综合精品 | 7777精品伊人久久久大香线蕉 | 视频在线观看国产 | 日韩在线 | 91大神在线观看视频 | 午夜91视频| 99热99re6国产在线播放 | 成人免费一区二区三区在线观看 | 精品久久久久久国产 | 国模一区二区三区四区 | 91精品推荐| 国产在线视频在线观看 | 欧美片网站yy | 亚洲一区二区精品3399 | 亚洲精品成人在线 | 久久全国免费视频 | 国产精品一区二区三区免费视频 | 国产精彩视频一区二区 | 久久草草热国产精品直播 | 国产在线精品国自产拍影院 | 9999免费视频| av一级在线 | 九色视频网址 | 久久天天综合网 | 日日天天狠狠 | 奇米先锋 | 中文字幕免费播放 | 五月婷婷综合网 | 国产精品一区二区三区电影 | 欧美色噜噜 | 久久久久久国产精品亚洲78 | 五月开心六月伊人色婷婷 | 国产精品欧美久久久久三级 | 国产特级毛片aaaaaaa高清 | 国产精品成人自产拍在线观看 | 在线观看精品一区 | 午夜av免费看 | 99久久久久久久久久 | 99视频精品在线 | 在线播放视频一区 | 欧美午夜性 | 国产精品va在线播放 | 五月天堂色| 免费观看一级 | 九九久久婷婷 | 色婷婷激情综合 | 色综合亚洲精品激情狠狠 | 亚洲精品一区二区三区高潮 | 欧美精品在线一区二区 | 六月婷操 | 色五月成人 | 亚洲妇女av | 免费激情网 | 国产精品自产拍 | 免费在线视频一区二区 | 成人免费网站视频 | 中文字幕二区在线观看 | 国产精品免费久久久久久 | 亚洲九九九在线观看 | 成人高清在线 | 欧美黄网站 | 亚洲日本色 | 91av九色| 91精品久久久久久综合五月天 | 欧美精品在线观看免费 | 精品黄色在线观看 | 欧美少妇xxxxxx| 日本 在线 视频 中文 有码 | 国产手机视频 | 91在线网址| 久久婷亚洲五月一区天天躁 | 亚洲天天看 | 中文在线中文资源 | 欧美日韩精品在线观看 | 亚洲九九影院 | 欧美了一区在线观看 | 国产精品一区二区 91 | 日韩视频一区二区在线观看 | 国产精品第一 | 久久免费成人精品视频 | 国产精品99久久久久久宅男 | 97偷拍视频 | 91亚洲精品久久久蜜桃网站 | 99热超碰| 久久久精品国产一区二区电影四季 | 国际精品久久久 | 婷婷免费在线视频 | 狠狠久久伊人 | 亚洲一区二区三区91 | 麻豆免费视频网站 | 欧美日韩国产欧美 | 亚洲精品综合在线观看 | 国产精品一区二区久久精品爱微奶 | 日韩av午夜在线观看 | 91色一区二区三区 | 国产一卡在线 | 国产精品igao视频网入口 | 玖玖视频国产 | 久99久在线 | 中文字幕美女免费在线 | 久久精品一区 | 人人爽人人搞 | 亚洲精品久久久蜜桃 | 亚洲涩涩涩涩涩涩 | 久视频在线 | av在线免费在线观看 | 国产99久久久国产精品免费二区 | 日韩成年视频 | 日韩在线观看影院 | 亚洲开心激情 | 精品视频资源站 | 国产精品com | 午夜久久成人 | 久久国产精品视频 | 91大神精品视频在线观看 | av免费看看 | 狠狠婷婷| 丁香婷婷激情国产高清秒播 | av黄色在线播放 | 免费黄av| 福利一区在线视频 | 福利视频 | 久久九九影视网 | 99电影| 婷婷成人在线 | 国产精品久久免费看 | 国产视频手机在线 | 久操视频在线免费看 | 日韩啪啪小视频 | 中国一级片在线播放 | 日韩欧美精选 | 天天插天天操天天干 | 免费又黄又爽视频 | 伊人激情网| 福利视频入口 | 91香蕉视频在线下载 | 亚洲成人av电影在线 | 狠狠狠操 | 久久免视频 | 日本高清免费中文字幕 | 久久国产品 | 午夜三级影院 | 麻豆视频免费观看 | 午夜精品区 | 99视频导航| 色网站在线免费观看 | 午夜在线看 | 99视频导航 | 亚洲天堂网站 | 五月婷婷网站 | 九色最新网址 | 成人a级黄色片 | 日韩欧美高清在线 | 99久热在线精品视频成人一区 | 日韩免费 | 在线观看91网站 | 偷拍精品一区二区三区 | 韩国av电影在线观看 | 日日碰狠狠添天天爽超碰97久久 | 欧美日韩1区2区 | 国产美女在线精品免费观看 | 国产精品一区二区三区电影 | 免费观看的黄色片 | 丁香九月激情 | 国产伦精品一区二区三区在线 | 国产精品毛片一区二区在线 | 成人动漫一区二区三区 | 色黄www小说 | 在线电影中文字幕 | 亚洲a资源 | 日韩在线一区二区免费 | 粉嫩一二三区 | 国产91精品看黄网站在线观看动漫 | 国产亚洲一级高清 | 国产精品久久久久久久久毛片 | 久草精品视频在线播放 | 日韩av手机在线看 | 91精品色 | 成人国产精品久久久久久亚洲 | 一区二区三区精品在线 | 天天射天天 | 欧美日韩亚洲国产一区 | 激情五月***国产精品 | 亚洲日本在线视频观看 | 久久免费观看少妇a级毛片 久久久久成人免费 | av免费在线观看网站 | 国产二区免费视频 | 久久五月精品 | 中文字幕中文字幕在线中文字幕三区 | 午夜视频欧美 | 久久视频免费观看 | 五月丁香 | 国产色综合天天综合网 | 成人久久18免费 | 国产一二三区在线观看 | 操处女逼 | 欧美精品久久久久久久久老牛影院 | 久久激五月天综合精品 | 久久久天堂 | 天无日天天操天天干 | 成人国产精品入口 | 操夜夜操 | 欧美性直播| 久久久免费毛片 | 久久精品欧美日韩精品 | 一区二区三区日韩视频在线观看 | 久久精品一区二区三区视频 | 中文十次啦 | 国产 日韩 欧美 中文 在线播放 | 奇米影视8888在线观看大全免费 | 亚洲精品久久久久久中文传媒 | 成人午夜黄色影院 | 在线观看视频日韩 | 五月综合网 | av在线观 | 麻豆91视频| 久草在线资源免费 | 国产99视频在线观看 | 久久久www成人免费精品 | 国产精品涩涩屋www在线观看 | 91片黄在线观 | 亚洲天天在线 | 人人干人人爽 | 成人免费在线观看av | 国产1区2区| bbw av| 在线观看视频一区二区 | 成人久久久久久久久久 | 日韩av一区二区在线影视 | 一级淫片在线观看 | 婷婷国产一区二区三区 | 香蕉视频国产在线 | 久久久国产精华液 | 色在线视频网 | 久草资源免费 | 在线看av网址 | 国产精品毛片完整版 | 色片网站在线观看 | 国产99久久久精品 | www.天堂av | 国产视频精品视频 | 亚洲综合色站 | 热久久免费国产视频 | 黄在线免费看 | 9999在线观看| 国产资源中文字幕 | 色多多视频在线观看 | 四虎www com | 国产精品久久一区二区无卡 | 日韩a级黄色 | 在线观看岛国av | 精品欧美小视频在线观看 | 亚洲aⅴ久久精品 | 国产高清在线永久 | 偷拍精品一区二区三区 | 久久久久久久久精 | 午夜色大片在线观看 | 97看片 | 国产视频1 | 麻花天美星空视频 | 国内综合精品午夜久久资源 | 久久伊人精品天天 | 精品999久久久 | 中文字幕在线乱 | 最新午夜电影 | 中文字幕一区在线 | 一区二区三区日韩精品 | 久久久久久久久久久国产精品 | 最近高清中文在线字幕在线观看 | 中文字幕在线播放av | 蜜臀久久99精品久久久久久网站 | 国产成人av电影在线观看 | 五月婷婷综合色拍 | 国产综合久久 | 99免费在线播放99久久免费 | 国产亚洲一区二区在线观看 | 九九免费在线观看 | 黄色在线免费观看网址 | 久久天天躁夜夜躁狠狠85麻豆 | 激情大尺度视频 | 国产精品午夜在线观看 | 91视频在线免费下载 | 精品国产91亚洲一区二区三区www | 久久精品视频在线 | 99麻豆久久久国产精品免费 | 激情综合久久 | 国产韩国日本高清视频 | 久久久999| 毛片在线播放网址 | 国产精品1区2区3区 久久免费视频7 | 中文字幕在线国产精品 | 日韩电影一区二区三区在线观看 | 日韩首页 | 一区二区三区韩国免费中文网站 | 国产精品人成电影在线观看 | 亚洲免费小视频 | 精品久久久久久电影 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 成人va视频| 久久99精品久久久久久三级 | 99热精品在线观看 | 国产精品毛片一区视频播 | 日本黄色黄网站 | 婷婷干五月 | av在线不卡观看 | 婷婷成人综合 | 久久婷婷五月综合色丁香 | 欧美日韩国产色综合一二三四 | 成人av在线看 | 精品国产成人在线影院 | 久久久久久久网站 | 99精品在线免费在线观看 | 黄色一级大片在线免费看国产一 | 国产精品成人免费一区久久羞羞 | 在线中文字幕一区二区 | 九九99| 亚洲国产精选 | 最新av网址在线观看 | a天堂一码二码专区 | av大片网址| 久久综合桃花 | 91麻豆精品国产午夜天堂 | 91精品国产91热久久久做人人 | 中文字幕字幕中文 | 久久久久久久久久久免费av | 97超碰在线久草超碰在线观看 | 婷婷六月丁 | 日本精品一| 三级在线视频观看 | 91在线观看高清 | 久草久草久草久草 | 国产不卡视频在线播放 | 久久精品99国产精品酒店日本 | 亚洲精品视频免费观看 | 中文字幕在线专区 | 中文字幕在线看视频国产 | 日韩精品中文字幕有码 | 欧美日韩国产精品久久 | 国产精品 中文字幕 亚洲 欧美 | 中文字幕在线影院 | 久操中文字幕在线观看 | 国产精品电影一区二区 | 国产视频 亚洲视频 | 18国产精品白浆在线观看免费 | 久久这里只有精品视频首页 | 一区二区视频在线播放 | 青青草国产精品 | 精品国产乱码久久久久久1区2匹 | 亚洲三级黄色 | 日韩精品一区电影 | 婷婷丁香激情 | 69国产盗摄一区二区三区五区 | 在线久久| 久久精品99 | 这里有精品在线视频 | 亚洲综合成人婷婷小说 | 成人动漫视频在线 | 91精品国产成人 | 婷婷丁香在线 | 女人18精品一区二区三区 | 91精品视频免费看 | 日韩高清精品免费观看 | 精品国产福利在线 | 中文字幕日韩国产 | 日韩欧美精品在线 | 久久综合中文字幕 | 精品视频| 亚洲精品在线观看av | 99精品免费 | 国产一区视频在线观看免费 | 免费h漫在线观看 | 日韩av电影一区 | 91大神电影| 国产91精品一区二区麻豆网站 | 亚洲开心色 | 亚洲精品乱码久久 | 久久久久蜜桃 | 五月婷婷在线播放 | 青春草免费在线视频 | 久草视频网| 婷婷丁香激情五月 | 爱情影院aqdy鲁丝片二区 | 91精品久久香蕉国产线看观看 | 成人精品一区二区三区中文字幕 | 精品国产a | 亚洲二区精品 | 精品欧美一区二区三区久久久 | 日韩一区二区三区高清免费看看 | 欧美乱淫视频 | 色婷婷av一区 | 国产又粗又猛又黄又爽视频 | 色婷婷在线视频 | www.888av | 国产综合激情 | 深爱婷婷久久综合 | 黄色片网站av | 久久久久久久久久电影 | 中文字幕在线观看资源 | 久久精品久久久久 | 婷色在线 | 九九交易行官网 | 99精品小视频 | 欧美另类高清 videos | 九九热免费在线观看 | 亚洲精品视频第一页 | 国产97免费 | 免费av福利 | 国产高清视频在线播放 | 日韩黄色网络 | 国产欧美久久久精品影院 | 国产精品日韩在线观看 | 91免费的视频在线播放 | 国产精品久久久久久久久大全 | 国产在线播放一区二区三区 | 亚洲精品456在线播放 | 国产黄免费在线观看 | 91麻豆精品国产91久久久更新时间 | 97色资源 | 成人一区电影 | 成人午夜精品 | 国产 成人 久久 | 1000部国产精品成人观看 | 免费视频国产 | 欧美精品一区二区免费 | 久久久官网 | 超碰成人免费电影 | 91看片网址| 成人久久久久久久久 | 欧美成年网站 | 三级黄色片在线观看 | 91亚洲在线观看 | 国产va饥渴难耐女保洁员在线观看 | 色综合天天天天做夜夜夜夜做 | 在线视频黄 | 国产精品久久久久久久久岛 | 欧美日韩国产精品一区二区亚洲 | 日韩在线视频免费观看 | 人人澡人人干 | 亚洲 在线 | 国产精品6 | 美女免费网站 | 不卡av在线| 久久激情网站 | 亚洲精品一区二区久 | www.夜夜草 | 国产又粗又长的视频 | 中文字幕免费高 | 国产视频一级 | 日本在线视频一区二区三区 | 久久综合狠狠狠色97 | 久久永久免费视频 | 欧美福利在线播放 | 欧美一二三专区 | 久久国产精品一区二区三区四区 | 午夜国产在线 | 久久欧美综合 | 色婷婷丁香 | 91中文字幕在线播放 | 婷五月激情 | 毛片在线网 | ww亚洲ww亚在线观看 | 波多野结衣一区二区三区中文字幕 | av在线影片 | 91大神在线观看视频 | 在线网址你懂得 | 国产精品va最新国产精品视频 | 九九九九精品九九九九 | 日日夜色| 玖玖色在线观看 | 人交video另类hd| 国产又粗又猛又色又黄网站 | 中文字幕在线观看免费高清完整版 | 91视频电影 | 日韩免费一区二区 | 国产一区视频在线观看免费 | 九九免费在线观看 | 在线免费av观看 | 久久久国产精品一区二区中文 | 国产中文字幕91 | 色99中文字幕 | 丁香在线视频 | 91高清免费在线观看 | 免费又黄又爽的视频 | 蜜臀久久99静品久久久久久 | 99色视频在线 | 日韩大陆欧美高清视频区 | 欧美激情片在线观看 | 久久国产精品99久久人人澡 | 午夜精品一区二区三区免费 | 999国内精品永久免费视频 | 中文字幕国产精品一区二区 | 91精品国产福利 | 制服丝袜在线 | 国产免费xvideos视频入口 | 国产一区在线观看免费 | 成人在线视频在线观看 | 91在线观看视频 | 成人播放器| 日韩欧美在线综合网 | 国产精品久久久免费 | 黄色成人av | 一级欧美黄 | 国产成人av综合色 | 超碰激情在线 |