精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Go中對(duì)棧中函數(shù)進(jìn)行內(nèi)聯(lián)

開(kāi)發(fā) 后端
上一篇文章中我論述了葉子內(nèi)聯(lián)是怎樣讓 Go 編譯器減少函數(shù)調(diào)用的開(kāi)銷(xiāo)的,以及延伸出了跨函數(shù)邊界的優(yōu)化的機(jī)會(huì)。本文中,我要論述內(nèi)聯(lián)的限制以及葉子內(nèi)聯(lián)與棧中內(nèi)聯(lián)的對(duì)比。

[[324898]]

上一篇文章中我論述了葉子內(nèi)聯(lián)leaf inlining是怎樣讓 Go 編譯器減少函數(shù)調(diào)用的開(kāi)銷(xiāo)的,以及延伸出了跨函數(shù)邊界的優(yōu)化的機(jī)會(huì)。本文中,我要論述內(nèi)聯(lián)的限制以及葉子內(nèi)聯(lián)與棧中內(nèi)聯(lián)mid-stack inlining的對(duì)比。

內(nèi)聯(lián)的限制

把函數(shù)內(nèi)聯(lián)到它的調(diào)用處消除了調(diào)用的開(kāi)銷(xiāo),為編譯器進(jìn)行其他的優(yōu)化提供了更好的機(jī)會(huì),那么問(wèn)題來(lái)了,既然內(nèi)聯(lián)這么好,內(nèi)聯(lián)得越多開(kāi)銷(xiāo)就越少,為什么不盡可能多地內(nèi)聯(lián)呢?

內(nèi)聯(lián)可能會(huì)以增加程序大小換來(lái)更快的執(zhí)行時(shí)間。限制內(nèi)聯(lián)的最主要原因是,創(chuàng)建許多函數(shù)的內(nèi)聯(lián)副本會(huì)增加編譯時(shí)間,并導(dǎo)致生成更大的二進(jìn)制文件的邊際效應(yīng)。即使把內(nèi)聯(lián)帶來(lái)的進(jìn)一步的優(yōu)化機(jī)會(huì)考慮在內(nèi),太激進(jìn)的內(nèi)聯(lián)也可能會(huì)增加生成的二進(jìn)制文件的大小和編譯時(shí)間。

內(nèi)聯(lián)收益最大的是小函數(shù),相對(duì)于調(diào)用它們的開(kāi)銷(xiāo)來(lái)說(shuō),這些函數(shù)做很少的工作。隨著函數(shù)大小的增長(zhǎng),函數(shù)內(nèi)部做的工作與函數(shù)調(diào)用的開(kāi)銷(xiāo)相比省下的時(shí)間越來(lái)越少。函數(shù)越大通常越復(fù)雜,因此優(yōu)化其內(nèi)聯(lián)形式相對(duì)于原地優(yōu)化的好處會(huì)減少。

內(nèi)聯(lián)預(yù)算

在編譯過(guò)程中,每個(gè)函數(shù)的內(nèi)聯(lián)能力是用內(nèi)聯(lián)預(yù)算計(jì)算的 1。開(kāi)銷(xiāo)的計(jì)算過(guò)程可以巧妙地內(nèi)化,像一元和二元等簡(jiǎn)單操作,在抽象語(yǔ)法數(shù)Abstract Syntax Tree(AST)中通常是每個(gè)節(jié)點(diǎn)一個(gè)單位,更復(fù)雜的操作如 make 可能單位更多。考慮下面的例子:

  1. package main
  2.  
  3. func small() string {
  4. s := "hello, " + "world!"
  5. return s
  6. }
  7.  
  8. func large() string {
  9. s := "a"
  10. s += "b"
  11. s += "c"
  12. s += "d"
  13. s += "e"
  14. s += "f"
  15. s += "g"
  16. s += "h"
  17. s += "i"
  18. s += "j"
  19. s += "k"
  20. s += "l"
  21. s += "m"
  22. s += "n"
  23. s += "o"
  24. s += "p"
  25. s += "q"
  26. s += "r"
  27. s += "s"
  28. s += "t"
  29. s += "u"
  30. s += "v"
  31. s += "w"
  32. s += "x"
  33. s += "y"
  34. s += "z"
  35. return s
  36. }
  37.  
  38. func main() {
  39. small()
  40. large()
  41. }

