OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 <stdlib.h> | 5 #include <stdlib.h> |
6 #include <limits> | 6 #include <limits> |
7 | 7 |
8 #include "src/v8.h" | 8 #include "src/v8.h" |
9 | 9 |
10 #include "src/accessors.h" | 10 #include "src/accessors.h" |
(...skipping 2156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2167 RUNTIME_FUNCTION(Runtime_DisableAccessChecks) { | 2167 RUNTIME_FUNCTION(Runtime_DisableAccessChecks) { |
2168 HandleScope scope(isolate); | 2168 HandleScope scope(isolate); |
2169 ASSERT(args.length() == 1); | 2169 ASSERT(args.length() == 1); |
2170 CONVERT_ARG_HANDLE_CHECKED(HeapObject, object, 0); | 2170 CONVERT_ARG_HANDLE_CHECKED(HeapObject, object, 0); |
2171 Handle<Map> old_map(object->map()); | 2171 Handle<Map> old_map(object->map()); |
2172 bool needs_access_checks = old_map->is_access_check_needed(); | 2172 bool needs_access_checks = old_map->is_access_check_needed(); |
2173 if (needs_access_checks) { | 2173 if (needs_access_checks) { |
2174 // Copy map so it won't interfere constructor's initial map. | 2174 // Copy map so it won't interfere constructor's initial map. |
2175 Handle<Map> new_map = Map::Copy(old_map); | 2175 Handle<Map> new_map = Map::Copy(old_map); |
2176 new_map->set_is_access_check_needed(false); | 2176 new_map->set_is_access_check_needed(false); |
2177 if (object->IsJSObject()) { | 2177 JSObject::MigrateToMap(Handle<JSObject>::cast(object), new_map); |
2178 JSObject::MigrateToMap(Handle<JSObject>::cast(object), new_map); | |
2179 } else { | |
2180 object->set_map(*new_map); | |
2181 } | |
2182 } | 2178 } |
2183 return isolate->heap()->ToBoolean(needs_access_checks); | 2179 return isolate->heap()->ToBoolean(needs_access_checks); |
2184 } | 2180 } |
2185 | 2181 |
2186 | 2182 |
2187 RUNTIME_FUNCTION(Runtime_EnableAccessChecks) { | 2183 RUNTIME_FUNCTION(Runtime_EnableAccessChecks) { |
2188 HandleScope scope(isolate); | 2184 HandleScope scope(isolate); |
2189 ASSERT(args.length() == 1); | 2185 ASSERT(args.length() == 1); |
2190 CONVERT_ARG_HANDLE_CHECKED(HeapObject, object, 0); | 2186 CONVERT_ARG_HANDLE_CHECKED(HeapObject, object, 0); |
2191 Handle<Map> old_map(object->map()); | 2187 Handle<Map> old_map(object->map()); |
2192 if (!old_map->is_access_check_needed()) { | 2188 ASSERT(!old_map->is_access_check_needed()); |
2193 // Copy map so it won't interfere constructor's initial map. | 2189 // Copy map so it won't interfere constructor's initial map. |
2194 Handle<Map> new_map = Map::Copy(old_map); | 2190 Handle<Map> new_map = Map::Copy(old_map); |
2195 new_map->set_is_access_check_needed(true); | 2191 new_map->set_is_access_check_needed(true); |
2196 if (object->IsJSObject()) { | 2192 JSObject::MigrateToMap(Handle<JSObject>::cast(object), new_map); |
2197 JSObject::MigrateToMap(Handle<JSObject>::cast(object), new_map); | |
2198 } else { | |
2199 object->set_map(*new_map); | |
2200 } | |
2201 } | |
2202 return isolate->heap()->undefined_value(); | 2193 return isolate->heap()->undefined_value(); |
2203 } | 2194 } |
2204 | 2195 |
2205 | 2196 |
2206 // Transform getter or setter into something DefineAccessor can handle. | 2197 // Transform getter or setter into something DefineAccessor can handle. |
2207 static Handle<Object> InstantiateAccessorComponent(Isolate* isolate, | 2198 static Handle<Object> InstantiateAccessorComponent(Isolate* isolate, |
2208 Handle<Object> component) { | 2199 Handle<Object> component) { |
2209 if (component->IsUndefined()) return isolate->factory()->null_value(); | 2200 if (component->IsUndefined()) return isolate->factory()->null_value(); |
2210 Handle<FunctionTemplateInfo> info = | 2201 Handle<FunctionTemplateInfo> info = |
2211 Handle<FunctionTemplateInfo>::cast(component); | 2202 Handle<FunctionTemplateInfo>::cast(component); |
(...skipping 12999 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
15211 } | 15202 } |
15212 return NULL; | 15203 return NULL; |
15213 } | 15204 } |
15214 | 15205 |
15215 | 15206 |
15216 const Runtime::Function* Runtime::FunctionForId(Runtime::FunctionId id) { | 15207 const Runtime::Function* Runtime::FunctionForId(Runtime::FunctionId id) { |
15217 return &(kIntrinsicFunctions[static_cast<int>(id)]); | 15208 return &(kIntrinsicFunctions[static_cast<int>(id)]); |
15218 } | 15209 } |
15219 | 15210 |
15220 } } // namespace v8::internal | 15211 } } // namespace v8::internal |
OLD | NEW |