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

Side by Side Diff: src/builtins/builtins-regexp-gen.cc

Issue 2777203007: [builtins] Introduce new TFC macro and auto-generate TFS descriptors (Closed)
Patch Set: Rebase Created 3 years, 8 months 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 unified diff | Download patch
« no previous file with comments | « src/builtins/builtins-descriptors.h ('k') | src/builtins/setup-builtins-internal.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2017 the V8 project authors. All rights reserved. 1 // Copyright 2017 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/builtins/builtins-regexp-gen.h" 5 #include "src/builtins/builtins-regexp-gen.h"
6 6
7 #include "src/builtins/builtins-constructor-gen.h" 7 #include "src/builtins/builtins-constructor-gen.h"
8 #include "src/builtins/builtins-utils-gen.h" 8 #include "src/builtins/builtins-utils-gen.h"
9 #include "src/builtins/builtins.h" 9 #include "src/builtins/builtins.h"
10 #include "src/code-factory.h" 10 #include "src/code-factory.h"
(...skipping 2287 matching lines...) Expand 10 before | Expand all | Expand 10 after
2298 Node* const length = smi_zero; 2298 Node* const length = smi_zero;
2299 Node* const capacity = int_zero; 2299 Node* const capacity = int_zero;
2300 Node* const result = AllocateJSArray(kind, array_map, capacity, length, 2300 Node* const result = AllocateJSArray(kind, array_map, capacity, length,
2301 allocation_site, mode); 2301 allocation_site, mode);
2302 Return(result); 2302 Return(result);
2303 } 2303 }
2304 } 2304 }
2305 2305
2306 // Helper that skips a few initial checks. 2306 // Helper that skips a few initial checks.
2307 TF_BUILTIN(RegExpSplit, RegExpBuiltinsAssembler) { 2307 TF_BUILTIN(RegExpSplit, RegExpBuiltinsAssembler) {
2308 Node* const regexp = Parameter(Descriptor::kReceiver); 2308 Node* const regexp = Parameter(Descriptor::kRegExp);
2309 Node* const string = Parameter(Descriptor::kString); 2309 Node* const string = Parameter(Descriptor::kString);
2310 Node* const maybe_limit = Parameter(Descriptor::kLimit); 2310 Node* const maybe_limit = Parameter(Descriptor::kLimit);
2311 Node* const context = Parameter(Descriptor::kContext); 2311 Node* const context = Parameter(Descriptor::kContext);
2312 2312
2313 CSA_ASSERT(this, IsFastRegExp(context, regexp)); 2313 CSA_ASSERT(this, IsFastRegExp(context, regexp));
2314 CSA_ASSERT(this, IsString(string)); 2314 CSA_ASSERT(this, IsString(string));
2315 2315
2316 // TODO(jgruber): Even if map checks send us to the fast path, we still need 2316 // TODO(jgruber): Even if map checks send us to the fast path, we still need
2317 // to verify the constructor property and jump to the slow path if it has 2317 // to verify the constructor property and jump to the slow path if it has
2318 // been changed. 2318 // been changed.
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after
2704 Goto(&out); 2704 Goto(&out);
2705 } 2705 }
2706 } 2706 }
2707 2707
2708 BIND(&out); 2708 BIND(&out);
2709 return var_result.value(); 2709 return var_result.value();
2710 } 2710 }
2711 2711
2712 // Helper that skips a few initial checks. 2712 // Helper that skips a few initial checks.
2713 TF_BUILTIN(RegExpReplace, RegExpBuiltinsAssembler) { 2713 TF_BUILTIN(RegExpReplace, RegExpBuiltinsAssembler) {
2714 Node* const regexp = Parameter(Descriptor::kReceiver); 2714 Node* const regexp = Parameter(Descriptor::kRegExp);
2715 Node* const string = Parameter(Descriptor::kString); 2715 Node* const string = Parameter(Descriptor::kString);
2716 Node* const replace_value = Parameter(Descriptor::kReplaceValue); 2716 Node* const replace_value = Parameter(Descriptor::kReplaceValue);
2717 Node* const context = Parameter(Descriptor::kContext); 2717 Node* const context = Parameter(Descriptor::kContext);
2718 2718
2719 CSA_ASSERT(this, IsFastRegExp(context, regexp)); 2719 CSA_ASSERT(this, IsFastRegExp(context, regexp));
2720 CSA_ASSERT(this, IsString(string)); 2720 CSA_ASSERT(this, IsString(string));
2721 2721
2722 Label checkreplacestring(this), if_iscallable(this), 2722 Label checkreplacestring(this), if_iscallable(this),
2723 runtime(this, Label::kDeferred); 2723 runtime(this, Label::kDeferred);
2724 2724
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
2854 BIND(&if_matched); 2854 BIND(&if_matched);
2855 { 2855 {
2856 Node* result = 2856 Node* result =
2857 ConstructNewResultFromMatchInfo(context, regexp, match_indices, string); 2857 ConstructNewResultFromMatchInfo(context, regexp, match_indices, string);
2858 Return(result); 2858 Return(result);
2859 } 2859 }
2860 } 2860 }
2861 2861
2862 } // namespace internal 2862 } // namespace internal
2863 } // namespace v8 2863 } // namespace v8
OLDNEW
« no previous file with comments | « src/builtins/builtins-descriptors.h ('k') | src/builtins/setup-builtins-internal.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698