使用 -gcflags=-m=2 參數(shù)編譯這個(gè)函數(shù)能讓我們看到編譯器分配給每個(gè)函數(shù)的開(kāi)銷(xiāo):

  1. % go build -gcflags=-m=2 inl.go
  2. # command-line-arguments
  3. ./inl.go:3:6: can inline small with cost 7 as: func() string { s := "hello, world!"; return s }
  4. ./inl.go:8:6: cannot inline large: function too complex: cost 82 exceeds budget 80
  5. ./inl.go:38:6: can inline main with cost 68 as: func() { small(); large() }
  6. ./inl.go:39:7: inlining call to small func() string { s := "hello, world!"; return s }

編譯器根據(jù)函數(shù) func small() 的開(kāi)銷(xiāo)(7)決定可以對(duì)它內(nèi)聯(lián),而 func large() 的開(kāi)銷(xiāo)太大,編譯器決定不進(jìn)行內(nèi)聯(lián)。func main() 被標(biāo)記為適合內(nèi)聯(lián)的,分配了 68 的開(kāi)銷(xiāo);其中 small 占用 7,調(diào)用 small 函數(shù)占用 57,剩余的(4)是它自己的開(kāi)銷(xiāo)。

可以用 -gcflag=-l 參數(shù)控制內(nèi)聯(lián)預(yù)算的等級(jí)。下面是可使用的值:

  • -gcflags=-l=0 默認(rèn)的內(nèi)聯(lián)等級(jí)。
  • -gcflags=-l(或 -gcflags=-l=1)取消內(nèi)聯(lián)。
  • -gcflags=-l=2-gcflags=-l=3 現(xiàn)在已經(jīng)不使用了。和 -gcflags=-l=0 相比沒(méi)有區(qū)別。
  • -gcflags=-l=4 減少非葉子函數(shù)和通過(guò)接口調(diào)用的函數(shù)的開(kāi)銷(xiāo)。2

不確定語(yǔ)句的優(yōu)化

一些函數(shù)雖然內(nèi)聯(lián)的開(kāi)銷(xiāo)很小,但由于太復(fù)雜它們?nèi)圆贿m合進(jìn)行內(nèi)聯(lián)。這就是函數(shù)的不確定性,因?yàn)橐恍┎僮鞯恼Z(yǔ)義在內(nèi)聯(lián)后很難去推導(dǎo),如 recover、break。其他的操作,如 selectgo 涉及運(yùn)行時(shí)的協(xié)調(diào),因此內(nèi)聯(lián)后引入的額外的開(kāi)銷(xiāo)不能抵消內(nèi)聯(lián)帶來(lái)的收益。

不確定的語(yǔ)句也包括 forrange,這些語(yǔ)句不一定開(kāi)銷(xiāo)很大,但目前為止還沒(méi)有對(duì)它們進(jìn)行優(yōu)化。

棧中函數(shù)優(yōu)化

在過(guò)去,Go 編譯器只對(duì)葉子函數(shù)進(jìn)行內(nèi)聯(lián) —— 只有那些不調(diào)用其他函數(shù)的函數(shù)才有資格。在上一段不確定的語(yǔ)句的探討內(nèi)容中,一次函數(shù)調(diào)用就會(huì)讓這個(gè)函數(shù)失去內(nèi)聯(lián)的資格。

