| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 2284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2295 Handle<JSReceiver> receiver(receiver_raw); | 2295 Handle<JSReceiver> receiver(receiver_raw); |
| 2296 Handle<Object> name(name_raw); | 2296 Handle<Object> name(name_raw); |
| 2297 | 2297 |
| 2298 Handle<Object> args[] = { name }; | 2298 Handle<Object> args[] = { name }; |
| 2299 Handle<Object> result = CallTrap( | 2299 Handle<Object> result = CallTrap( |
| 2300 "getPropertyDescriptor", Handle<Object>(), ARRAY_SIZE(args), args); | 2300 "getPropertyDescriptor", Handle<Object>(), ARRAY_SIZE(args), args); |
| 2301 if (isolate->has_pending_exception()) return NONE; | 2301 if (isolate->has_pending_exception()) return NONE; |
| 2302 | 2302 |
| 2303 if (result->IsUndefined()) return ABSENT; | 2303 if (result->IsUndefined()) return ABSENT; |
| 2304 | 2304 |
| 2305 // TODO(rossberg): convert result to PropertyAttributes | 2305 bool has_pending_exception; |
| 2306 return NONE; | 2306 Object** argv[] = { result.location() }; |
| 2307 Handle<Object> desc = |
| 2308 Execution::Call(isolate->to_complete_property_descriptor(), result, |
| 2309 ARRAY_SIZE(argv), argv, &has_pending_exception); |
| 2310 if (has_pending_exception) return NONE; |
| 2311 |
| 2312 // Convert result to PropertyAttributes. |
| 2313 Handle<String> enum_n = isolate->factory()->LookupAsciiSymbol("enumerable"); |
| 2314 Handle<Object> enumerable(v8::internal::GetProperty(desc, enum_n)); |
| 2315 if (isolate->has_pending_exception()) return NONE; |
| 2316 Handle<String> conf_n = isolate->factory()->LookupAsciiSymbol("configurable"); |
| 2317 Handle<Object> configurable(v8::internal::GetProperty(desc, conf_n)); |
| 2318 if (isolate->has_pending_exception()) return NONE; |
| 2319 Handle<String> writ_n = isolate->factory()->LookupAsciiSymbol("writable"); |
| 2320 Handle<Object> writable(v8::internal::GetProperty(desc, writ_n)); |
| 2321 if (isolate->has_pending_exception()) return NONE; |
| 2322 |
| 2323 int attributes = NONE; |
| 2324 if (enumerable->ToBoolean()->IsFalse()) attributes |= DONT_ENUM; |
| 2325 if (configurable->ToBoolean()->IsFalse()) attributes |= DONT_DELETE; |
| 2326 if (writable->ToBoolean()->IsFalse()) attributes |= READ_ONLY; |
| 2327 return static_cast<PropertyAttributes>(attributes); |
| 2307 } | 2328 } |
| 2308 | 2329 |
| 2309 | 2330 |
| 2310 void JSProxy::Fix() { | 2331 void JSProxy::Fix() { |
| 2311 Isolate* isolate = GetIsolate(); | 2332 Isolate* isolate = GetIsolate(); |
| 2312 HandleScope scope(isolate); | 2333 HandleScope scope(isolate); |
| 2313 Handle<JSProxy> self(this); | 2334 Handle<JSProxy> self(this); |
| 2314 | 2335 |
| 2315 if (IsJSFunctionProxy()) { | 2336 if (IsJSFunctionProxy()) { |
| 2316 isolate->factory()->BecomeJSFunction(self); | 2337 isolate->factory()->BecomeJSFunction(self); |
| (...skipping 9290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11607 if (break_point_objects()->IsUndefined()) return 0; | 11628 if (break_point_objects()->IsUndefined()) return 0; |
| 11608 // Single break point. | 11629 // Single break point. |
| 11609 if (!break_point_objects()->IsFixedArray()) return 1; | 11630 if (!break_point_objects()->IsFixedArray()) return 1; |
| 11610 // Multiple break points. | 11631 // Multiple break points. |
| 11611 return FixedArray::cast(break_point_objects())->length(); | 11632 return FixedArray::cast(break_point_objects())->length(); |
| 11612 } | 11633 } |
| 11613 #endif | 11634 #endif |
| 11614 | 11635 |
| 11615 | 11636 |
| 11616 } } // namespace v8::internal | 11637 } } // namespace v8::internal |
| OLD | NEW |