OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 19628 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
19639 function = CompileRun("function foo() {}; foo").As<Object>(); | 19639 function = CompileRun("function foo() {}; foo").As<Object>(); |
19640 } | 19640 } |
19641 | 19641 |
19642 Local<Context> other_context = Context::New(CcTest::isolate()); | 19642 Local<Context> other_context = Context::New(CcTest::isolate()); |
19643 Context::Scope scope(other_context); | 19643 Context::Scope scope(other_context); |
19644 CHECK(function->CreationContext() == context); | 19644 CHECK(function->CreationContext() == context); |
19645 CheckContextId(function, 1); | 19645 CheckContextId(function, 1); |
19646 } | 19646 } |
19647 | 19647 |
19648 | 19648 |
| 19649 THREADED_TEST(CreationContextOfJsBoundFunction) { |
| 19650 HandleScope handle_scope(CcTest::isolate()); |
| 19651 Local<Context> context1 = Context::New(CcTest::isolate()); |
| 19652 InstallContextId(context1, 1); |
| 19653 Local<Context> context2 = Context::New(CcTest::isolate()); |
| 19654 InstallContextId(context2, 2); |
| 19655 |
| 19656 Local<Function> target_function; |
| 19657 { |
| 19658 Context::Scope scope(context1); |
| 19659 target_function = CompileRun("function foo() {}; foo").As<Function>(); |
| 19660 } |
| 19661 |
| 19662 Local<Function> bound_function1, bound_function2; |
| 19663 { |
| 19664 Context::Scope scope(context2); |
| 19665 CHECK(context2->Global() |
| 19666 ->Set(context2, v8_str("foo"), target_function) |
| 19667 .FromJust()); |
| 19668 bound_function1 = CompileRun("foo.bind(1)").As<Function>(); |
| 19669 bound_function2 = |
| 19670 CompileRun("Function.prototype.bind.call(foo, 2)").As<Function>(); |
| 19671 } |
| 19672 |
| 19673 Local<Context> other_context = Context::New(CcTest::isolate()); |
| 19674 Context::Scope scope(other_context); |
| 19675 CHECK(bound_function1->CreationContext() == context1); |
| 19676 CheckContextId(bound_function1, 1); |
| 19677 CHECK(bound_function2->CreationContext() == context2); |
| 19678 CheckContextId(bound_function2, 1); |
| 19679 } |
| 19680 |
| 19681 |
19649 void HasOwnPropertyIndexedPropertyGetter( | 19682 void HasOwnPropertyIndexedPropertyGetter( |
19650 uint32_t index, | 19683 uint32_t index, |
19651 const v8::PropertyCallbackInfo<v8::Value>& info) { | 19684 const v8::PropertyCallbackInfo<v8::Value>& info) { |
19652 if (index == 42) info.GetReturnValue().Set(v8_str("yes")); | 19685 if (index == 42) info.GetReturnValue().Set(v8_str("yes")); |
19653 } | 19686 } |
19654 | 19687 |
19655 | 19688 |
19656 void HasOwnPropertyNamedPropertyGetter( | 19689 void HasOwnPropertyNamedPropertyGetter( |
19657 Local<Name> property, const v8::PropertyCallbackInfo<v8::Value>& info) { | 19690 Local<Name> property, const v8::PropertyCallbackInfo<v8::Value>& info) { |
19658 if (property->Equals(info.GetIsolate()->GetCurrentContext(), v8_str("foo")) | 19691 if (property->Equals(info.GetIsolate()->GetCurrentContext(), v8_str("foo")) |
(...skipping 4646 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
24305 CHECK(proxy->GetTarget()->SameValue(target)); | 24338 CHECK(proxy->GetTarget()->SameValue(target)); |
24306 CHECK(proxy->GetHandler()->SameValue(handler)); | 24339 CHECK(proxy->GetHandler()->SameValue(handler)); |
24307 | 24340 |
24308 proxy->Revoke(); | 24341 proxy->Revoke(); |
24309 CHECK(proxy->IsProxy()); | 24342 CHECK(proxy->IsProxy()); |
24310 CHECK(!target->IsProxy()); | 24343 CHECK(!target->IsProxy()); |
24311 CHECK(proxy->IsRevoked()); | 24344 CHECK(proxy->IsRevoked()); |
24312 CHECK(proxy->GetTarget()->SameValue(target)); | 24345 CHECK(proxy->GetTarget()->SameValue(target)); |
24313 CHECK(proxy->GetHandler()->IsNull()); | 24346 CHECK(proxy->GetHandler()->IsNull()); |
24314 } | 24347 } |
OLD | NEW |