進(jìn)入棧中進(jìn)行內(nèi)聯(lián),就像它的名字一樣,能內(nèi)聯(lián)在函數(shù)調(diào)用棧中間的函數(shù),不需要先讓它下面的所有的函數(shù)都被標(biāo)記為有資格內(nèi)聯(lián)的。棧中內(nèi)聯(lián)是 David Lazar 在 Go 1.9 中引入的,并在隨后的版本中做了改進(jìn)。這篇文稿深入探究了保留棧追蹤行為和被深度內(nèi)聯(lián)后的代碼路徑里的 runtime.Callers 的難點(diǎn)。

在前面的例子中我們看到了棧中函數(shù)內(nèi)聯(lián)。內(nèi)聯(lián)后,func main() 包含了 func small() 的函數(shù)體和對(duì) func large() 的一次調(diào)用,因此它被判定為非葉子函數(shù)。在過(guò)去,這會(huì)阻止它被繼續(xù)內(nèi)聯(lián),雖然它的聯(lián)合開(kāi)銷(xiāo)小于內(nèi)聯(lián)預(yù)算。

棧中內(nèi)聯(lián)的最主要的應(yīng)用案例就是減少貫穿函數(shù)調(diào)用棧的開(kāi)銷(xiāo)??紤]下面的例子:

  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "strconv"
  6. )
  7.  
  8. type Rectangle struct {}
  9.  
  10. //go:noinline
  11. func (r *Rectangle) Height() int {
  12. h, _ := strconv.ParseInt("7", 10, 0)
  13. return int(h)
  14. }
  15.  
  16. func (r *Rectangle) Width() int {
  17. return 6
  18. }
  19.  
  20. func (r *Rectangle) Area() int { return r.Height() * r.Width() }
  21.  
  22. func main() {
  23. var r Rectangle
  24. fmt.Println(r.Area())
  25. }

在這個(gè)例子中, r.Area() 是個(gè)簡(jiǎn)單的函數(shù),調(diào)用了兩個(gè)函數(shù)。r.Width() 可以被內(nèi)聯(lián),r.Height() 這里用 //go:noinline 指令標(biāo)注了,不能被內(nèi)聯(lián)。3

  1. % go build -gcflags='-m=2' square.go
  2. # command-line-arguments
  3. ./square.go:12:6: cannot inline (*Rectangle).Height: marked go:noinline
  4. ./square.go:17:6: can inline (*Rectangle).Width with cost 2 as: method(*Rectangle) func() int { return 6 }
  5. ./square.go:21:6: can inline (*Rectangle).Area with cost 67 as: method(*Rectangle) func() int { return r.Height() * r.Width() }
  6. ./square.go:21:61: inlining call to (*Rectangle).Width method(*Rectangle) func() int { return 6 }
  7. ./square.go:23:6: cannot inline main: function too complex: cost 150 exceeds budget 80
  8. ./square.go:25:20: inlining call to (*Rectangle).Area method(*Rectangle) func() int { return r.Height() * r.Width() }
  9. ./square.go:25:20: inlining call to (*Rectangle).Width method(*Rectangle) func() int { return 6 }

由于 r.Area() 中的乘法與調(diào)用它的開(kāi)銷(xiāo)相比并不大,因此內(nèi)聯(lián)它的表達(dá)式是純收益,即使它的調(diào)用的下游 r.Height() 仍是沒(méi)有內(nèi)聯(lián)資格的。

快速路徑內(nèi)聯(lián)

關(guān)于棧中內(nèi)聯(lián)的效果最令人吃驚的例子是 2019 年 Carlo Alberto Ferraris 通過(guò)允許把 sync.Mutex.Lock() 的快速路徑(非競(jìng)爭(zhēng)的情況)內(nèi)聯(lián)到它的調(diào)用方來(lái)提升它的性能。在這個(gè)修改之前,sync.Mutex.Lock() 是個(gè)很大的函數(shù),包含很多難以理解的條件,使得它沒(méi)有資格被內(nèi)聯(lián)。即使鎖可用時(shí),調(diào)用者也要付出調(diào)用 sync.Mutex.Lock() 的代價(jià)。

