• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Trace合并和寄存器分配的Dalvik優(yōu)化

    2014-06-07 05:53:21余超君李春強(qiáng)尚云海張培勇
    計算機(jī)工程 2014年10期
    關(guān)鍵詞:寄存器分支內(nèi)存

    余超君,李春強(qiáng),尚云海,張培勇

    (浙江大學(xué)超大規(guī)模集成電路設(shè)計研究所,杭州310027)

    基于Trace合并和寄存器分配的Dalvik優(yōu)化

    余超君,李春強(qiáng),尚云海,張培勇

    (浙江大學(xué)超大規(guī)模集成電路設(shè)計研究所,杭州310027)

    Dalvik虛擬機(jī)作為Android系統(tǒng)上運(yùn)行所有應(yīng)用程序的基礎(chǔ),其性能瓶頸一直制約著Android系統(tǒng)的用戶體驗。通過研究Android系統(tǒng)中的Dalvik架構(gòu),分析其解釋器和JIT模塊的工作原理,發(fā)現(xiàn)熱Trace選擇過程中短Trace編譯損耗大以及即時編譯過程中寄存器分配不合理的情況。結(jié)合Java虛擬機(jī)技術(shù)和編譯器技術(shù),在現(xiàn)有熱Trace選擇和寄存器分配機(jī)制的基礎(chǔ)上,提出基于Trace合并和寄存器分配的優(yōu)化算法,在國產(chǎn)高性能嵌入式CPU CSKY體系下移植Dalvik虛擬機(jī)并實現(xiàn)了上述優(yōu)化算法。通過實驗證明優(yōu)化后Dalvik執(zhí)行Java程序的性能提高了近10%。

    Dalvik虛擬機(jī);JIT技術(shù);性能優(yōu)化;Trace合并;寄存器分配;生命周期

    1 概述

    Android是Google公司針對嵌入式領(lǐng)域推出的操作系統(tǒng),其Java虛擬機(jī)采用Dalvik VM。與PC機(jī)Java虛擬機(jī)相比,Dalvik針對內(nèi)存和處理器速度有限的嵌入式設(shè)備進(jìn)行優(yōu)化,使其占用更少內(nèi)存等硬件資源,運(yùn)行效率更高。Dalvik工作于解釋執(zhí)行模式,并根據(jù)運(yùn)行情況通過基于Trace的JIT(Just in Time)技術(shù)將熱點代碼塊編譯成本地機(jī)器代碼并執(zhí)行以加快程序運(yùn)行[1]。

    雖然基于Trace的JIT技術(shù)的Dalvik虛擬機(jī)提高了Java程序運(yùn)行速度,但其Dalvik虛擬機(jī)的性能仍是Android系統(tǒng)運(yùn)行速度的瓶頸。筆者在移植Dalvik到國產(chǎn)嵌入式CPU C-SKY平臺的過程中,通過對基于Trace的JIT技術(shù)的Dalvik虛擬機(jī)研究,發(fā)現(xiàn)Dalvik現(xiàn)階段基于Trace的JIT技術(shù)存在如下問題:(1)Hot-Trace的某些熱點代碼塊短導(dǎo)致編譯比執(zhí)行代碼時間長,相應(yīng)的編譯消耗大,而且編譯的本地機(jī)器碼短,代碼優(yōu)化空間小[2];(2)Trace編譯時,寄存器分配策略簡單,導(dǎo)致Java虛擬寄存器的冗余載入和存回,即增加了冗余的 load/store操作[3]。第(1)個問題可以通過Trace合并來增加Trace代碼塊長度,第(2)個問題可以通過寄存器分配策略優(yōu)化來減少冗余的load/sotre指令。

    本文簡要介紹Dalvik虛擬機(jī)的特性并闡述其工作原理。在詳細(xì)分析基于Trace的JIT技術(shù)的Dalvik虛擬機(jī)基礎(chǔ)上,針對上述問題,設(shè)計并實現(xiàn)一種Trace合并和寄存器分配的優(yōu)化方法,并用標(biāo)準(zhǔn)Benchmark程序?qū)?yōu)化前后的Dalvik進(jìn)行性能評測。

    2 Dalvik虛擬機(jī)

    Dalvik是一個標(biāo)準(zhǔn)的Java運(yùn)行環(huán)境,但在內(nèi)部實現(xiàn)上,和標(biāo)準(zhǔn)JVM存在差異,具有如下特點[4]:

    (1)不同于標(biāo)準(zhǔn)JVM運(yùn)行class文件,Dalvik虛擬機(jī)運(yùn)行的是由dx工具封裝好的dex文件。這樣做不僅減少了整體的文件尺寸,也加快了I/O操作,提高了類的查找速度。

    (2)不同于標(biāo)準(zhǔn)JVM的基于棧的構(gòu)架,Dalvik虛擬機(jī)是基于寄存器的。基于寄存器的架構(gòu)雖然每條指令占用較多空間,但總體上減少了字節(jié)碼總條數(shù),即減少了指令分派次數(shù)及內(nèi)存訪問次數(shù)。

    (3)不同于標(biāo)準(zhǔn) JVM運(yùn)行的 Java字節(jié)碼, Dalvik運(yùn)行根據(jù)基于寄存器的架構(gòu)設(shè)計了專有Bytecode[5]。

    Dalvik執(zhí)行引擎采用基于Trace的JIT技術(shù)[6-7],其流程如圖1所示。

    圖1 Dalvik的JIT流程

    Dalvik虛擬機(jī)開始運(yùn)行時由解釋器解釋執(zhí)行Bytecode,并在各可能的Trace入口點記錄執(zhí)行過的次數(shù)。當(dāng)執(zhí)行次數(shù)達(dá)到某個閾值(如armv7閾值為40次),會檢查在該Trace入口點是否在保存編譯結(jié)果的內(nèi)存區(qū)域存在對應(yīng)的已編譯好的機(jī)器碼,若存在則跳轉(zhuǎn)到該機(jī)器碼直接運(yùn)行;否則繼續(xù)解釋執(zhí)行并開始記錄執(zhí)行軌跡(即Trace開始生成),直到Trace結(jié)束點,并提交這段Trace給編譯線程編譯。編譯好的機(jī)器碼會放入內(nèi)存區(qū)域,當(dāng)下次再執(zhí)行這個Trace入口地址時,就可跳轉(zhuǎn)到該機(jī)器碼塊直接執(zhí)行[6]。

    3 JIT優(yōu)化

    本文針對基于Trace的JIT模式的Dalvik虛擬機(jī)的缺點,提出通過Trace合并和寄存器分配策略進(jìn)行優(yōu)化。作為基于Trace的JIT特性的Dalvik虛擬機(jī),Trace的長度是影響其生成的機(jī)器碼的質(zhì)量的一個決定性因素,若Trace的長度比較短,則會導(dǎo)致解釋器和編譯線程的通信消耗加大,且生成機(jī)器碼時的可優(yōu)化空間變小[8],本文通過 Trace合并增加Trace長度,從而降低解釋器和編譯線程之間的通信消耗,同時使得在Trace編譯時可以通過更多的優(yōu)化技術(shù)提高生成的機(jī)器碼質(zhì)量[9]。本文還針對Dalvik在動態(tài)編譯時采用的基于輪詢機(jī)制的簡單寄存器分配策略,通過分析生命周期[10],減少虛擬寄存器中數(shù)據(jù)的載入和存回。

    3.1 Trace合并

    通過對標(biāo)準(zhǔn) Java測試程序 CaffeineMark在Dalvik上運(yùn)行時的分析,筆者發(fā)現(xiàn)作為Dalvik JIT在Trace劃分時的結(jié)束標(biāo)志性Bytecode類型中,69%的類型是條件跳轉(zhuǎn)Bytecode(即Branch類)。因此,筆者提出當(dāng)Trace以條件跳轉(zhuǎn)Bytecode結(jié)束時,選擇Branch Bytecode后的2個分支Trace中的1個和該Trace合并[11],從而加大Trace長度,提高編譯時優(yōu)化的可能性[12]。

    考慮到Branch的2個出口都可能是其他Trace的入口。如圖2所示,If_eq Bytecode所在的Trace1連接著2個Trace(Trace 2和Trace 3)的入口。對此可以將其中一個Trace(如Trace 2)和Trace 1合并,如圖2(b)所示,合并后的Trace 4變長。

    圖2 Trace合并

    條件跳轉(zhuǎn)有2個分支,選擇哪個分支Trace合并到新的Trace將是一個問題。根據(jù)程序執(zhí)行的可預(yù)測性,為降低內(nèi)存開銷、減少Trace合并的性能損耗,采取如下預(yù)測算法:對于重復(fù)執(zhí)行的字節(jié)碼代碼段,條件分支的跳轉(zhuǎn)具有重復(fù)性。也就是說,在重復(fù)的代碼段中,條件跳轉(zhuǎn)第n次跳轉(zhuǎn)出口很有可能也是第n+1次跳轉(zhuǎn)的出口(比如在循環(huán)體中有if語句,一般情況下2個跳轉(zhuǎn)出口中的一個執(zhí)行的比較多)。筆者通過修改Dalvik解釋器,統(tǒng)計類似上述類型條件跳轉(zhuǎn)的跳轉(zhuǎn)出口,發(fā)現(xiàn)同一出口的執(zhí)行概率有81%。此實驗也驗證了預(yù)測算法的可行性。所以,在重復(fù)執(zhí)行代碼到達(dá)閾值后,其下一次跳轉(zhuǎn)的字節(jié)碼分支,作為合并的目標(biāo)字節(jié)碼分支。

    圖3表示了圖2所示的Bytecode編譯成機(jī)器碼(CSKY指令集)后的情況(假設(shè)分支都被編譯)。圖3(a)中左分支由bf指令跳至鏈接單元chaining celln-1(用于跳轉(zhuǎn)到解釋器或者其他已編譯好的Trace)再跳入Trace 2的代碼中,Trace 2需要將虛擬寄存器v1的值載入實際寄存器中;右分支由bt指令跳至chaining celln再跳入Trace 3的代碼中,Trace 3需要將虛擬寄存器v1的值載入實際寄存器中。而如果通過合并Trace,編譯出來的機(jī)器碼將如圖3(b)所示,編譯Trace 4代碼,而原Trace 2中需要載入的虛擬寄存器如在原Trace 1中載入過則不需要重新載入。相比較可以發(fā)現(xiàn)如下優(yōu)點:bf指令和對應(yīng)的chaining celln-1由于代碼流將直接在預(yù)測分支執(zhí)行而不再需要,減少了整體內(nèi)存占用;原Trace 2中將減少若干用于虛擬寄存器載入的load指令,這對性能提升作用很大。

    圖3 Trace合并后編譯的機(jī)器碼

    3.2 寄存器分配

    通過合并Trace來增加Trace長度,可以加大優(yōu)化窗口,從而提升性能。鑒于load/store一直是嵌入式設(shè)備的性能瓶頸[13],本文提出基于生命周期分析的寄存器分配算法,以減少Dalvik虛擬寄存器(存在內(nèi)存中)和物理寄存器之間的傳遞,從而有效減少load/store操作。特別是結(jié)合Trace合并優(yōu)化,代碼塊越長,越容易提升性能[14]。

    如圖4中Bytecode部分所示(v0,v17,v0’等表示Bytecode的虛擬寄存器,a0,a1等表示物理寄存器),開始時對v0進(jìn)行運(yùn)算,經(jīng)過多條Bytecode后,又出現(xiàn)對v0運(yùn)算的Bytecode。在Dalvik現(xiàn)有的寄存器分配策略下,生成如圖4中優(yōu)化前部分所示的類似代碼:v0載入a0,在若干Bytecode后空閑物理寄存器用完,重新取a0用于v17的載入,當(dāng)遇到add v0,#6,需要重新載入v0到a1。其實這條load指令可以通過分析寄存器生命周期,并用適當(dāng)?shù)募拇嫫鞣峙洳呗韵H鐖D4中優(yōu)化后部分所示,當(dāng)空閑寄存器全部用完時,優(yōu)先分配那些生命周期已經(jīng)結(jié)束的寄存器給接下來的Bytecode(比如此例中的l9)使用,這樣在編譯add v0,#6這條指令時不需要重新load虛擬寄存器v0,因為v0的值已經(jīng)存在a0中,因而減少了load指令。實際應(yīng)用中,這種情況會很多(特別是Trace增長后),優(yōu)化后將有明顯效果。

    圖4 寄存器分配優(yōu)化

    3.3 優(yōu)化算法的實現(xiàn)

    現(xiàn)有基于Trace的JIT技術(shù)的Dalvik虛擬機(jī)中建立Trace的過程如圖5(a)所示,在建立Trace階段,對每個Bytecode判斷其是否符合Trace結(jié)束條件,即當(dāng)前指令是否是Branch,Invoke,Switch,Return類指令或者當(dāng)前Trace超過最大限定長度。當(dāng)條件符合時,表示從前一個Trace入口到當(dāng)前Bytecode為一個可以編譯為機(jī)器碼的 Trace,將收集到的Trace信息(包括當(dāng)前Trace開始點位置,Trace中 Bytecode的數(shù)目等)以結(jié)構(gòu)數(shù)組Trace[MAX_JIT_ RUN_LEN]的方式存儲,以等待compiler線程獲取并編譯。Trace合并優(yōu)化流程如圖5(b)所示。在全局結(jié)構(gòu)Thread中加入整型Combination變量,其初值設(shè)為COMBINE宏(表示合并的最大Trace數(shù))。考慮到以Invoke,Switch,Return類Bytecode結(jié)束的Trace或超長Trace與后續(xù)Trace合并后對系統(tǒng)優(yōu)化起到的比例較低,只針對以Branch類Bytecode結(jié)束的Trace與后續(xù)Trace進(jìn)行合并。

    圖5 Trace合并優(yōu)化

    當(dāng)Trace將以Branch指令結(jié)束,根據(jù)Combination變量是否已經(jīng)等于1判斷其是否已經(jīng)到了合并Trace數(shù)目最大值。若未等于1,對Combination值減1并將Trace信息放入結(jié)構(gòu)數(shù)組Trace[MAX_JIT_RUN_LEN]下一個組成員中,繼續(xù)建立Trace。若已經(jīng)等于1, Combination恢復(fù)為COMBINE并結(jié)束Trace的建立,將Trace[MAX_JIT_RUN_LEN]存儲等待編譯。

    在編譯線程中,若 Trace[MAX_JIT_RUN_ LEN]指示的Trace最后一個字節(jié)碼是Branch類的,則它的跳轉(zhuǎn)目標(biāo)為相應(yīng)指令(即合并后的下一個塊),而不是 Chaining Cell,并不再建立相應(yīng)的Chaining Cell。

    Dalvik編譯過程中的寄存器分配策略比較簡單,如圖6(a)所示。寄存器分配優(yōu)先分配那些當(dāng)前Bytecode不用且之前也沒有分配過(即不在活動中)的寄存器,如果不存在,則只需保證當(dāng)前Bytecode不用的寄存器即可。但是,當(dāng)編譯單元長度增加,寄存器分配次數(shù)增多,就可能出現(xiàn)一個物理寄存器多次分配給不同的虛擬寄存器,導(dǎo)致虛擬寄存器內(nèi)的值在其生命周期內(nèi)會被多次存回和重載入,從而增加load/store指令。

    為優(yōu)化寄存器分配策略,本文在編譯階段使用靜態(tài)單一賦值(Static Single Assignment,SSA)法轉(zhuǎn)換時,為每個SSA寄存器存儲其生命周期消失點,以消失點的Bytecode距離Trace首的偏移值表示,并用變量useend_offset保存。然后在代表物理寄存器狀態(tài)的RegisterInfo結(jié)構(gòu)中加入整型變量useend,用于對SSA寄存器分配物理寄存器時保存對應(yīng)的useend_offset。

    圖6 寄存器優(yōu)化

    在寄存器分配時,如圖6(b)所示,優(yōu)先分配那些當(dāng)前Bytecode不用、之前也沒有分配過的寄存器且寄存器RegisterInfo結(jié)構(gòu)中useend的值小于當(dāng)前編譯的Bytecode距Trace頭的偏移值(即表示該寄存器在后續(xù)不會被用到,也就減少了 load/store指令),然后再同原分配策略類似分配。

    4 性能分析

    CaffeineMark是常用的針對嵌入式設(shè)備進(jìn)行性能評測的一款Java軟件,其分?jǐn)?shù)高低體現(xiàn)了其性能的好壞,采用該軟件來測評優(yōu)化的效果。

    實驗硬件平臺是C-SKY公司的國產(chǎn)高性能嵌入式CPU CK810 16 MHz FPGA板,軟件平臺是Android 4.0.3。CaffeineMark包括 Sieve,Loop, Logic,String,Float,Method,Overall 7個組件。筆者針對未優(yōu)化、僅Trace合并優(yōu)化、僅寄存器分配優(yōu)化、兩者都優(yōu)化這4種情況進(jìn)行測評,實驗結(jié)果如表1所示,表中數(shù)據(jù)表示相應(yīng)測試項目的得分。

    表1 性能測試數(shù)據(jù)

    由實驗數(shù)據(jù)可見,優(yōu)化實現(xiàn)后性能提高接近10%??梢钥闯?僅有Trace合并優(yōu)化時效果一般,僅有寄存器分配優(yōu)化時效果不明顯,而當(dāng)兩者同時使用時,優(yōu)化效果比較明顯。這也說明了Trace合并的優(yōu)化使Trace長度增加,基于其上的寄存器優(yōu)化的效果更加明顯。

    5 結(jié)束語

    在已經(jīng)移植好的Android4.0.3基礎(chǔ)上,本文描述了對其Dalvik虛擬機(jī)的優(yōu)化,包括Trace合并和寄存器分配優(yōu)化,并通過實驗對Dalvik優(yōu)化前后的性能進(jìn)行了對比,結(jié)果表明Dalvik的優(yōu)化效果比較明顯。下一步工作包括確定Trace合并數(shù)目的最優(yōu)解以及嘗試一些其他傳統(tǒng)編譯器的優(yōu)化方法。

    [1] Bornstein D.The Dalvik VM Internals[C]//Proc.of Google I/O Developer Conference.San Francisco,USA: [s.n.],2008:1-8.

    [2] Hiroshi I.A Trace-based Java JIT Compiler for Large-scale Applications[C]//Proc.of the 6th ACM Workshop on Virtual Machines and Inter-mediate Languages.New York, USA:ACM Press,2012:1-2.

    [3] Hsu Wei-Chung,Charles N F,Goodman J R.On the Minimization of Load/stores in Local Register Allocation[J].IEEE Transactions on Software Engineering, 1989,15(10):1250-1260.

    [4] Security Engineering Research Group.Analysis of Dalvik Virtual Machine and Class Path Library[EB/OL]. (2009-07-12).http://imsciences.edu.pk/serg/wp-content/ uploads/2009/07/Analysis-of-Dalvik-VM.pdf.

    [5] 葉 云,李春強(qiáng),胡軍山.基于CK610的Dalvik虛擬機(jī)移植與優(yōu)化[J].計算機(jī)工程,2011,37(16):291-292.

    [6] Ben C,Bill B.A JIT Compiler for Android’s Dalvik VM [EB/OL].(2010-05-19).http://www.google.com/intl/ zh-CN/events/io/2010/sessions/jit-compiler-androidsdalvik-vm.html.

    [7] 周毅敏,陳 榕.Dalvik虛擬機(jī)進(jìn)程模型分析[J].計算機(jī)技術(shù)與發(fā)展,2010,20(2):83-86.

    [8] Hiroshi I,Hiroshige H,Peng W.A Trace-based Java JIT Compiler Retrofitted from a Method-based Compiler[C]// Proc.of the 9th AnnualIEEE/ACM International Symposium on Code Generation and Optimization. Chamonix,France:IEEE Press,2011:246-256.

    [9] Gal A,Eich B,Shaver M,et al.Trace-based Just-in-time Type Specialization for Dynamic Languages[C]//Proc. ofACM SIGPLAN Conferenceon Programming Language Design and Implementation.New York,USA: ACM Press,2009:465-478.

    [10] Byung-Sun Y,Junpyo E,SeungIl L,et al.Efficient Register Mapping and Allocation in LaTTe,An Open-Source Java Just-in-time Compiler[J].IEEE Transactions on Parallel and Distributed Systems,2007,18 (1):57-69.

    [11] Bebenita M,Brabdner F,Fahndrich M,et al.SPUR:A Trace-based JIT Compiler for CIL[R].Microsoft Corporation,Technical Report:MSR-TR-2010-27,2010.

    [12] Cramer T,Richard F R,Miler T.Compiling Java Just in Time[Z].1997.

    [13] Suganuma T,Yasue T,Nakatani T.A Region-based Compilation Technique for Dynamic Compilers[J]. ACM Transactions on Programming Languages and Systems,2006,28(1):134-174.

    [14] Gal A.Efficient Bytecode Verification and Compilation in a Virtual Machine[D].Long Beach,USA:University of California,2006.

    編輯 陸燕菲

    Optimization of Dalvik Based on Trace-combination and Register Allocation

    YU Chao-jun,LI Chun-qiang,SHANG Yun-hai,ZHANG Pei-yong
    (Institute of VLSI Design,Zhejiang University,Hangzhou 310027,China)

    As the basics of running application on Android system,performance of Dalvik virtual machine restricts the Android’s user experience.By researching Dalvik architecture in the Android system and analyzing some key techniques of the interpreter and Just in Time(JIT)module,it finds that short Trace’s compiler dissipation is large and there are some irrational situations on register allocation in JIT.Combining nowadays JVM technology with modern compiler technology,and based on the Trace selection strategy and register allocation mechanism of Dalvik,this paper proposes algorithms of combining Trace and optimizing strategy of register allocation.These algorithms are implemented in high performance embedded CPU CSKY architecture.The experiments prove that this Dalvik can improve the performance by about 10%.

    Dalvik virtual machine;Just in Time(JIT)technology;performance optimization;Trace-combination; register allocation;life cycle

    1000-3428(2014)10-0061-05

    A

    TP314

    10.3969/j.issn.1000-3428.2014.10.012

    國家自然科學(xué)基金資助項目(61204111);“核高基”重大專項(2010ZX01030-001-001-002)。

    余超君(1989-),男,碩士,主研方向:虛擬機(jī)技術(shù)與應(yīng)用;李春強(qiáng)、尚云海,碩士;張培勇,副教授、博士。

    2013-09-13

    2013-11-30E-mail:67146172@qq.com

    中文引用格式:余超君,李春強(qiáng),尚云海,等.基于Trace合并和寄存器分配的Dalvik優(yōu)化[J].計算機(jī)工程,2014, 40(10):61-65,70.

    英文引用格式:Yu Chaojun,Li Chunqiang,Shang Yunhai,et al.Optimization of Dalvik Based on Trace-combination and Register Allocation[J].Computer Engineering,2014,40(10):61-65,70.

    猜你喜歡
    寄存器分支內(nèi)存
    Lite寄存器模型的設(shè)計與實現(xiàn)
    巧分支與枝
    “春夏秋冬”的內(nèi)存
    一類擬齊次多項式中心的極限環(huán)分支
    分簇結(jié)構(gòu)向量寄存器分配策略研究*
    基于內(nèi)存的地理信息訪問技術(shù)
    生成分支q-矩陣的零流出性
    碩果累累
    高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
    一種可重構(gòu)線性反饋移位寄存器設(shè)計
    成人国产一区最新在线观看| 亚洲第一av免费看| 免费在线观看影片大全网站| 亚洲国产欧美网| 可以免费在线观看a视频的电影网站| 91国产中文字幕| 亚洲五月天丁香| or卡值多少钱| 淫秽高清视频在线观看| 岛国视频午夜一区免费看| 久久狼人影院| 日韩欧美国产一区二区入口| 丝袜在线中文字幕| 国产精品1区2区在线观看.| 777久久人妻少妇嫩草av网站| 亚洲一区二区三区不卡视频| 亚洲av中文字字幕乱码综合 | 国产av在哪里看| 男人舔女人下体高潮全视频| 麻豆成人av在线观看| 成人精品一区二区免费| 成人18禁高潮啪啪吃奶动态图| 亚洲成国产人片在线观看| 欧美中文日本在线观看视频| 可以在线观看的亚洲视频| 一个人免费在线观看的高清视频| 久久精品aⅴ一区二区三区四区| 99国产精品99久久久久| 中文字幕久久专区| 国产aⅴ精品一区二区三区波| 欧美另类亚洲清纯唯美| 国产视频内射| 国产成人一区二区三区免费视频网站| 国产真实乱freesex| av视频在线观看入口| 满18在线观看网站| 69av精品久久久久久| 视频区欧美日本亚洲| 国产av不卡久久| 国产精品一区二区三区四区久久 | 黑丝袜美女国产一区| 一二三四社区在线视频社区8| 久久精品影院6| 亚洲,欧美精品.| avwww免费| 午夜a级毛片| 色在线成人网| 久久国产乱子伦精品免费另类| 国产三级在线视频| 国产亚洲精品第一综合不卡| 精品久久久久久,| 一级a爱片免费观看的视频| 天天躁狠狠躁夜夜躁狠狠躁| 天天躁夜夜躁狠狠躁躁| av中文乱码字幕在线| 国产av在哪里看| 久久精品夜夜夜夜夜久久蜜豆 | 国产99久久九九免费精品| 天堂影院成人在线观看| 91老司机精品| av电影中文网址| 国产黄片美女视频| 999久久久国产精品视频| 黄色 视频免费看| 免费在线观看影片大全网站| 男人舔女人的私密视频| 日本五十路高清| 女人高潮潮喷娇喘18禁视频| 无遮挡黄片免费观看| 久久久久久九九精品二区国产 | 日本黄色视频三级网站网址| 夜夜看夜夜爽夜夜摸| 国产精品亚洲一级av第二区| 精品不卡国产一区二区三区| 动漫黄色视频在线观看| 动漫黄色视频在线观看| 久久久久久免费高清国产稀缺| 精品福利观看| 一级黄色大片毛片| 亚洲欧美精品综合一区二区三区| 麻豆成人av在线观看| 12—13女人毛片做爰片一| 老汉色∧v一级毛片| 一区二区三区激情视频| 国产一区二区三区视频了| 久久香蕉精品热| 国产高清视频在线播放一区| 国产精品影院久久| 此物有八面人人有两片| 亚洲国产精品999在线| 日韩成人在线观看一区二区三区| 美女免费视频网站| 国产主播在线观看一区二区| 91麻豆精品激情在线观看国产| 国产精品免费一区二区三区在线| 男女床上黄色一级片免费看| 久久精品夜夜夜夜夜久久蜜豆 | 超碰成人久久| 亚洲欧美精品综合一区二区三区| 国产亚洲av高清不卡| 亚洲成人久久性| 亚洲电影在线观看av| 99久久久亚洲精品蜜臀av| 国产av在哪里看| 中文字幕人成人乱码亚洲影| 精品乱码久久久久久99久播| 久久久久久久午夜电影| 国内毛片毛片毛片毛片毛片| 精品国产乱码久久久久久男人| 亚洲aⅴ乱码一区二区在线播放 | 嫩草影院精品99| 制服丝袜大香蕉在线| www.www免费av| 美女 人体艺术 gogo| 香蕉国产在线看| av福利片在线| 亚洲一区二区三区不卡视频| 中文字幕久久专区| 精品国产乱子伦一区二区三区| 看片在线看免费视频| 一本大道久久a久久精品| 免费无遮挡裸体视频| 亚洲一区二区三区色噜噜| 成人国产一区最新在线观看| 人人妻,人人澡人人爽秒播| 国产又色又爽无遮挡免费看| 男女做爰动态图高潮gif福利片| 国产三级黄色录像| 制服丝袜大香蕉在线| 成年人黄色毛片网站| 欧美丝袜亚洲另类 | 成人欧美大片| 欧美绝顶高潮抽搐喷水| 国产精品99久久99久久久不卡| 亚洲一区二区三区色噜噜| 巨乳人妻的诱惑在线观看| 久久婷婷人人爽人人干人人爱| 亚洲久久久国产精品| 欧美性猛交╳xxx乱大交人| a级毛片在线看网站| av福利片在线| 色综合欧美亚洲国产小说| 久久国产精品人妻蜜桃| 91九色精品人成在线观看| 欧美不卡视频在线免费观看 | 999精品在线视频| 久久国产乱子伦精品免费另类| 亚洲第一青青草原| 极品教师在线免费播放| 一边摸一边抽搐一进一小说| 国产成人一区二区三区免费视频网站| 国产精品久久电影中文字幕| 级片在线观看| 亚洲国产欧美网| 日韩精品中文字幕看吧| 欧美+亚洲+日韩+国产| 亚洲国产看品久久| 免费高清视频大片| 日日干狠狠操夜夜爽| 国产亚洲av嫩草精品影院| 国产视频内射| 亚洲在线自拍视频| 一本大道久久a久久精品| 99久久久亚洲精品蜜臀av| 美女午夜性视频免费| 成在线人永久免费视频| 中文字幕人妻熟女乱码| svipshipincom国产片| netflix在线观看网站| 国语自产精品视频在线第100页| 动漫黄色视频在线观看| 宅男免费午夜| 18美女黄网站色大片免费观看| av片东京热男人的天堂| 国产久久久一区二区三区| 亚洲欧美日韩高清在线视频| 亚洲国产精品合色在线| ponron亚洲| 在线观看一区二区三区| av有码第一页| 国产成人影院久久av| 成年女人毛片免费观看观看9| 怎么达到女性高潮| 老汉色∧v一级毛片| 久久国产乱子伦精品免费另类| 久久99热这里只有精品18| 成在线人永久免费视频| 给我免费播放毛片高清在线观看| 欧美日韩亚洲国产一区二区在线观看| 一级毛片精品| 国产免费男女视频| 亚洲欧美日韩无卡精品| a级毛片a级免费在线| 99在线视频只有这里精品首页| 中文字幕久久专区| 久久久久久人人人人人| 亚洲第一av免费看| 在线天堂中文资源库| 啪啪无遮挡十八禁网站| 桃色一区二区三区在线观看| 久久热在线av| 少妇熟女aⅴ在线视频| 日韩欧美国产一区二区入口| 美女高潮喷水抽搐中文字幕| 日韩av在线大香蕉| 99热6这里只有精品| 久久久久精品国产欧美久久久| 91九色精品人成在线观看| 欧美日韩黄片免| 美女免费视频网站| 久久久久久久午夜电影| 亚洲五月天丁香| 丝袜在线中文字幕| 777久久人妻少妇嫩草av网站| 自线自在国产av| 在线免费观看的www视频| 亚洲国产精品成人综合色| 国产色视频综合| 国产日本99.免费观看| 夜夜躁狠狠躁天天躁| 老司机深夜福利视频在线观看| 日韩免费av在线播放| 免费av毛片视频| 在线国产一区二区在线| 国产熟女xx| 丝袜在线中文字幕| 精品国产美女av久久久久小说| 久久亚洲真实| 欧美黄色淫秽网站| 国产激情偷乱视频一区二区| 在线观看66精品国产| 波多野结衣高清无吗| 1024香蕉在线观看| 狠狠狠狠99中文字幕| bbb黄色大片| 精品国产乱子伦一区二区三区| 在线观看www视频免费| 日韩欧美一区二区三区在线观看| 免费观看人在逋| 99久久国产精品久久久| 成人一区二区视频在线观看| 亚洲熟女毛片儿| 日韩视频一区二区在线观看| 在线观看免费午夜福利视频| 日本一本二区三区精品| 777久久人妻少妇嫩草av网站| 日韩 欧美 亚洲 中文字幕| 中文字幕另类日韩欧美亚洲嫩草| 免费在线观看黄色视频的| 免费观看精品视频网站| 18禁观看日本| or卡值多少钱| 国产亚洲欧美精品永久| 久久久久免费精品人妻一区二区 | 亚洲片人在线观看| 欧美成人性av电影在线观看| 老司机福利观看| 一本综合久久免费| 精品久久久久久,| 99国产综合亚洲精品| 18禁黄网站禁片午夜丰满| 成人精品一区二区免费| 伊人久久大香线蕉亚洲五| 国产黄a三级三级三级人| 久久性视频一级片| 欧美日韩亚洲国产一区二区在线观看| 国产亚洲精品综合一区在线观看 | 婷婷精品国产亚洲av在线| 亚洲熟妇中文字幕五十中出| 国产真实乱freesex| 日日爽夜夜爽网站| 亚洲成人久久性| 国产精品二区激情视频| 免费看十八禁软件| 在线播放国产精品三级| 曰老女人黄片| 亚洲精品久久成人aⅴ小说| 国产精品 国内视频| 国产人伦9x9x在线观看| 美女国产高潮福利片在线看| 18禁黄网站禁片免费观看直播| 免费女性裸体啪啪无遮挡网站| 成人国语在线视频| 欧美日韩瑟瑟在线播放| av在线播放免费不卡| 国产成人精品久久二区二区91| 人妻久久中文字幕网| 曰老女人黄片| 亚洲精品久久成人aⅴ小说| 亚洲aⅴ乱码一区二区在线播放 | 高清在线国产一区| 黄色成人免费大全| 丰满的人妻完整版| 最近最新免费中文字幕在线| 伦理电影免费视频| 在线观看www视频免费| 亚洲久久久国产精品| 99精品久久久久人妻精品| 脱女人内裤的视频| 午夜福利在线在线| 午夜亚洲福利在线播放| 欧美中文日本在线观看视频| 91在线观看av| av中文乱码字幕在线| 免费高清在线观看日韩| 国内精品久久久久久久电影| 国产精品野战在线观看| 日韩精品青青久久久久久| a级毛片a级免费在线| 久99久视频精品免费| 国产激情偷乱视频一区二区| 国产精品影院久久| 亚洲狠狠婷婷综合久久图片| 97超级碰碰碰精品色视频在线观看| 久久精品国产综合久久久| 91成人精品电影| 欧美zozozo另类| 亚洲国产中文字幕在线视频| 亚洲精品一卡2卡三卡4卡5卡| 日本精品一区二区三区蜜桃| 欧美日韩一级在线毛片| 国产激情欧美一区二区| 18禁观看日本| 黄色视频,在线免费观看| 国产v大片淫在线免费观看| 久久久久国产精品人妻aⅴ院| 一区福利在线观看| 久久性视频一级片| 日日夜夜操网爽| 自线自在国产av| 亚洲av电影在线进入| 18禁黄网站禁片午夜丰满| 9191精品国产免费久久| 国产又爽黄色视频| 麻豆av在线久日| 淫妇啪啪啪对白视频| 国产精品综合久久久久久久免费| 露出奶头的视频| 精品久久蜜臀av无| 日本成人三级电影网站| www.999成人在线观看| 国产av又大| 在线国产一区二区在线| 精品国产一区二区三区四区第35| 在线观看午夜福利视频| 亚洲 欧美一区二区三区| 亚洲全国av大片| 91av网站免费观看| 国产片内射在线| 久久婷婷成人综合色麻豆| 成年版毛片免费区| 国产一卡二卡三卡精品| 可以在线观看的亚洲视频| 一区二区三区国产精品乱码| 18禁黄网站禁片免费观看直播| 一本久久中文字幕| 中文字幕高清在线视频| 在线观看一区二区三区| 最近最新免费中文字幕在线| 看免费av毛片| 亚洲国产毛片av蜜桃av| 俺也久久电影网| 精品国产国语对白av| 18禁黄网站禁片免费观看直播| 夜夜爽天天搞| 看片在线看免费视频| 午夜a级毛片| 一边摸一边抽搐一进一小说| 真人做人爱边吃奶动态| 色在线成人网| 久久久久九九精品影院| 9191精品国产免费久久| 久久婷婷人人爽人人干人人爱| 日本一区二区免费在线视频| 天天一区二区日本电影三级| 亚洲男人天堂网一区| 午夜激情福利司机影院| 老熟妇乱子伦视频在线观看| 啦啦啦 在线观看视频| 久久久久久亚洲精品国产蜜桃av| 免费无遮挡裸体视频| 国产av不卡久久| 可以免费在线观看a视频的电影网站| 在线观看免费视频日本深夜| 黑丝袜美女国产一区| 在线播放国产精品三级| 亚洲全国av大片| 亚洲国产精品成人综合色| 中文字幕久久专区| 午夜福利欧美成人| 最近在线观看免费完整版| 天天一区二区日本电影三级| 亚洲久久久国产精品| 国产亚洲欧美98| 国产亚洲av高清不卡| 亚洲性夜色夜夜综合| 丰满人妻熟妇乱又伦精品不卡| 自线自在国产av| 亚洲精品久久国产高清桃花| 亚洲中文日韩欧美视频| 久久精品夜夜夜夜夜久久蜜豆 | 亚洲熟妇中文字幕五十中出| 可以免费在线观看a视频的电影网站| 亚洲国产高清在线一区二区三 | 91麻豆av在线| 国产一级毛片七仙女欲春2 | 国产成+人综合+亚洲专区| 18禁观看日本| 免费人成视频x8x8入口观看| 国产精品野战在线观看| 草草在线视频免费看| 18禁黄网站禁片午夜丰满| 国产精品国产高清国产av| 久久香蕉国产精品| 久久伊人香网站| 成人国产一区最新在线观看| 麻豆av在线久日| 久久精品亚洲精品国产色婷小说| 在线免费观看的www视频| 国产成人一区二区三区免费视频网站| 亚洲人成网站在线播放欧美日韩| 成人免费观看视频高清| 黄色丝袜av网址大全| 男人舔女人的私密视频| 国内毛片毛片毛片毛片毛片| 午夜免费鲁丝| 午夜免费成人在线视频| 久久久久九九精品影院| 免费一级毛片在线播放高清视频| 12—13女人毛片做爰片一| 两个人视频免费观看高清| 欧美中文综合在线视频| 亚洲欧美精品综合一区二区三区| 国产一卡二卡三卡精品| 狂野欧美激情性xxxx| 亚洲专区国产一区二区| 久久久国产欧美日韩av| 看黄色毛片网站| 午夜成年电影在线免费观看| 啪啪无遮挡十八禁网站| 日韩精品青青久久久久久| 一个人免费在线观看的高清视频| 麻豆国产av国片精品| 黄色毛片三级朝国网站| 黄色成人免费大全| 久久婷婷成人综合色麻豆| 国产精品日韩av在线免费观看| 久久久久精品国产欧美久久久| av天堂在线播放| 精品欧美国产一区二区三| 亚洲色图av天堂| 嫩草影院精品99| 精品一区二区三区av网在线观看| 国产精品久久久av美女十八| 国产国语露脸激情在线看| 亚洲三区欧美一区| 免费人成视频x8x8入口观看| netflix在线观看网站| 首页视频小说图片口味搜索| 精品欧美国产一区二区三| 国产乱人伦免费视频| 91成年电影在线观看| 制服人妻中文乱码| 国产不卡一卡二| 99久久精品国产亚洲精品| 妹子高潮喷水视频| 91成年电影在线观看| 成人18禁高潮啪啪吃奶动态图| 日韩 欧美 亚洲 中文字幕| 日本撒尿小便嘘嘘汇集6| 亚洲一区二区三区色噜噜| cao死你这个sao货| 国产亚洲精品综合一区在线观看 | 国产一卡二卡三卡精品| 91麻豆av在线| 丁香欧美五月| 精品欧美一区二区三区在线| 亚洲专区中文字幕在线| 成人手机av| 亚洲色图av天堂| 久久国产乱子伦精品免费另类| 日韩高清综合在线| 欧美日韩精品网址| 免费看美女性在线毛片视频| 丁香六月欧美| 岛国视频午夜一区免费看| 精品久久久久久成人av| 91成人精品电影| 亚洲人成伊人成综合网2020| 少妇粗大呻吟视频| 成人手机av| 亚洲专区国产一区二区| 99国产精品一区二区蜜桃av| 91九色精品人成在线观看| 露出奶头的视频| 国内精品久久久久精免费| av欧美777| 可以免费在线观看a视频的电影网站| 悠悠久久av| 在线观看免费日韩欧美大片| 777久久人妻少妇嫩草av网站| 两个人视频免费观看高清| 美国免费a级毛片| 视频区欧美日本亚洲| 91大片在线观看| 久久精品国产亚洲av香蕉五月| 精品午夜福利视频在线观看一区| 精品人妻1区二区| 国产极品粉嫩免费观看在线| 丝袜在线中文字幕| 大香蕉久久成人网| 一二三四在线观看免费中文在| 性色av乱码一区二区三区2| 女人爽到高潮嗷嗷叫在线视频| 亚洲精品粉嫩美女一区| 淫妇啪啪啪对白视频| 亚洲av美国av| 欧美大码av| 久久婷婷人人爽人人干人人爱| 国产亚洲欧美精品永久| 日本免费一区二区三区高清不卡| 真人一进一出gif抽搐免费| 一级黄色大片毛片| 99久久无色码亚洲精品果冻| 国产亚洲精品av在线| 亚洲无线在线观看| 丁香六月欧美| АⅤ资源中文在线天堂| 法律面前人人平等表现在哪些方面| 欧美在线黄色| 特大巨黑吊av在线直播 | 日本一区二区免费在线视频| 日韩欧美 国产精品| 亚洲色图 男人天堂 中文字幕| 久久精品91蜜桃| 久久性视频一级片| 黄网站色视频无遮挡免费观看| 18美女黄网站色大片免费观看| 黄色成人免费大全| 国产成人精品无人区| 无限看片的www在线观看| 久久人妻福利社区极品人妻图片| 美国免费a级毛片| 少妇裸体淫交视频免费看高清 | 99精品久久久久人妻精品| 欧美日韩黄片免| 后天国语完整版免费观看| 麻豆久久精品国产亚洲av| 国产欧美日韩一区二区精品| 不卡一级毛片| 久9热在线精品视频| 国内少妇人妻偷人精品xxx网站 | 免费看a级黄色片| 最近在线观看免费完整版| 在线观看66精品国产| 精品久久久久久久末码| 婷婷精品国产亚洲av| 午夜福利在线观看吧| 久热爱精品视频在线9| 亚洲精品中文字幕一二三四区| 99国产精品一区二区三区| 狠狠狠狠99中文字幕| 亚洲av五月六月丁香网| 俺也久久电影网| 少妇粗大呻吟视频| 亚洲一卡2卡3卡4卡5卡精品中文| 亚洲精品在线美女| 国产av又大| 午夜视频精品福利| 欧美日韩福利视频一区二区| 韩国精品一区二区三区| 在线看三级毛片| 最好的美女福利视频网| av福利片在线| 国产av在哪里看| 可以免费在线观看a视频的电影网站| 亚洲国产精品sss在线观看| 亚洲精品国产一区二区精华液| 一区福利在线观看| 国产片内射在线| 欧美黑人欧美精品刺激| 国产激情欧美一区二区| 视频区欧美日本亚洲| 亚洲国产日韩欧美精品在线观看 | 视频在线观看一区二区三区| 久久香蕉精品热| 一本一本综合久久| 12—13女人毛片做爰片一| 99久久国产精品久久久| 午夜免费成人在线视频| 久久久久久亚洲精品国产蜜桃av| 国产一区在线观看成人免费| 伦理电影免费视频| 国产私拍福利视频在线观看| 亚洲男人的天堂狠狠| 久久精品夜夜夜夜夜久久蜜豆 | 久久性视频一级片| 国产高清视频在线播放一区| av片东京热男人的天堂| 日韩 欧美 亚洲 中文字幕| 亚洲欧洲精品一区二区精品久久久| 国产精品一区二区三区四区久久 | 嫩草影视91久久| 国产v大片淫在线免费观看| 午夜a级毛片| 久久国产精品人妻蜜桃| 19禁男女啪啪无遮挡网站| 一本综合久久免费| 亚洲五月天丁香| 免费在线观看影片大全网站| 国产成人一区二区三区免费视频网站| 日韩成人在线观看一区二区三区| 成人18禁在线播放| 国产精品二区激情视频| 人人妻人人看人人澡|