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

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: comments, etc 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
« no previous file with comments | « include/v8.h ('k') | src/global-handles.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 642 matching lines...) Expand 10 before | Expand all | Expand 10 after
653 if (IsDeadCheck(isolate, "V8::Persistent::New")) return NULL; 653 if (IsDeadCheck(isolate, "V8::Persistent::New")) return NULL;
654 LOG_API(isolate, "Persistent::New"); 654 LOG_API(isolate, "Persistent::New");
655 i::Handle<i::Object> result = isolate->global_handles()->Create(*obj); 655 i::Handle<i::Object> result = isolate->global_handles()->Create(*obj);
656 #ifdef DEBUG 656 #ifdef DEBUG
657 (*obj)->Verify(); 657 (*obj)->Verify();
658 #endif // DEBUG 658 #endif // DEBUG
659 return result.location(); 659 return result.location();
660 } 660 }
661 661
662 662
663 i::Object** V8::CopyPersistent(i::Object** obj) {
664 i::Handle<i::Object> result = i::GlobalHandles::CopyGlobal(obj);
665 #ifdef DEBUG
666 (*obj)->Verify();
667 #endif // DEBUG
668 return result.location();
669 }
670
671
663 void V8::MakeWeak(i::Object** object, 672 void V8::MakeWeak(i::Object** object,
664 void* parameters, 673 void* parameters,
674 WeakCallback weak_callback,
665 RevivableCallback weak_reference_callback) { 675 RevivableCallback weak_reference_callback) {
666 i::GlobalHandles::MakeWeak(object, 676 i::GlobalHandles::MakeWeak(object,
667 parameters, 677 parameters,
678 weak_callback,
668 weak_reference_callback); 679 weak_reference_callback);
669 } 680 }
670 681
671 682
672 void V8::ClearWeak(i::Object** obj) { 683 void V8::ClearWeak(i::Object** obj) {
673 i::GlobalHandles::ClearWeakness(obj); 684 i::GlobalHandles::ClearWeakness(obj);
674 } 685 }
675 686
676 687
677 void V8::DisposeGlobal(i::Object** obj) { 688 void V8::DisposeGlobal(i::Object** obj) {
(...skipping 4750 matching lines...) Expand 10 before | Expand all | Expand 10 after
5428 global_constructor->set_needs_access_check( 5439 global_constructor->set_needs_access_check(
5429 proxy_constructor->needs_access_check()); 5440 proxy_constructor->needs_access_check());
5430 } 5441 }
5431 isolate->runtime_profiler()->Reset(); 5442 isolate->runtime_profiler()->Reset();
5432 } 5443 }
5433 // Leave V8. 5444 // Leave V8.
5434 5445
5435 return env; 5446 return env;
5436 } 5447 }
5437 5448
5438 #ifdef V8_USE_UNSAFE_HANDLES
5439 Persistent<Context> v8::Context::New(
5440 v8::ExtensionConfiguration* extensions,
5441 v8::Handle<ObjectTemplate> global_template,
5442 v8::Handle<Value> global_object) {
5443 i::Isolate::EnsureDefaultIsolate();
5444 i::Isolate* isolate = i::Isolate::Current();
5445 Isolate* external_isolate = reinterpret_cast<Isolate*>(isolate);
5446 EnsureInitializedForIsolate(isolate, "v8::Context::New()");
5447 LOG_API(isolate, "Context::New");
5448 ON_BAILOUT(isolate, "v8::Context::New()", return Persistent<Context>());
5449 i::HandleScope scope(isolate);
5450 i::Handle<i::Context> env =
5451 CreateEnvironment(isolate, extensions, global_template, global_object);
5452 if (env.is_null()) return Persistent<Context>();
5453 return Persistent<Context>::New(external_isolate, Utils::ToLocal(env));
5454 }
5455 #endif
5456
5457
5458 Local<Context> v8::Context::New( 5449 Local<Context> v8::Context::New(
5459 v8::Isolate* external_isolate, 5450 v8::Isolate* external_isolate,
5460 v8::ExtensionConfiguration* extensions, 5451 v8::ExtensionConfiguration* extensions,
5461 v8::Handle<ObjectTemplate> global_template, 5452 v8::Handle<ObjectTemplate> global_template,
5462 v8::Handle<Value> global_object) { 5453 v8::Handle<Value> global_object) {
5463 i::Isolate::EnsureDefaultIsolate(); 5454 i::Isolate::EnsureDefaultIsolate();
5464 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(external_isolate); 5455 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(external_isolate);
5465 EnsureInitializedForIsolate(isolate, "v8::Context::New()"); 5456 EnsureInitializedForIsolate(isolate, "v8::Context::New()");
5466 LOG_API(isolate, "Context::New"); 5457 LOG_API(isolate, "Context::New");
5467 ON_BAILOUT(isolate, "v8::Context::New()", return Local<Context>()); 5458 ON_BAILOUT(isolate, "v8::Context::New()", return Local<Context>());
(...skipping 2433 matching lines...) Expand 10 before | Expand all | Expand 10 after
7901 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); 7892 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate());
7902 Address callback_address = 7893 Address callback_address =
7903 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); 7894 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback));
7904 VMState<EXTERNAL> state(isolate); 7895 VMState<EXTERNAL> state(isolate);
7905 ExternalCallbackScope call_scope(isolate, callback_address); 7896 ExternalCallbackScope call_scope(isolate, callback_address);
7906 callback(info); 7897 callback(info);
7907 } 7898 }
7908 7899
7909 7900
7910 } } // namespace v8::internal 7901 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « include/v8.h ('k') | src/global-handles.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698