Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(539)

Unified Diff: runtime/vm/object_service.cc

Issue 2510783002: VM: Optimize RegExp.matchAsPrefix(...) by generating a sticky RegExp specialization. (Closed)
Patch Set: Done Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/object.cc ('k') | runtime/vm/raw_object.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/object_service.cc
diff --git a/runtime/vm/object_service.cc b/runtime/vm/object_service.cc
index d5441a52ffb56ac9547f2d4dabff341cc05035ab..6d2bd9ef2bf2e006d49fda1c90c136d82b2ec45a 100644
--- a/runtime/vm/object_service.cc
+++ b/runtime/vm/object_service.cc
@@ -1512,21 +1512,35 @@ void RegExp::PrintJSONImpl(JSONStream* stream, bool ref) const {
jsobj.AddProperty("isCaseSensitive", !is_ignore_case());
jsobj.AddProperty("isMultiLine", is_multi_line());
- Function& func = Function::Handle();
- func = function(kOneByteStringCid);
- jsobj.AddProperty("_oneByteFunction", func);
- func = function(kTwoByteStringCid);
- jsobj.AddProperty("_twoByteFunction", func);
- func = function(kExternalOneByteStringCid);
- jsobj.AddProperty("_externalOneByteFunction", func);
- func = function(kExternalTwoByteStringCid);
- jsobj.AddProperty("_externalTwoByteFunction", func);
-
- TypedData& bc = TypedData::Handle();
- bc = bytecode(true);
- jsobj.AddProperty("_oneByteBytecode", bc);
- bc = bytecode(false);
- jsobj.AddProperty("_twoByteBytecode", bc);
+ if (!FLAG_interpret_irregexp) {
+ Function& func = Function::Handle();
+ func = function(kOneByteStringCid, /*sticky=*/false);
+ jsobj.AddProperty("_oneByteFunction", func);
+ func = function(kTwoByteStringCid, /*sticky=*/false);
+ jsobj.AddProperty("_twoByteFunction", func);
+ func = function(kExternalOneByteStringCid, /*sticky=*/false);
+ jsobj.AddProperty("_externalOneByteFunction", func);
+ func = function(kExternalTwoByteStringCid, /*sticky=*/false);
+ jsobj.AddProperty("_externalTwoByteFunction", func);
+ func = function(kOneByteStringCid, /*sticky=*/true);
+ jsobj.AddProperty("_oneByteFunctionSticky", func);
+ func = function(kTwoByteStringCid, /*sticky=*/true);
+ jsobj.AddProperty("_twoByteFunctionSticky", func);
+ func = function(kExternalOneByteStringCid, /*sticky=*/true);
+ jsobj.AddProperty("_externalOneByteFunctionSticky", func);
+ func = function(kExternalTwoByteStringCid, /*sticky=*/true);
+ jsobj.AddProperty("_externalTwoByteFunctionSticky", func);
+ } else {
+ TypedData& bc = TypedData::Handle();
+ bc = bytecode(/*is_one_byte=*/true, /*sticky=*/false);
+ jsobj.AddProperty("_oneByteBytecode", bc);
+ bc = bytecode(/*is_one_byte=*/false, /*sticky=*/false);
+ jsobj.AddProperty("_twoByteBytecode", bc);
+ bc = bytecode(/*is_one_byte=*/true, /*sticky=*/true);
+ jsobj.AddProperty("_oneByteBytecodeSticky", bc);
+ bc = bytecode(/*is_one_byte=*/false, /*sticky=*/true);
+ jsobj.AddProperty("_twoByteBytecodeSticky", bc);
+ }
}
« no previous file with comments | « runtime/vm/object.cc ('k') | runtime/vm/raw_object.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698