@@ -68,43 +68,55 @@ public static QuoteNode create() {
68
68
return RegexpNodesFactory .QuoteNodeFactory .create (null );
69
69
}
70
70
71
+ @ SuppressWarnings ("truffle-static-method" )
71
72
@ Specialization (
72
73
guards = {
73
- "libRaw .isRubyString(raw)" ,
74
- "rawEqualNode .execute(node, libRaw , raw, cachedRaw, cachedRawEnc )" },
74
+ "libString .isRubyString(raw)" ,
75
+ "equalNode .execute(node, libString , raw, cachedString, cachedEnc )" },
75
76
limit = "getDefaultCacheLimit()" )
76
- static RubyString quoteStringCached (Object raw ,
77
- @ Cached @ Shared RubyStringLibrary libRaw ,
78
- @ Cached ("asTruffleStringUncached(raw)" ) TruffleString cachedRaw ,
79
- @ Cached ("libRaw .getEncoding(raw)" ) RubyEncoding cachedRawEnc ,
80
- @ Cached StringHelperNodes .EqualSameEncodingNode rawEqualNode ,
77
+ RubyString quoteStringCached (Object raw ,
78
+ @ Cached @ Shared RubyStringLibrary libString ,
79
+ @ Cached ("asTruffleStringUncached(raw)" ) TruffleString cachedString ,
80
+ @ Cached ("libString .getEncoding(raw)" ) RubyEncoding cachedEnc ,
81
+ @ Cached StringHelperNodes .EqualSameEncodingNode equalNode ,
81
82
@ Bind ("this" ) Node node ,
82
- @ Cached ("quote(libRaw , raw)" ) RubyString quotedString ) {
83
- return quotedString ;
83
+ @ Cached ("quote(libString , raw)" ) TStringWithEncoding quotedString ) {
84
+ return createString ( quotedString ) ;
84
85
}
85
86
86
- @ Specialization (replaces = "quoteStringCached" , guards = "libRaw .isRubyString(raw)" )
87
+ @ Specialization (replaces = "quoteStringCached" , guards = "libString .isRubyString(raw)" )
87
88
RubyString quoteString (Object raw ,
88
- @ Cached @ Shared RubyStringLibrary libRaw ) {
89
- return quote (libRaw , raw );
89
+ @ Cached @ Shared RubyStringLibrary libString ) {
90
+ return createString ( quote (libString , raw ) );
90
91
}
91
92
92
- @ Specialization
93
+ @ Specialization (guards = "raw == cachedSymbol" , limit = "getDefaultCacheLimit()" )
94
+ RubyString quoteSymbolCached (RubySymbol raw ,
95
+ @ Cached ("raw" ) RubySymbol cachedSymbol ,
96
+ @ Cached ("quote(cachedSymbol)" ) TStringWithEncoding quotedString ) {
97
+ return createString (quotedString );
98
+ }
99
+
100
+ @ Specialization (replaces = "quoteSymbolCached" )
93
101
RubyString quoteSymbol (RubySymbol raw ) {
94
- return createString (ClassicRegexp . quote19 ( new ATStringWithEncoding ( raw . tstring , raw . encoding ) ));
102
+ return createString (quote ( raw ));
95
103
}
96
104
97
- @ Specialization (guards = { "!libRaw .isRubyString(raw)" , "!isRubySymbol(raw)" })
105
+ @ Specialization (guards = { "!libString .isRubyString(raw)" , "!isRubySymbol(raw)" })
98
106
static RubyString quoteGeneric (Object raw ,
99
- @ Cached @ Shared RubyStringLibrary libRaw ,
107
+ @ Cached @ Shared RubyStringLibrary libString ,
100
108
@ Cached ToStrNode toStrNode ,
101
109
@ Cached QuoteNode recursive ,
102
110
@ Bind ("this" ) Node node ) {
103
111
return recursive .execute (toStrNode .execute (node , raw ));
104
112
}
105
113
106
- RubyString quote (RubyStringLibrary strings , Object string ) {
107
- return createString (ClassicRegexp .quote19 (new ATStringWithEncoding (strings , string )));
114
+ TStringWithEncoding quote (RubyStringLibrary strings , Object string ) {
115
+ return ClassicRegexp .quote19 (new ATStringWithEncoding (strings , string ));
116
+ }
117
+
118
+ TStringWithEncoding quote (RubySymbol symbol ) {
119
+ return ClassicRegexp .quote19 (new ATStringWithEncoding (symbol .tstring , symbol .encoding ));
108
120
}
109
121
110
122
}
0 commit comments