OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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-constructor.h" | 5 #include "src/builtins/builtins-constructor.h" |
6 #include "src/builtins/builtins-utils.h" | 6 #include "src/builtins/builtins-utils.h" |
7 #include "src/builtins/builtins.h" | 7 #include "src/builtins/builtins.h" |
8 #include "src/code-factory.h" | 8 #include "src/code-factory.h" |
9 #include "src/code-stub-assembler.h" | 9 #include "src/code-stub-assembler.h" |
10 #include "src/regexp/jsregexp.h" | 10 #include "src/regexp/jsregexp.h" |
(...skipping 2227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2238 } | 2238 } |
2239 } | 2239 } |
2240 | 2240 |
2241 Bind(&if_hasexplicitcaptures); | 2241 Bind(&if_hasexplicitcaptures); |
2242 { | 2242 { |
2243 Node* const from = int_zero; | 2243 Node* const from = int_zero; |
2244 Node* const to = SmiUntag(res_length); | 2244 Node* const to = SmiUntag(res_length); |
2245 const int increment = 1; | 2245 const int increment = 1; |
2246 | 2246 |
2247 BuildFastLoop( | 2247 BuildFastLoop( |
2248 MachineType::PointerRepresentation(), from, to, | 2248 from, to, |
2249 [this, res_elems, isolate, native_context, context, undefined, | 2249 [this, res_elems, isolate, native_context, context, undefined, |
2250 replace_callable](Node* index) { | 2250 replace_callable](Node* index) { |
2251 Node* const elem = LoadFixedArrayElement(res_elems, index); | 2251 Node* const elem = LoadFixedArrayElement(res_elems, index); |
2252 | 2252 |
2253 Label do_continue(this); | 2253 Label do_continue(this); |
2254 GotoIf(TaggedIsSmi(elem), &do_continue); | 2254 GotoIf(TaggedIsSmi(elem), &do_continue); |
2255 | 2255 |
2256 // elem must be an Array. | 2256 // elem must be an Array. |
2257 // Use the apply argument as backing for global RegExp properties. | 2257 // Use the apply argument as backing for global RegExp properties. |
2258 | 2258 |
(...skipping 10 matching lines...) Expand all Loading... |
2269 | 2269 |
2270 // Overwrite the i'th element in the results with the string we got | 2270 // Overwrite the i'th element in the results with the string we got |
2271 // back from the callback function. | 2271 // back from the callback function. |
2272 | 2272 |
2273 Node* const replacement_str = ToString(context, replacement_obj); | 2273 Node* const replacement_str = ToString(context, replacement_obj); |
2274 StoreFixedArrayElement(res_elems, index, replacement_str); | 2274 StoreFixedArrayElement(res_elems, index, replacement_str); |
2275 | 2275 |
2276 Goto(&do_continue); | 2276 Goto(&do_continue); |
2277 Bind(&do_continue); | 2277 Bind(&do_continue); |
2278 }, | 2278 }, |
2279 increment, CodeStubAssembler::IndexAdvanceMode::kPost); | 2279 increment, CodeStubAssembler::INTPTR_PARAMETERS, |
| 2280 CodeStubAssembler::IndexAdvanceMode::kPost); |
2280 | 2281 |
2281 Goto(&create_result); | 2282 Goto(&create_result); |
2282 } | 2283 } |
2283 | 2284 |
2284 Bind(&create_result); | 2285 Bind(&create_result); |
2285 { | 2286 { |
2286 Node* const result = CallRuntime(Runtime::kStringBuilderConcat, context, | 2287 Node* const result = CallRuntime(Runtime::kStringBuilderConcat, context, |
2287 res, res_length, string); | 2288 res, res_length, string); |
2288 var_result.Bind(result); | 2289 var_result.Bind(result); |
2289 Goto(&out); | 2290 Goto(&out); |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2510 Bind(&if_matched); | 2511 Bind(&if_matched); |
2511 { | 2512 { |
2512 Node* result = | 2513 Node* result = |
2513 ConstructNewResultFromMatchInfo(context, match_indices, string); | 2514 ConstructNewResultFromMatchInfo(context, match_indices, string); |
2514 Return(result); | 2515 Return(result); |
2515 } | 2516 } |
2516 } | 2517 } |
2517 | 2518 |
2518 } // namespace internal | 2519 } // namespace internal |
2519 } // namespace v8 | 2520 } // namespace v8 |
OLD | NEW |