java.lang.Object
org.jruby.runtime.Builtins
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intArray - CRuby: ARRAY_REDEFINED_OP_FLAGstatic final intBignum (large integers) - CRuby: BIGNUM_REDEFINED_OP_FLAGstatic final intinvalid input: '&' operator (bitwise and / to_proc)static final int[] operator (element reference)static final int[]= operator (element assignment)static final intcall method (Proc#call)static final int| operator (bitwise or)static final int| operator (bitwise or)static final intdig method - JRuby extension for Array/Hash/etc #dig optimizationstatic final int/ operatorstatic final intempty? methodstatic final int== operatorstatic final int=== operator (case equality)static final intfreeze methodstatic final int>= operatorstatic final int> operatorstatic final int>> operatorstatic final inthash methodstatic final intinclude? methodstatic final intSentinel value - array size.static final intinvalid input: '<'= operatorstatic final intlength methodstatic final intinvalid input: '<' operatorstatic final intinvalid input: '<'invalid input: '<' operator (left shift / append)static final int=~ operator (pattern match)static final intmax methodstatic final intmin methodstatic final int- operatorstatic final int% operator (modulo)static final intoperatorstatic final int!= operatorstatic final intnil? methodstatic final int! operator (logical not)static final int| operator (bitwise or)static final intpack method (Array#pack)static final int+ operatorstatic final intsize methodstatic final intsucc methodstatic final intto_f method - JRuby extension for float conversionstatic final int-@ operator (unary minus)static final EnumMap<ClassIndex, Integer> static final intFalseClass - CRuby: FALSE_REDEFINED_OP_FLAGstatic final intFloat - CRuby: FLOAT_REDEFINED_OP_FLAGstatic final intHash - CRuby: HASH_REDEFINED_OP_FLAGstatic final intInteger - CRuby: INTEGER_REDEFINED_OP_FLAGstatic final intNilClass - CRuby: NIL_REDEFINED_OP_FLAGstatic final intProc - CRuby: PROC_REDEFINED_OP_FLAGstatic final intRange - CRuby: RANGE_REDEFINED_OP_FLAG (added Ruby 3.1.2+)static final intRational - New in JRubystatic final intRegexp - CRuby: REGEXP_REDEFINED_OP_FLAGstatic final intString - CRuby: STRING_REDEFINED_OP_FLAGstatic final intStruct - New in JRubystatic final intSymbol - CRuby: SYMBOL_REDEFINED_OP_FLAGstatic final intTime - CRuby: TIME_REDEFINED_OP_FLAGstatic final intTrueClass - CRuby: TRUE_REDEFINED_OP_FLAG -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic int[]allocate()Allocate a new builtin bits array for a ThreadContext.static booleanCheck if Array#[] is still builtinstatic booleanCheck if Array#[]= is still builtinstatic booleanCheck if Array#dig is still builtinstatic booleanCheck if Array#empty? is still builtinstatic booleanCheck if Array#hash is still builtinstatic booleanCheck if Array#length/size is still builtinstatic booleanCheck if Array#max is still builtinstatic booleanCheck if Array#min is still builtinstatic booleanCheck if Array#pack is still builtinstatic booleanCheck if Array#invalid input: '<'invalid input: '<' is still builtinstatic booleanCheck if FalseClass#! is still builtinstatic booleanCheck if Float comparisons are still builtinstatic booleanCheck if Float#/ is still builtinstatic booleanCheck if Float#== is still builtinstatic booleanCheck if Float#- is still builtinstatic booleanCheck if Float#* is still builtinstatic booleanCheck if Float#+ is still builtinstatic booleanCheck if Hash#[] is still builtinstatic booleanCheck if Hash#[]= is still builtinstatic booleanCheck if Hash#default is still builtinstatic booleanCheck if Hash#dig is still builtinstatic booleanCheck if Hash#empty? is still builtinstatic booleanCheck if Hash#length/size is still builtinstatic booleanCheck if Integer#invalid input: '&' is still builtinstatic booleanCheck if Integer#<=> is still builtinstatic booleanCheck if all Integer comparison operators are still builtinstatic booleanCheck if Integer#/ is still builtinstatic booleanCheck if Integer#== is still builtinstatic booleanCheck if Integer#>= is still builtinstatic booleanCheck if Integer#> is still builtinstatic booleanCheck if Integer#invalid input: '<'= is still builtinstatic booleanCheck if Integer#invalid input: '<'invalid input: '<' is still builtinstatic booleanCheck if Integer#invalid input: '<' is still builtinstatic booleanCheck if Integer#- is still builtinstatic booleanCheck if Integer#% is still builtinstatic booleanCheck if Integer#* is still builtinstatic booleanCheck if Integer#| is still builtinstatic booleanCheck if Integer#+ is still builtinstatic booleanCheck if Integer#to_f is still builtinstatic booleanCheck if Integer#-@ is still builtinstatic booleancheckNilNot(ThreadContext ctx) Check if NilClass#! is still builtinstatic booleanCheck if Proc#call is still builtinstatic booleanCheck if Range#cover? is still builtin (same as include? check)static booleanCheck if Range#=== is still builtinstatic booleanCheck if Range#include? is still builtinstatic booleanCheck if Range#max is still builtinstatic booleanCheck if Range#min is still builtinstatic booleanCheck if Rational#- is still builtinstatic booleanCheck if Rational#* is still builtinstatic booleanCheck if Rational#+ is still builtinstatic booleanCheck if Rational#to_f is still builtinstatic booleanCheck if Regexp#=== is still builtinstatic booleanCheck if Regexp#=~ is still builtinstatic booleanCheck if String#[] is still builtinstatic booleanCheck if String#<=> is still builtinstatic booleanCheck if String#invalid input: '<'invalid input: '<' is still builtinstatic booleanCheck if String#empty? is still builtinstatic booleanCheck if String#== is still builtinstatic booleanCheck if String#freeze is still builtinstatic booleanCheck if String#hash is still builtinstatic booleanCheck if String#length/size is still builtinstatic booleanCheck if String#=~ is still builtinstatic booleanCheck if String#+ is still builtinstatic booleanCheck if Struct#dig is still builtinstatic booleanCheck if Symbol#== is still builtinstatic booleanCheck if Time#<=> is still builtinstatic booleanCheck if Time comparisons are still builtinstatic booleanCheck if Time#- is still builtinstatic booleanCheck if Time#+ is still builtinstatic booleanCheck if TrueClass#! is still builtinstatic voidinvalidateBuiltin(int[] bits, ClassIndex classIndex, String method) Mark a builtin method as redefined for a specific class.static voidresetAll(short[] bits) Reset all builtin flags (for testing purposes).
-
Field Details
-
INTEGER
public static final int INTEGERInteger - CRuby: INTEGER_REDEFINED_OP_FLAG- See Also:
-
FLOAT
public static final int FLOATFloat - CRuby: FLOAT_REDEFINED_OP_FLAG- See Also:
-
STRING
public static final int STRINGString - CRuby: STRING_REDEFINED_OP_FLAG- See Also:
-
ARRAY
public static final int ARRAYArray - CRuby: ARRAY_REDEFINED_OP_FLAG- See Also:
-
HASH
public static final int HASHHash - CRuby: HASH_REDEFINED_OP_FLAG- See Also:
-
BIGNUM
public static final int BIGNUMBignum (large integers) - CRuby: BIGNUM_REDEFINED_OP_FLAG- See Also:
-
SYMBOL
public static final int SYMBOLSymbol - CRuby: SYMBOL_REDEFINED_OP_FLAG- See Also:
-
TIME
public static final int TIMETime - CRuby: TIME_REDEFINED_OP_FLAG- See Also:
-
REGEXP
public static final int REGEXPRegexp - CRuby: REGEXP_REDEFINED_OP_FLAG- See Also:
-
NIL
public static final int NILNilClass - CRuby: NIL_REDEFINED_OP_FLAG- See Also:
-
TRUE
public static final int TRUETrueClass - CRuby: TRUE_REDEFINED_OP_FLAG- See Also:
-
FALSE
public static final int FALSEFalseClass - CRuby: FALSE_REDEFINED_OP_FLAG- See Also:
-
PROC
public static final int PROCProc - CRuby: PROC_REDEFINED_OP_FLAG- See Also:
-
RANGE
public static final int RANGERange - CRuby: RANGE_REDEFINED_OP_FLAG (added Ruby 3.1.2+)- See Also:
-
STRUCT
public static final int STRUCTStruct - New in JRuby- See Also:
-
RATIONAL
public static final int RATIONALRational - New in JRuby- See Also:
-
BOP_PLUS
public static final int BOP_PLUS+ operator- See Also:
-
BOP_MINUS
public static final int BOP_MINUS- operator- See Also:
-
BOP_MULT
public static final int BOP_MULToperator- See Also:
-
BOP_DIV
public static final int BOP_DIV/ operator- See Also:
-
BOP_MOD
public static final int BOP_MOD% operator (modulo)- See Also:
-
BOP_EQ
public static final int BOP_EQ== operator- See Also:
-
BOP_EQQ
public static final int BOP_EQQ=== operator (case equality)- See Also:
-
BOP_LT
public static final int BOP_LTinvalid input: '<' operator- See Also:
-
BOP_LE
public static final int BOP_LEinvalid input: '<'= operator- See Also:
-
BOP_LTLT
public static final int BOP_LTLTinvalid input: '<'invalid input: '<' operator (left shift / append)- See Also:
-
BOP_AREF
public static final int BOP_AREF[] operator (element reference)- See Also:
-
BOP_ASET
public static final int BOP_ASET[]= operator (element assignment)- See Also:
-
BOP_LENGTH
public static final int BOP_LENGTHlength method- See Also:
-
BOP_SIZE
public static final int BOP_SIZEsize method- See Also:
-
BOP_EMPTY_P
public static final int BOP_EMPTY_Pempty? method- See Also:
-
BOP_NIL_P
public static final int BOP_NIL_Pnil? method- See Also:
-
BOP_SUCC
public static final int BOP_SUCCsucc method- See Also:
-
BOP_GT
public static final int BOP_GT> operator- See Also:
-
BOP_GE
public static final int BOP_GE>= operator- See Also:
-
BOP_GTGT
public static final int BOP_GTGT>> operator- See Also:
-
BOP_NOT
public static final int BOP_NOT! operator (logical not)- See Also:
-
BOP_NEQ
public static final int BOP_NEQ!= operator- See Also:
-
BOP_MATCH
public static final int BOP_MATCH=~ operator (pattern match)- See Also:
-
BOP_FREEZE
public static final int BOP_FREEZEfreeze method- See Also:
-
BOP_UMINUS
public static final int BOP_UMINUS-@ operator (unary minus)- See Also:
-
BOP_MAX
public static final int BOP_MAXmax method- See Also:
-
BOP_MIN
public static final int BOP_MINmin method- See Also:
-
BOP_HASH
public static final int BOP_HASHhash method- See Also:
-
BOP_CALL
public static final int BOP_CALLcall method (Proc#call)- See Also:
-
BOP_AND
public static final int BOP_ANDinvalid input: '&' operator (bitwise and / to_proc)- See Also:
-
BOP_OR
public static final int BOP_OR| operator (bitwise or)- See Also:
-
BOP_CMP
public static final int BOP_CMP| operator (bitwise or)- See Also:
-
BOP_DEFAULT
public static final int BOP_DEFAULT| operator (bitwise or)- See Also:
-
BOP_PACK
public static final int BOP_PACKpack method (Array#pack)- See Also:
-
BOP_INCLUDE_P
public static final int BOP_INCLUDE_Pinclude? method- See Also:
-
BOP_TO_F
public static final int BOP_TO_Fto_f method - JRuby extension for float conversion- See Also:
-
BOP_DIG
public static final int BOP_DIGdig method - JRuby extension for Array/Hash/etc #dig optimization- See Also:
-
BOP_LAST_
public static final int BOP_LAST_Sentinel value - array size. Matches CRuby's BOP_LAST_ naming convention- See Also:
-
CLASS_FLAGS
-
METHOD_IDS
-
-
Constructor Details
-
Builtins
public Builtins()
-
-
Method Details
-
allocate
public static int[] allocate()Allocate a new builtin bits array for a ThreadContext. All bits start as 0 (no redefinitions detected).- Returns:
- new short array sized for all BOP indices
-
invalidateBuiltin
Mark a builtin method as redefined for a specific class. After this call, fast-path checks for this method+class will return false.- Parameters:
bits- the builtinBits array to modify (from Ruby runtime)classIndex- the ClassIndex of the class being modifiedmethod- the method name being defined
-
resetAll
public static void resetAll(short[] bits) Reset all builtin flags (for testing purposes). After this call, all fast-path checks will return true.- Parameters:
bits- the builtinBits array to reset
-
checkIntegerPlus
Check if Integer#+ is still builtin -
checkIntegerMinus
Check if Integer#- is still builtin -
checkIntegerMult
Check if Integer#* is still builtin -
checkIntegerDiv
Check if Integer#/ is still builtin -
checkIntegerMod
Check if Integer#% is still builtin -
checkIntegerEquals
Check if Integer#== is still builtin -
checkIntegerLt
Check if Integer#invalid input: '<' is still builtin -
checkIntegerLe
Check if Integer#invalid input: '<'= is still builtin -
checkIntegerGt
Check if Integer#> is still builtin -
checkIntegerGe
Check if Integer#>= is still builtin -
checkIntegerCompare
Check if all Integer comparison operators are still builtin -
checkIntegerLshift
Check if Integer#invalid input: '<'invalid input: '<' is still builtin -
checkIntegerAnd
Check if Integer#invalid input: '&' is still builtin -
checkIntegerOr
Check if Integer#| is still builtin -
checkIntegerUminus
Check if Integer#-@ is still builtin -
checkIntegerCmp
Check if Integer#<=> is still builtin -
checkIntegerToF
Check if Integer#to_f is still builtin -
checkFloatPlus
Check if Float#+ is still builtin -
checkFloatMinus
Check if Float#- is still builtin -
checkFloatMult
Check if Float#* is still builtin -
checkFloatDiv
Check if Float#/ is still builtin -
checkFloatEquals
Check if Float#== is still builtin -
checkFloatCompare
Check if Float comparisons are still builtin -
checkStringPlus
Check if String#+ is still builtin -
checkStringEquals
Check if String#== is still builtin -
checkStringConcat
Check if String#invalid input: '<'invalid input: '<' is still builtin -
checkStringAref
Check if String#[] is still builtin -
checkStringLength
Check if String#length/size is still builtin -
checkStringEmpty
Check if String#empty? is still builtin -
checkStringFreeze
Check if String#freeze is still builtin -
checkStringMatch
Check if String#=~ is still builtin -
checkStringHash
Check if String#hash is still builtin -
checkStringCmp
Check if String#<=> is still builtin -
checkArrayAref
Check if Array#[] is still builtin -
checkArrayAset
Check if Array#[]= is still builtin -
checkArrayPush
Check if Array#invalid input: '<'invalid input: '<' is still builtin -
checkArrayLength
Check if Array#length/size is still builtin -
checkArrayEmpty
Check if Array#empty? is still builtin -
checkArrayMax
Check if Array#max is still builtin -
checkArrayMin
Check if Array#min is still builtin -
checkArrayHash
Check if Array#hash is still builtin -
checkArrayPack
Check if Array#pack is still builtin -
checkArrayDig
Check if Array#dig is still builtin -
checkHashAref
Check if Hash#[] is still builtin -
checkHashAset
Check if Hash#[]= is still builtin -
checkHashLength
Check if Hash#length/size is still builtin -
checkHashEmpty
Check if Hash#empty? is still builtin -
checkHashDefault
Check if Hash#default is still builtin -
checkHashDig
Check if Hash#dig is still builtin -
checkRangeInclude
Check if Range#include? is still builtin -
checkRangeCover
Check if Range#cover? is still builtin (same as include? check) -
checkRangeEqq
Check if Range#=== is still builtin -
checkRangeMin
Check if Range#min is still builtin -
checkRangeMax
Check if Range#max is still builtin -
checkSymbolEquals
Check if Symbol#== is still builtin -
checkProcCall
Check if Proc#call is still builtin -
checkNilNot
Check if NilClass#! is still builtin -
checkTrueNot
Check if TrueClass#! is still builtin -
checkFalseNot
Check if FalseClass#! is still builtin -
checkRegexpMatch
Check if Regexp#=~ is still builtin -
checkRegexpEqq
Check if Regexp#=== is still builtin -
checkTimePlus
Check if Time#+ is still builtin -
checkTimeMinus
Check if Time#- is still builtin -
checkTimeCompare
Check if Time comparisons are still builtin -
checkTimeCmp
Check if Time#<=> is still builtin -
checkStructDig
Check if Struct#dig is still builtin -
checkRationalToF
Check if Rational#to_f is still builtin -
checkRationalPlus
Check if Rational#+ is still builtin -
checkRationalMult
Check if Rational#* is still builtin -
checkRationalMinus
Check if Rational#- is still builtin
-