Chromium Code Reviews| Index: src/objects.cc |
| diff --git a/src/objects.cc b/src/objects.cc |
| index 7b857033fde123daae88341b5c006b1373d06ace..b1d5f1453c1a6aa62e760db7df455dc3a6aa1da2 100644 |
| --- a/src/objects.cc |
| +++ b/src/objects.cc |
| @@ -2196,6 +2196,31 @@ MaybeObject* JSReceiver::SetProperty(LookupResult* result, |
| } |
| +bool JSProxy::HasPropertyWithHandler(String* name_raw) { |
| + Isolate* isolate = GetIsolate(); |
| + HandleScope scope(isolate); |
| + Handle<Object> receiver(this); |
| + Handle<Object> name(name_raw); |
| + Handle<Object> handler(this->handler()); |
| + |
| + // Extract trap function. |
| + Handle<String> trap_name = isolate->factory()->LookupAsciiSymbol("has"); |
| + Handle<Object> trap(v8::internal::GetProperty(handler, trap_name)); |
|
Mads Ager (chromium)
2011/07/19 09:35:28
I would use = instead of constructor syntax here.
|
| + if (trap->IsUndefined()) { |
| + trap = isolate->derived_has_trap(); |
| + } |
| + |
| + // Call trap function. |
| + Object** args[] = { name.location() }; |
| + bool has_exception; |
| + Handle<Object> result = |
| + Execution::Call(trap, handler, ARRAY_SIZE(args), args, &has_exception); |
| + if (has_exception) return Failure::Exception(); |
| + |
| + return result->ToBoolean()->IsTrue(); |
| +} |
| + |
| + |
| MUST_USE_RESULT MaybeObject* JSProxy::SetPropertyWithHandler( |
| String* name_raw, |
| Object* value_raw, |