OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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/objects.h" | 5 #include "src/objects.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 #include <iomanip> | 8 #include <iomanip> |
9 #include <sstream> | 9 #include <sstream> |
10 | 10 |
(...skipping 15648 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
15659 Handle<String> flags) { | 15659 Handle<String> flags) { |
15660 Isolate* isolate = pattern->GetIsolate(); | 15660 Isolate* isolate = pattern->GetIsolate(); |
15661 Handle<JSFunction> constructor = isolate->regexp_function(); | 15661 Handle<JSFunction> constructor = isolate->regexp_function(); |
15662 Handle<JSRegExp> regexp = | 15662 Handle<JSRegExp> regexp = |
15663 Handle<JSRegExp>::cast(isolate->factory()->NewJSObject(constructor)); | 15663 Handle<JSRegExp>::cast(isolate->factory()->NewJSObject(constructor)); |
15664 | 15664 |
15665 return JSRegExp::Initialize(regexp, pattern, flags); | 15665 return JSRegExp::Initialize(regexp, pattern, flags); |
15666 } | 15666 } |
15667 | 15667 |
15668 | 15668 |
| 15669 // static |
| 15670 Handle<JSRegExp> JSRegExp::Copy(Handle<JSRegExp> regexp) { |
| 15671 Isolate* const isolate = regexp->GetIsolate(); |
| 15672 return Handle<JSRegExp>::cast(isolate->factory()->CopyJSObject(regexp)); |
| 15673 } |
| 15674 |
| 15675 |
15669 static JSRegExp::Flags RegExpFlagsFromString(Handle<String> flags, | 15676 static JSRegExp::Flags RegExpFlagsFromString(Handle<String> flags, |
15670 bool* success) { | 15677 bool* success) { |
15671 uint32_t value = JSRegExp::NONE; | 15678 uint32_t value = JSRegExp::NONE; |
15672 int length = flags->length(); | 15679 int length = flags->length(); |
15673 // A longer flags string cannot be valid. | 15680 // A longer flags string cannot be valid. |
15674 if (length > 5) return JSRegExp::Flags(0); | 15681 if (length > 5) return JSRegExp::Flags(0); |
15675 for (int i = 0; i < length; i++) { | 15682 for (int i = 0; i < length; i++) { |
15676 uint32_t flag = JSRegExp::NONE; | 15683 uint32_t flag = JSRegExp::NONE; |
15677 switch (flags->Get(i)) { | 15684 switch (flags->Get(i)) { |
15678 case 'g': | 15685 case 'g': |
(...skipping 2862 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
18541 if (cell->value() != *new_value) { | 18548 if (cell->value() != *new_value) { |
18542 cell->set_value(*new_value); | 18549 cell->set_value(*new_value); |
18543 Isolate* isolate = cell->GetIsolate(); | 18550 Isolate* isolate = cell->GetIsolate(); |
18544 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 18551 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
18545 isolate, DependentCode::kPropertyCellChangedGroup); | 18552 isolate, DependentCode::kPropertyCellChangedGroup); |
18546 } | 18553 } |
18547 } | 18554 } |
18548 | 18555 |
18549 } // namespace internal | 18556 } // namespace internal |
18550 } // namespace v8 | 18557 } // namespace v8 |
OLD | NEW |