摘要:操作決定對(duì)象是否是指定類(lèi)型的實(shí)例指令格式指令碼指令執(zhí)行前后的棧頂狀態(tài)描述是線程棧頂部彈出的類(lèi)型的引用無(wú)符號(hào)數(shù)和共同構(gòu)建成一個(gè)索引指向運(yùn)行時(shí)常量池中的類(lèi)如果為如果為指定類(lèi)數(shù)組接口的實(shí)例則否則舉例說(shuō)明如果是所指向的類(lèi)為指定類(lèi)在下列情況下如果是一
instanceof 操作:
決定對(duì)象是否是指定類(lèi)型的實(shí)例指令格式:
instanceof indexbyte1 indexbyte2指令碼:
instanceof = 193 (0xc1)指令執(zhí)行前后的棧頂狀態(tài):
..., objectref → ..., result描述:
objectref是線程棧頂部彈出的類(lèi)型的引用,無(wú)符號(hào)數(shù)indexbyte1和indexbyte2共同構(gòu)建成一個(gè)索引(indexbyte1<<8|indexbyte2)指向運(yùn)行時(shí)常量池中的類(lèi).
如果objectref為null,result=0;
如果objectref為指定類(lèi)(resolved class),數(shù)組,接口的實(shí)例,則result=1
否則result=0;
如果S是objectref所指向的類(lèi),T為指定類(lèi)(resolved class),在下列情況下result=1:
如果S是一個(gè)class:
如果T為class,則S extends T,或者S等于T
如果T為interface,則S implements T
如果S是一個(gè)class:
如果T為interface,則T為Object
如果T為interface,則S extends T,或者S等于T
如果S是一個(gè)array,SC[],數(shù)組元素為SC:
如果T為class,則T為Object
如果T為interface,則T 為數(shù)組的子類(lèi)(見(jiàn)JLS4.10.3)
如果T是一個(gè)array,TC[],數(shù)組元素為T(mén)C
TC和SC是相同的原始類(lèi)型
TC和SC都是class,SC可以在運(yùn)行時(shí)轉(zhuǎn)換為T(mén)C
JVM具體的實(shí)現(xiàn)論文Fast subtype checking in the HotSpot JVM
問(wèn)答請(qǐng)教一個(gè)share/vm/oops下的代碼做fast subtype check的問(wèn)題
參考:
1.JLS
2.JVM
3.知乎
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/67222.html
小編寫(xiě)這篇文章的主要目的,是講述一下關(guān)于Python的一些小技巧,包括類(lèi)方法與靜態(tài)方法之間,存在一些什么區(qū)別呢?怎么從真正的意義上去理解關(guān)于其不同之間的區(qū)別呢?下面就給大家詳細(xì)的解答下?! ∏把浴 ≡趐ython的類(lèi)中不僅可以有methods,還可以有變量,這些變量稱(chēng)為類(lèi)屬性,例如如下代碼中Book類(lèi)的TYPES即為類(lèi)屬性?! ☆?lèi)中的方法分為3類(lèi): 1.實(shí)例方法instance method...
摘要:指定及端口創(chuàng)建實(shí)例默認(rèn)情況下系統(tǒng)會(huì)自動(dòng)分配一個(gè)及一個(gè)端口用來(lái)訪問(wèn)數(shù)據(jù)庫(kù)??缈捎脜^(qū)指同類(lèi)服務(wù)的不同節(jié)點(diǎn)部署在至少三個(gè)以上的可用區(qū),可保證可用區(qū)級(jí)故障發(fā)生時(shí)服務(wù)繼續(xù)可用,但性能比同可用區(qū)有所下降。實(shí)例本篇目錄創(chuàng)建TiDB實(shí)例查看TiDB實(shí)例列表查看TiDB實(shí)例詳情刪除TiDB實(shí)例創(chuàng)建TiDB實(shí)例點(diǎn)擊【創(chuàng)建實(shí)例】選擇基礎(chǔ)配置版本根據(jù)需要選擇配置版本,默認(rèn)選擇旗艦版。 不同版本的說(shuō)明請(qǐng)參考實(shí)例類(lèi)型。...
大家在搭建網(wǎng)站時(shí),無(wú)可避免的必須設(shè)計(jì)方案完成頁(yè)面的用戶(hù)系統(tǒng),我們應(yīng)該完成包含新用戶(hù)注冊(cè)、賬號(hào)登錄、用戶(hù)認(rèn)證、銷(xiāo)戶(hù)等服務(wù),Django做為完美主義者最終架構(gòu),它默認(rèn)設(shè)置使用auth_user表來(lái)存儲(chǔ)用戶(hù)數(shù)據(jù)信息,下面我們就來(lái)看看Django多對(duì)多使用through自定中間表 多對(duì)多中間表詳細(xì)說(shuō)明 眾所周知針對(duì)ManyToMany字段,Django使用的是下一張中間表的形式。依據(jù)這下一張表,來(lái)...
知道嗎?在布達(dá)佩斯2022 JSConf會(huì)議上,tc39(ES標(biāo)準(zhǔn)委員會(huì))成員Gil Tayar介紹了一份當(dāng)前仍處于stage 1階段的提案 ——Type Annotations,意在讓原生JS支持類(lèi)型注解。 很多現(xiàn)在盼到了,在.ts文件將后綴改為.js后就能直接在瀏覽器中運(yùn)行。 一份tc39提案通常會(huì)經(jīng)歷5個(gè)階段: stage 0:被提出 stage 1:接受審議 stage 2:...
我們先說(shuō)下,npm版本號(hào)定義 版本格式:X.Y.Z[-string]其含義為: X:主版本號(hào) Y:次版本號(hào) Z:修正版本號(hào) string: 先行版本號(hào)或版本編譯信息 舉個(gè)例子: 6.3.2-alpha的含義為: 主版本號(hào)6,有6次不可向下兼容的更新迭代。 次版本號(hào)3,有3次小的功能迭代。6.*.* <=6.3.2的依賴(lài)聲明,都可以安裝此新包?! ⌒拚姹咎?hào)2,有2次bu...
閱讀 1833·2021-11-18 13:21
閱讀 1966·2021-10-18 13:30
閱讀 1551·2021-10-12 10:13
閱讀 922·2021-10-09 09:43
閱讀 5436·2021-09-22 15:13
閱讀 3595·2021-08-11 10:22
閱讀 947·2019-08-30 13:46
閱讀 3527·2019-08-30 13:21