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

Unified Diff: src/builtins/builtins-regexp.cc

Issue 2573573004: [stubs] Enable graph verification for builtins. (Closed)
Patch Set: Created 4 years 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
Index: src/builtins/builtins-regexp.cc
diff --git a/src/builtins/builtins-regexp.cc b/src/builtins/builtins-regexp.cc
index 937efe5dfd594c27d96a422def5d81e7b948bc7a..c0247cb77bcbb35c6a8e050ac19a14dffa5040d5 100644
--- a/src/builtins/builtins-regexp.cc
+++ b/src/builtins/builtins-regexp.cc
@@ -183,16 +183,19 @@ Node* RegExpBuiltinsAssembler::ConstructNewResultFromMatchInfo(Node* context,
{
Node* const from_cursor = var_from_cursor.value();
Node* const to_cursor = var_to_cursor.value();
- Node* const start = LoadFixedArrayElement(match_info, from_cursor);
+ Node* const start =
+ LoadFixedArrayElement(match_info, from_cursor, 0, INTPTR_PARAMETERS);
Label next_iter(this);
GotoIf(SmiEqual(start, SmiConstant(Smi::FromInt(-1))), &next_iter);
Node* const from_cursor_plus1 = IntPtrAdd(from_cursor, IntPtrConstant(1));
- Node* const end = LoadFixedArrayElement(match_info, from_cursor_plus1);
+ Node* const end = LoadFixedArrayElement(match_info, from_cursor_plus1, 0,
+ INTPTR_PARAMETERS);
Node* const capture = SubString(context, string, start, end);
- StoreFixedArrayElement(result_elements, to_cursor, capture);
+ StoreFixedArrayElement(result_elements, to_cursor, capture,
+ UPDATE_WRITE_BARRIER, 0, INTPTR_PARAMETERS);
Goto(&next_iter);
Bind(&next_iter);
@@ -566,7 +569,7 @@ Node* RegExpBuiltinsAssembler::FlagsGetter(Node* const context,
do { \
Label next(this); \
GotoUnless(IsSetWord(flags_intptr, FLAG), &next); \
- Node* const value = IntPtrConstant(CHAR); \
+ Node* const value = Int32Constant(CHAR); \
StoreNoWriteBarrier(MachineRepresentation::kWord8, result, \
var_offset.value(), value); \
var_offset.Bind(IntPtrAdd(var_offset.value(), int_one)); \
@@ -590,8 +593,8 @@ Node* RegExpBuiltinsAssembler::IsRegExp(Node* const context,
Node* const maybe_receiver) {
Label out(this), if_isregexp(this);
- Variable var_result(this, MachineType::PointerRepresentation());
- var_result.Bind(IntPtrConstant(0));
+ Variable var_result(this, MachineRepresentation::kWord32);
+ var_result.Bind(Int32Constant(0));
GotoIf(TaggedIsSmi(maybe_receiver), &out);
GotoUnless(IsJSReceiver(maybe_receiver), &out);
@@ -615,7 +618,7 @@ Node* RegExpBuiltinsAssembler::IsRegExp(Node* const context,
}
Bind(&if_isregexp);
- var_result.Bind(IntPtrConstant(1));
+ var_result.Bind(Int32Constant(1));
Goto(&out);
Bind(&out);
@@ -962,7 +965,7 @@ Node* RegExpBuiltinsAssembler::FastFlagGetter(Node* const regexp,
Node* const smi_zero = SmiConstant(Smi::kZero);
Node* const flags = LoadObjectField(regexp, JSRegExp::kFlagsOffset);
Node* const mask = SmiConstant(Smi::FromInt(flag));
- Node* const is_flag_set = WordNotEqual(WordAnd(flags, mask), smi_zero);
+ Node* const is_flag_set = WordNotEqual(SmiAnd(flags, mask), smi_zero);
return is_flag_set;
}
@@ -974,7 +977,7 @@ Node* RegExpBuiltinsAssembler::SlowFlagGetter(Node* const context,
Factory* factory = isolate()->factory();
Label out(this);
- Variable var_result(this, MachineType::PointerRepresentation());
+ Variable var_result(this, MachineRepresentation::kWord32);
Node* name;
@@ -1006,13 +1009,13 @@ Node* RegExpBuiltinsAssembler::SlowFlagGetter(Node* const context,
Bind(&if_true);
{
- var_result.Bind(IntPtrConstant(1));
+ var_result.Bind(Int32Constant(1));
Goto(&out);
}
Bind(&if_false);
{
- var_result.Bind(IntPtrConstant(0));
+ var_result.Bind(Int32Constant(0));
Goto(&out);
}
@@ -2249,7 +2252,8 @@ Node* RegExpBuiltinsAssembler::ReplaceGlobalCallableFastPath(
var_match_start.value(), string);
Node* const replacement_str = ToString(context, replacement_obj);
- StoreFixedArrayElement(res_elems, i, replacement_str);
+ StoreFixedArrayElement(res_elems, i, replacement_str,
+ UPDATE_WRITE_BARRIER, 0, mode);
Node* const elem_length = LoadStringLength(elem);
Node* const new_match_start =
@@ -2439,8 +2443,6 @@ TF_BUILTIN(RegExpPrototypeReplace, RegExpBuiltinsAssembler) {
Node* const replace_value = Parameter(2);
Node* const context = Parameter(5);
- Node* const int_zero = IntPtrConstant(0);
-
// Ensure {maybe_receiver} is a JSReceiver.
Node* const map = ThrowIfNotJSReceiver(
context, maybe_receiver, MessageTemplate::kIncompatibleMethodReceiver,
@@ -2472,10 +2474,10 @@ TF_BUILTIN(RegExpPrototypeReplace, RegExpBuiltinsAssembler) {
Node* const replace_string =
CallStub(tostring_callable, context, replace_value);
- Node* const dollar_char = IntPtrConstant('$');
+ Node* const dollar_char = Int32Constant('$');
Node* const smi_minusone = SmiConstant(Smi::FromInt(-1));
GotoUnless(SmiEqual(StringIndexOfChar(context, replace_string, dollar_char,
- int_zero),
+ SmiConstant(0)),
smi_minusone),
&runtime);

Powered by Google App Engine
This is Rietveld 408576698