OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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 16023 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
16034 | 16034 |
16035 Map* map = regexp->map(); | 16035 Map* map = regexp->map(); |
16036 Object* constructor = map->GetConstructor(); | 16036 Object* constructor = map->GetConstructor(); |
16037 if (constructor->IsJSFunction() && | 16037 if (constructor->IsJSFunction() && |
16038 JSFunction::cast(constructor)->initial_map() == map) { | 16038 JSFunction::cast(constructor)->initial_map() == map) { |
16039 // If we still have the original map, set in-object properties directly. | 16039 // If we still have the original map, set in-object properties directly. |
16040 regexp->InObjectPropertyAtPut(JSRegExp::kLastIndexFieldIndex, | 16040 regexp->InObjectPropertyAtPut(JSRegExp::kLastIndexFieldIndex, |
16041 Smi::FromInt(0), SKIP_WRITE_BARRIER); | 16041 Smi::FromInt(0), SKIP_WRITE_BARRIER); |
16042 } else { | 16042 } else { |
16043 // Map has changed, so use generic, but slower, method. | 16043 // Map has changed, so use generic, but slower, method. |
16044 PropertyAttributes writable = | 16044 RETURN_ON_EXCEPTION( |
16045 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE); | 16045 isolate, |
16046 JSObject::SetOwnPropertyIgnoreAttributes( | 16046 JSReceiver::SetProperty(regexp, factory->last_index_string(), |
16047 regexp, factory->last_index_string(), | 16047 Handle<Smi>(Smi::FromInt(0), isolate), STRICT), |
16048 Handle<Smi>(Smi::FromInt(0), isolate), writable) | 16048 JSRegExp); |
16049 .Check(); | |
16050 } | 16049 } |
16051 | 16050 |
16052 return regexp; | 16051 return regexp; |
16053 } | 16052 } |
16054 | 16053 |
16055 | 16054 |
16056 // RegExpKey carries the source and flags of a regular expression as key. | 16055 // RegExpKey carries the source and flags of a regular expression as key. |
16057 class RegExpKey : public HashTableKey { | 16056 class RegExpKey : public HashTableKey { |
16058 public: | 16057 public: |
16059 RegExpKey(Handle<String> string, JSRegExp::Flags flags) | 16058 RegExpKey(Handle<String> string, JSRegExp::Flags flags) |
(...skipping 2890 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
18950 | 18949 |
18951 Object* data_obj = | 18950 Object* data_obj = |
18952 constructor->shared()->get_api_func_data()->access_check_info(); | 18951 constructor->shared()->get_api_func_data()->access_check_info(); |
18953 if (data_obj->IsUndefined(isolate)) return nullptr; | 18952 if (data_obj->IsUndefined(isolate)) return nullptr; |
18954 | 18953 |
18955 return AccessCheckInfo::cast(data_obj); | 18954 return AccessCheckInfo::cast(data_obj); |
18956 } | 18955 } |
18957 | 18956 |
18958 } // namespace internal | 18957 } // namespace internal |
18959 } // namespace v8 | 18958 } // namespace v8 |
OLD | NEW |