Carlo 把 sync.Mutex.Lock() 分成了兩個(gè)函數(shù)(他自己稱(chēng)為外聯(lián)outlining)。外部的 sync.Mutex.Lock() 方法現(xiàn)在調(diào)用 sync/atomic.CompareAndSwapInt32() 且如果 CAS(比較并交換Compare and Swap)成功了之后立即返回給調(diào)用者。如果 CAS 失敗,函數(shù)會(huì)走到 sync.Mutex.lockSlow() 慢速路徑,需要對(duì)鎖進(jìn)行注冊(cè),暫停 goroutine。4

  1. % go build -gcflags='-m=2 -l=0' sync 2>&1 | grep '(*Mutex).Lock'
  2. ../go/src/sync/mutex.go:72:6: can inline (*Mutex).Lock with cost 69 as: method(*Mutex) func() { if "sync/atomic".CompareAndSwapInt32(&m.state, 0, mutexLocked) { if race.Enabled { }; return }; m.lockSlow() }

通過(guò)把函數(shù)分割成一個(gè)簡(jiǎn)單的不能再被分割的外部函數(shù),和(如果沒(méi)走到外部函數(shù)就走到的)一個(gè)處理慢速路徑的復(fù)雜的內(nèi)部函數(shù),Carlo 組合了棧中函數(shù)內(nèi)聯(lián)和編譯器對(duì)基礎(chǔ)操作的支持,減少了非競(jìng)爭(zhēng)鎖 14% 的開(kāi)銷(xiāo)。之后他在 sync.RWMutex.Unlock() 重復(fù)這個(gè)技巧,節(jié)省了另外 9% 的開(kāi)銷(xiāo)。 

責(zé)任編輯:龐桂玉 來(lái)源: Linux中國(guó)
相關(guān)推薦

2020-05-06 18:53:23

Go編程語(yǔ)言

2021-11-08 10:58:08

變量依賴(lài)圖排序

2021-10-18 09:08:27

Go分段棧連續(xù)棧

2022-06-09 10:42:47

GoJSON

2023-11-20 09:57:03

內(nèi)聯(lián)函數(shù)C++

2021-01-20 16:26:17

Go編程語(yǔ)言

2010-05-10 14:33:11

Oracle proc

2023-10-23 19:27:21

Go函數(shù)

2023-06-06 16:10:11

2010-01-20 17:48:07

C++ 函數(shù)重載

2021-09-15 07:56:33

函數(shù)類(lèi)型Go

2009-01-03 14:39:00

ibmdwXML

2016-12-08 15:12:24

GnupgLinux加密

2010-05-12 10:00:34

網(wǎng)線(xiàn)布線(xiàn)測(cè)試

2018-11-05 14:53:14

Go函數(shù)代碼

2022-01-10 07:57:25

Linux 插樁Linux 系統(tǒng)

2011-06-21 11:05:41

內(nèi)聯(lián)函數(shù)

2021-11-04 05:43:38

GoKartGo代碼靜態(tài)安全分析

2010-05-07 16:50:42

Oracle trun

2010-09-08 17:11:29

CSS塊元素CSS內(nèi)聯(lián)元素
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

