Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(423)

Side by Side Diff: src/api.cc

Issue 23401003: new persistent semantics (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 639 matching lines...) Expand 10 before | Expand all | Expand 10 after
650 if (IsDeadCheck(isolate, "V8::Persistent::New")) return NULL; 650 if (IsDeadCheck(isolate, "V8::Persistent::New")) return NULL;
651 LOG_API(isolate, "Persistent::New"); 651 LOG_API(isolate, "Persistent::New");
652 i::Handle<i::Object> result = isolate->global_handles()->Create(*obj); 652 i::Handle<i::Object> result = isolate->global_handles()->Create(*obj);
653 #ifdef DEBUG 653 #ifdef DEBUG
654 (*obj)->Verify(); 654 (*obj)->Verify();
655 #endif // DEBUG 655 #endif // DEBUG
656 return result.location(); 656 return result.location();
657 } 657 }
658 658
659 659
660 i::Object** V8::CopyPersistent(i::Object** obj) {
661 i::Handle<i::Object> result = i::GlobalHandles::CopyGlobal(obj);
662 #ifdef DEBUG
663 (*obj)->Verify();
664 #endif // DEBUG
665 return result.location();
666 }
667
668
660 void V8::MakeWeak(i::Object** object, 669 void V8::MakeWeak(i::Object** object,
661 void* parameters, 670 void* parameters,
671 WeakCallback weak_callback,
662 RevivableCallback weak_reference_callback) { 672 RevivableCallback weak_reference_callback) {
663 i::GlobalHandles::MakeWeak(object, 673 i::GlobalHandles::MakeWeak(object,
664 parameters, 674 parameters,
675 weak_callback,
665 weak_reference_callback); 676 weak_reference_callback);
666 } 677 }
667 678
668 679
669 void V8::ClearWeak(i::Object** obj) { 680 void V8::ClearWeak(i::Object** obj) {
670 i::GlobalHandles::ClearWeakness(obj); 681 i::GlobalHandles::ClearWeakness(obj);
671 } 682 }
672 683
673 684
674 void V8::DisposeGlobal(i::Object** obj) { 685 void V8::DisposeGlobal(i::Object** obj) {
(...skipping 4891 matching lines...) Expand 10 before | Expand all | Expand 10 after
5566 global_constructor->set_needs_access_check( 5577 global_constructor->set_needs_access_check(
5567 proxy_constructor->needs_access_check()); 5578 proxy_constructor->needs_access_check());
5568 } 5579 }
5569 isolate->runtime_profiler()->Reset(); 5580 isolate->runtime_profiler()->Reset();
5570 } 5581 }
5571 // Leave V8. 5582 // Leave V8.
5572 5583
5573 return env; 5584 return env;
5574 } 5585 }
5575 5586
5576 #ifdef V8_USE_UNSAFE_HANDLES
5577 Persistent<Context> v8::Context::New(
5578 v8::ExtensionConfiguration* extensions,
5579 v8::Handle<ObjectTemplate> global_template,
5580 v8::Handle<Value> global_object) {
5581 i::Isolate::EnsureDefaultIsolate();
5582 i::Isolate* isolate = i::Isolate::Current();
5583 Isolate* external_isolate = reinterpret_cast<Isolate*>(isolate);
5584 EnsureInitializedForIsolate(isolate, "v8::Context::New()");
5585 LOG_API(isolate, "Context::New");
5586 ON_BAILOUT(isolate, "v8::Context::New()", return Persistent<Context>());
5587 i::HandleScope scope(isolate);
5588 i::Handle<i::Context> env =
5589 CreateEnvironment(isolate, extensions, global_template, global_object);
5590 if (env.is_null()) return Persistent<Context>();
5591 return Persistent<Context>::New(external_isolate, Utils::ToLocal(env));
5592 }
5593 #endif
5594
5595
5596 Local<Context> v8::Context::New( 5587 Local<Context> v8::Context::New(
5597 v8::Isolate* external_isolate, 5588 v8::Isolate* external_isolate,
5598 v8::ExtensionConfiguration* extensions, 5589 v8::ExtensionConfiguration* extensions,
5599 v8::Handle<ObjectTemplate> global_template, 5590 v8::Handle<ObjectTemplate> global_template,
5600 v8::Handle<Value> global_object) { 5591 v8::Handle<Value> global_object) {
5601 i::Isolate::EnsureDefaultIsolate(); 5592 i::Isolate::EnsureDefaultIsolate();
5602 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(external_isolate); 5593 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(external_isolate);
5603 EnsureInitializedForIsolate(isolate, "v8::Context::New()"); 5594 EnsureInitializedForIsolate(isolate, "v8::Context::New()");
5604 LOG_API(isolate, "Context::New"); 5595 LOG_API(isolate, "Context::New");
5605 ON_BAILOUT(isolate, "v8::Context::New()", return Local<Context>()); 5596 ON_BAILOUT(isolate, "v8::Context::New()", return Local<Context>());
(...skipping 2567 matching lines...) Expand 10 before | Expand all | Expand 10 after
8173 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); 8164 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate());
8174 Address callback_address = 8165 Address callback_address =
8175 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); 8166 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback));
8176 VMState<EXTERNAL> state(isolate); 8167 VMState<EXTERNAL> state(isolate);
8177 ExternalCallbackScope call_scope(isolate, callback_address); 8168 ExternalCallbackScope call_scope(isolate, callback_address);
8178 return callback(info); 8169 return callback(info);
8179 } 8170 }
8180 8171
8181 8172
8182 } } // namespace v8::internal 8173 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698