天天干天天摸天天操| 免费在线一级片| 婷婷丁香久久| 亚洲永久精品国产| 久久久久高清| 夜夜爽8888| 在线播放不卡| 色天天综合狠狠色| 国产a级黄色片| 久久电影天堂| 午夜精品久久久| 亚洲一区二区三区四区中文| 欧美 日韩 国产 在线| 日韩影院免费视频| 欧美国产日韩一区二区三区| 91视频免费在观看| 国产伦精品一区二区三区在线播放 | 国产一区久久精品| av午夜精品一区二区三区| 国产免费观看久久黄| 精品成人免费视频| 久久久久久久久久久久久久| 亚洲欧美激情四射在线日| 天天久久综合网| 黄色成人在线视频| 欧美日韩亚洲91| 国产乱子伦精品无码专区| 欧美人xxx| 国产女人18毛片水真多成人如厕| 国产伦精品一区二区三区照片91| 国产乱色精品成人免费视频| 日韩精品成人一区二区在线| 91精品国产精品| 久久久久久久久97| 外国成人免费视频| 国产亚洲一区精品| 美女脱光内衣内裤| 亚洲综合色婷婷在线观看| 欧美性受极品xxxx喷水| 国产亚洲精品网站| 97超碰免费在线| 亚洲午夜久久久久久久久久久| 中文字幕中文字幕一区三区| 成人av毛片| 国产婷婷一区二区| 日韩av电影免费在线观看| 亚洲色图另类小说| 99久久精品费精品国产一区二区| 粉嫩av一区二区三区免费观看| 国产福利资源在线| 国产精品自产自拍| 91热福利电影| 国产黄色大片网站| 国产精品66部| 超碰97在线资源| 99久久精品无免国产免费| 国产一区二区在线看| 亚洲在线www| 亚洲免费国产视频| caoporn国产精品| 久久亚洲国产精品日日av夜夜| 熟妇高潮一区二区三区| 99国产精品国产精品久久| 精品欧美国产一区二区三区不卡| 深夜福利在线看| 91蜜桃免费观看视频| 日韩av图片| 日本亚洲精品| 亚洲另类春色国产| 免费毛片网站在线观看| 欧美性xxx| 欧美日韩综合在线| 国产高清999| 国产精品久av福利在线观看| 日韩成人av网址| 免费在线观看a视频| 久久精品国产亚洲夜色av网站| 俺去了亚洲欧美日韩| 青草草在线视频| 在线观看日韩av电影| 欧美中文字幕在线观看| 日韩久久久久久久久久| 国产精品一区二区在线观看网站| 国产亚洲欧美另类一区二区三区| 欧洲亚洲在线| 一区在线观看视频| 精品国产一区二区三区无码| 在线天堂新版最新版在线8| 欧美日韩中文一区| 亚洲熟女乱综合一区二区| 欧美影院天天5g天天爽| 色妞一区二区三区| 日韩伦理在线视频| 久久国产精品免费| 国内一区在线| 男人在线资源站| 欧美日韩国产色视频| 毛片毛片毛片毛| 欧美电影免费网站| 理论片在线不卡免费观看| 好吊操这里只有精品| 久久精品国产秦先生| 韩国一区二区三区美女美女秀 | 国产精品色在线观看| 久久久无码中文字幕久...| 久久男人天堂| 欧美一级高清片在线观看| 波多野结衣办公室33分钟| 中国精品18videos性欧美| 国产成人激情小视频| www.五月婷婷| 国产精品免费人成网站| 丰满爆乳一区二区三区| 综合久久伊人| 亚洲最新av在线| 久久国产视频播放| 国产经典欧美精品| 亚洲自拍三区| 台湾佬中文娱乐网欧美电影| 日韩视频免费观看高清在线视频| 成人在线观看免费高清| 亚洲综合不卡| 国产日韩欧美精品| 欧美日韩在线视频免费观看| 欧美日韩一区二区三区不卡| 好吊视频在线观看| 国产欧美亚洲一区| 高清视频在线观看一区| 一级毛片视频在线观看| 欧美中文字幕不卡| 久久精品国产亚洲av久| 国产日韩欧美在线播放不卡| av电影成人| 在线不卡日本v二区707| 在线综合+亚洲+欧美中文字幕| 中文字幕一二三四区| 一区二区日韩免费看| 国产伦精品一区二区三毛| 新版中文在线官网| 欧美一区二区三区白人| 国产少妇在线观看| 韩国v欧美v亚洲v日本v| 成年人黄色在线观看| 日韩成人在线一区| www亚洲欧美| 一区不卡在线观看| 国产精品国模大尺度视频| 99sesese| 国产精品久久久久久久| 成人网中文字幕| 国产剧情在线| 日韩欧美www| 精品一区二区三区四| 国产999精品久久久久久绿帽| 妺妺窝人体色www看人体| 人人九九精品视频| 欧美激情免费视频| 亚州av在线播放| 日韩欧美中文字幕在线播放| 51妺嘿嘿午夜福利| 久久精品av麻豆的观看方式| 正义之心1992免费观看全集完整版| 少妇高潮一区二区三区99| 久久国产精品久久国产精品| 国产高清精品软件丝瓜软件| 亚洲图片欧美色图| 51调教丨国产调教视频| 青青草原综合久久大伊人精品优势 | 亚洲爱情岛论坛永久| 一区二区三区**美女毛片| av免费观看不卡| 噜噜噜在线观看免费视频日韩| 欧美一区二区在线视频观看| 久久精品97| 欧美xxxx做受欧美.88| 日本国产在线观看| 91国产福利在线| 久久嫩草捆绑紧缚| 国产91在线观看丝袜| 国产91在线免费| 91综合久久| 国产精品国产精品国产专区不卡| 美女搞黄视频在线观看| 中文字幕亚洲综合久久筱田步美| 99久久夜色精品国产亚洲| 亚洲国产aⅴ成人精品无吗| 手机av免费看| 国产精品一区久久久久| 欧美极品欧美精品欧美图片| 国产精品99在线观看| 国产富婆一区二区三区| 国产精品高清乱码在线观看| 久久国产精品首页| 免费在线视频你懂得| 91精品国产综合久久久久| 日韩特级黄色片| 综合久久给合久久狠狠狠97色| 国产免费a级片| 免费在线成人网| 欧美一区二区中文字幕| 97精品国产福利一区二区三区| 精品无人区一区二区三区| 欧美一区二区三区婷婷| 2020国产精品视频| av免费在线观| 日韩中文字幕精品| 日韩大片b站免费观看直播| 日韩精品一区二区三区四区视频| 手机av免费观看| 五月天一区二区| 欧美人禽zoz0强交| 国产精品嫩草影院av蜜臀| bl动漫在线观看| 国产成人精品亚洲日本在线桃色| 丰满少妇在线观看| 国内精品久久久久久久97牛牛 | 亚洲黄色中文字幕| 欧美高清在线观看| 精品黄色免费中文电影在线播放| 亚洲免费人成在线视频观看| 成人午夜免费福利| 欧美一区二区三区视频免费| 中文字幕av影视| 欧美午夜电影在线| 久久草视频在线| 亚洲第一久久影院| 欧美成人免费观看视频| 亚洲色图都市小说| 少妇高潮惨叫久久久久| 国产午夜一区二区三区| 丰满少妇一区二区| 久久综合九色综合欧美亚洲| 中国极品少妇videossexhd| 国产99精品国产| 亚洲美女精品视频| 国产高清亚洲一区| 性生活在线视频| 国产精选一区二区三区| 五月天开心婷婷| 国产一区二区三区蝌蚪| 成年人网站av| 国产精品自拍一区| 中文字幕乱妇无码av在线| 国产在线精品免费| 涩多多在线观看| 国产一区二区精品在线观看| 三级黄色片免费观看| 国产一区二区三区黄视频 | 久久视频中文字幕| 米奇精品一区二区三区| 久久精品在线播放| 手机av免费在线| 国语自产精品视频在线看抢先版图片 | 天天操天天爽天天射| 麻豆国产91在线播放| 在线能看的av网站| 国产精品影视在线观看| 绯色av蜜臀vs少妇| 成人a区在线观看| 风间由美一二三区av片| 国产欧美视频一区二区三区| 成人18视频免费69| 亚洲精品免费电影| 亚洲国产精品午夜在线观看| 欧美午夜激情在线| 免费看av在线| 日韩欧美一区二区视频| 色一情一乱一乱一区91av| 精品一区二区三区电影| 成人激情电影在线看| 萌白酱国产一区二区| 超碰在线公开| 国产精品久久久久影院日本| 电影91久久久| 久久爱av电影| 日韩在线观看一区| 嫩草影院中文字幕| 久久亚洲二区| 国产探花在线观看视频| av不卡在线播放| 天堂在线中文视频| 亚洲最新在线观看| 无码人妻丰满熟妇区bbbbxxxx| 欧美精品一二三四| 天天干天天操av| 日韩在线视频免费观看高清中文| sm国产在线调教视频| 91精品国产乱码久久久久久蜜臀| 日韩在线你懂得| 精品欧美一区二区久久久伦| 欧美a级成人淫片免费看| 极品粉嫩国产18尤物| 男人的天堂久久精品| 精产国品一二三区| 久久精品视频在线看| 欧美日韩在线观看免费| 色偷偷一区二区三区| 国产av无码专区亚洲av| 亚洲乱码国产乱码精品精天堂| 国产在线观看91| 国产成人久久久| 91精品日本| 一区二区三区四区| 亚洲综合欧美| 91精品人妻一区二区三区蜜桃2| 久久精品亚洲乱码伦伦中文| 国产一级免费观看| 欧美精品黑人性xxxx| 可以直接在线观看的av| 欧美激情图片区| 91麻豆精品一二三区在线| 日本一区二区三区免费看| 亚洲午夜黄色| 亚洲精品国产久| 国产精品欧美久久久久一区二区| 免费观看成人毛片| 精品国产免费视频| 性xxxxfjsxxxxx欧美| 91久久久久久久久久久| 精品视频亚洲| 日韩精品一区二区三区不卡| 波多野结衣在线一区| 久久久久久激情| 日韩欧美另类在线| 成码无人av片在线观看网站| 国产精品永久免费在线| 精品国产成人| 免费黄色特级片| 波多野结衣视频一区| 久久精品无码人妻| 日韩欧美中文字幕一区| www在线免费观看视频| 国产日韩精品视频| 日本一二区不卡| 午夜国产一区二区三区| 国产无遮挡一区二区三区毛片日本| 国产精品黄色大片| 日韩av在线高清| 成人bbav| 蜜桃999成人看片在线观看| 在线亚洲伦理| 国产精品无码毛片| 欧美视频不卡中文| 欧美91精品久久久久国产性生爱| 欧美怡红院视频一区二区三区| 奇米777国产一区国产二区| 久久综合九色综合88i| 99精品久久只有精品| 亚洲欧美综合自拍| 亚洲色图色老头| 欧美影视资讯| 中文字幕一区二区中文字幕| 国产精品一区二区三区99| 久久久国产精品人人片| 亚洲成人xxx| 伊人久久在线| 亚洲欧美日韩精品在线| 久久99精品久久久| 成年人av电影| 亚洲精品720p| 小黄鸭精品aⅴ导航网站入口| 日韩一区二区三区资源| 久久99精品国产| 久久久全国免费视频| 日韩国产精品视频| 精品成人免费一区二区在线播放| 一区二区精品在线| 国产成人综合亚洲网站| 日韩和一区二区| 亚洲人成在线电影| 白嫩亚洲一区二区三区| 日韩视频免费播放| 国产视频911| 国产手机视频在线| 91精品国产成人| 色琪琪久久se色| 亚洲一二三四五| 欧日韩精品视频| 91福利国产在线观看菠萝蜜| 精品伦精品一区二区三区视频| 久久精品九九| 亚洲国产精品免费在线观看| 欧美mv日韩mv国产网站app| 欲香欲色天天天综合和网| japanese在线视频| 99久久99久久精品国产片果冻 | 亚洲成av人片在线观看香蕉| 播放一区二区| 久久久久久免费看| 国产精品久久一级| 天天射天天操天天干| 国产在线精品播放| 99亚洲伊人久久精品影院红桃| 四虎影视一区二区| 日韩av有码在线| 99tv成人影院| 欧美私人情侣网站| 亚洲午夜久久久久中文字幕久| www.在线视频.com| 精品久久久久久综合日本|