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

Side by Side Diff: runtime/vm/object.cc

Issue 186003002: Pass in the isolate parameter to the weak persistent callback handler so that (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 9 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 | « runtime/vm/object.h ('k') | runtime/vm/scavenger.cc » ('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 (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/object.h" 5 #include "vm/object.h"
6 6
7 #include "include/dart_api.h" 7 #include "include/dart_api.h"
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "vm/assembler.h" 9 #include "vm/assembler.h"
10 #include "vm/cpu.h" 10 #include "vm/cpu.h"
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 } else if (value == '\\') { 412 } else if (value == '\\') {
413 return '\\'; 413 return '\\';
414 } else if (value == '$') { 414 } else if (value == '$') {
415 return '$'; 415 return '$';
416 } 416 }
417 UNREACHABLE(); 417 UNREACHABLE();
418 return '\0'; 418 return '\0';
419 } 419 }
420 420
421 421
422 static void DeleteWeakPersistentHandle(Dart_WeakPersistentHandle handle) { 422 static void DeleteWeakPersistentHandle(Dart_Isolate current_isolate,
423 ApiState* state = Isolate::Current()->api_state(); 423 Dart_WeakPersistentHandle handle) {
424 Isolate* isolate = reinterpret_cast<Isolate*>(current_isolate);
425 ApiState* state = isolate->api_state();
424 ASSERT(state != NULL); 426 ASSERT(state != NULL);
425 FinalizablePersistentHandle* weak_ref = 427 FinalizablePersistentHandle* weak_ref =
426 reinterpret_cast<FinalizablePersistentHandle*>(handle); 428 reinterpret_cast<FinalizablePersistentHandle*>(handle);
427 ASSERT(state->IsValidWeakPersistentHandle(handle)); 429 ASSERT(state->IsValidWeakPersistentHandle(handle));
428 state->weak_persistent_handles().FreeHandle(weak_ref); 430 state->weak_persistent_handles().FreeHandle(weak_ref);
429 } 431 }
430 432
431 433
432 void Object::InitOnce() { 434 void Object::InitOnce() {
433 // TODO(iposva): NoGCScope needs to be added here. 435 // TODO(iposva): NoGCScope needs to be added here.
(...skipping 6214 matching lines...) Expand 10 before | Expand all | Expand 10 after
6648 RawExternalTypedData* TokenStream::GetStream() const { 6650 RawExternalTypedData* TokenStream::GetStream() const {
6649 return raw_ptr()->stream_; 6651 return raw_ptr()->stream_;
6650 } 6652 }
6651 6653
6652 6654
6653 void TokenStream::SetStream(const ExternalTypedData& value) const { 6655 void TokenStream::SetStream(const ExternalTypedData& value) const {
6654 StorePointer(&raw_ptr()->stream_, value.raw()); 6656 StorePointer(&raw_ptr()->stream_, value.raw());
6655 } 6657 }
6656 6658
6657 6659
6658 void TokenStream::DataFinalizer(Dart_WeakPersistentHandle handle, void *peer) { 6660 void TokenStream::DataFinalizer(Dart_Isolate isolate,
6661 Dart_WeakPersistentHandle handle,
6662 void *peer) {
6659 ASSERT(peer != NULL); 6663 ASSERT(peer != NULL);
6660 ::free(peer); 6664 ::free(peer);
6661 DeleteWeakPersistentHandle(handle); 6665 DeleteWeakPersistentHandle(isolate, handle);
6662 } 6666 }
6663 6667
6664 6668
6665 RawString* TokenStream::PrivateKey() const { 6669 RawString* TokenStream::PrivateKey() const {
6666 return raw_ptr()->private_key_; 6670 return raw_ptr()->private_key_;
6667 } 6671 }
6668 6672
6669 6673
6670 void TokenStream::SetPrivateKey(const String& value) const { 6674 void TokenStream::SetPrivateKey(const String& value) const {
6671 StorePointer(&raw_ptr()->private_key_, value.raw()); 6675 StorePointer(&raw_ptr()->private_key_, value.raw());
(...skipping 9215 matching lines...) Expand 10 before | Expand all | Expand 10 after
15887 Dart_PeerFinalizer cback) { 15891 Dart_PeerFinalizer cback) {
15888 ASSERT(!str.IsNull() && str.IsOneByteString()); 15892 ASSERT(!str.IsNull() && str.IsOneByteString());
15889 ASSERT(peer != NULL); 15893 ASSERT(peer != NULL);
15890 ExternalStringData<uint8_t>* ext_data = 15894 ExternalStringData<uint8_t>* ext_data =
15891 new ExternalStringData<uint8_t>(NULL, peer, cback); 15895 new ExternalStringData<uint8_t>(NULL, peer, cback);
15892 AddFinalizer(str, ext_data, OneByteString::Finalize); 15896 AddFinalizer(str, ext_data, OneByteString::Finalize);
15893 Isolate::Current()->heap()->SetPeer(str.raw(), peer); 15897 Isolate::Current()->heap()->SetPeer(str.raw(), peer);
15894 } 15898 }
15895 15899
15896 15900
15897 void OneByteString::Finalize(Dart_WeakPersistentHandle handle, void* peer) { 15901 void OneByteString::Finalize(Dart_Isolate isolate,
15902 Dart_WeakPersistentHandle handle,
15903 void* peer) {
15898 delete reinterpret_cast<ExternalStringData<uint8_t>*>(peer); 15904 delete reinterpret_cast<ExternalStringData<uint8_t>*>(peer);
15899 DeleteWeakPersistentHandle(handle); 15905 DeleteWeakPersistentHandle(isolate, handle);
15900 } 15906 }
15901 15907
15902 15908
15903 RawTwoByteString* TwoByteString::EscapeSpecialCharacters(const String& str) { 15909 RawTwoByteString* TwoByteString::EscapeSpecialCharacters(const String& str) {
15904 intptr_t len = str.Length(); 15910 intptr_t len = str.Length();
15905 if (len > 0) { 15911 if (len > 0) {
15906 intptr_t num_escapes = 0; 15912 intptr_t num_escapes = 0;
15907 for (intptr_t i = 0; i < len; i++) { 15913 for (intptr_t i = 0; i < len; i++) {
15908 if (IsSpecialCharacter(*CharAddr(str, i))) { 15914 if (IsSpecialCharacter(*CharAddr(str, i))) {
15909 num_escapes += 1; 15915 num_escapes += 1;
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
16061 Dart_PeerFinalizer cback) { 16067 Dart_PeerFinalizer cback) {
16062 ASSERT(!str.IsNull() && str.IsTwoByteString()); 16068 ASSERT(!str.IsNull() && str.IsTwoByteString());
16063 ASSERT(peer != NULL); 16069 ASSERT(peer != NULL);
16064 ExternalStringData<uint16_t>* ext_data = 16070 ExternalStringData<uint16_t>* ext_data =
16065 new ExternalStringData<uint16_t>(NULL, peer, cback); 16071 new ExternalStringData<uint16_t>(NULL, peer, cback);
16066 AddFinalizer(str, ext_data, TwoByteString::Finalize); 16072 AddFinalizer(str, ext_data, TwoByteString::Finalize);
16067 Isolate::Current()->heap()->SetPeer(str.raw(), peer); 16073 Isolate::Current()->heap()->SetPeer(str.raw(), peer);
16068 } 16074 }
16069 16075
16070 16076
16071 void TwoByteString::Finalize(Dart_WeakPersistentHandle handle, void* peer) { 16077 void TwoByteString::Finalize(Dart_Isolate isolate,
16078 Dart_WeakPersistentHandle handle,
16079 void* peer) {
16072 delete reinterpret_cast<ExternalStringData<uint16_t>*>(peer); 16080 delete reinterpret_cast<ExternalStringData<uint16_t>*>(peer);
16073 DeleteWeakPersistentHandle(handle); 16081 DeleteWeakPersistentHandle(isolate, handle);
16074 } 16082 }
16075 16083
16076 16084
16077 RawExternalOneByteString* ExternalOneByteString::New( 16085 RawExternalOneByteString* ExternalOneByteString::New(
16078 const uint8_t* data, 16086 const uint8_t* data,
16079 intptr_t len, 16087 intptr_t len,
16080 void* peer, 16088 void* peer,
16081 Dart_PeerFinalizer callback, 16089 Dart_PeerFinalizer callback,
16082 Heap::Space space) { 16090 Heap::Space space) {
16083 ASSERT(Isolate::Current()->object_store()-> 16091 ASSERT(Isolate::Current()->object_store()->
(...skipping 14 matching lines...) Expand all
16098 result ^= raw; 16106 result ^= raw;
16099 result.SetLength(len); 16107 result.SetLength(len);
16100 result.SetHash(0); 16108 result.SetHash(0);
16101 SetExternalData(result, external_data); 16109 SetExternalData(result, external_data);
16102 } 16110 }
16103 AddFinalizer(result, external_data, ExternalOneByteString::Finalize); 16111 AddFinalizer(result, external_data, ExternalOneByteString::Finalize);
16104 return ExternalOneByteString::raw(result); 16112 return ExternalOneByteString::raw(result);
16105 } 16113 }
16106 16114
16107 16115
16108 void ExternalOneByteString::Finalize(Dart_WeakPersistentHandle handle, 16116 void ExternalOneByteString::Finalize(Dart_Isolate isolate,
16117 Dart_WeakPersistentHandle handle,
16109 void* peer) { 16118 void* peer) {
16110 delete reinterpret_cast<ExternalStringData<uint8_t>*>(peer); 16119 delete reinterpret_cast<ExternalStringData<uint8_t>*>(peer);
16111 DeleteWeakPersistentHandle(handle); 16120 DeleteWeakPersistentHandle(isolate, handle);
16112 } 16121 }
16113 16122
16114 16123
16115 RawExternalTwoByteString* ExternalTwoByteString::New( 16124 RawExternalTwoByteString* ExternalTwoByteString::New(
16116 const uint16_t* data, 16125 const uint16_t* data,
16117 intptr_t len, 16126 intptr_t len,
16118 void* peer, 16127 void* peer,
16119 Dart_PeerFinalizer callback, 16128 Dart_PeerFinalizer callback,
16120 Heap::Space space) { 16129 Heap::Space space) {
16121 ASSERT(Isolate::Current()->object_store()->external_two_byte_string_class() != 16130 ASSERT(Isolate::Current()->object_store()->external_two_byte_string_class() !=
(...skipping 14 matching lines...) Expand all
16136 result ^= raw; 16145 result ^= raw;
16137 result.SetLength(len); 16146 result.SetLength(len);
16138 result.SetHash(0); 16147 result.SetHash(0);
16139 SetExternalData(result, external_data); 16148 SetExternalData(result, external_data);
16140 } 16149 }
16141 AddFinalizer(result, external_data, ExternalTwoByteString::Finalize); 16150 AddFinalizer(result, external_data, ExternalTwoByteString::Finalize);
16142 return ExternalTwoByteString::raw(result); 16151 return ExternalTwoByteString::raw(result);
16143 } 16152 }
16144 16153
16145 16154
16146 void ExternalTwoByteString::Finalize(Dart_WeakPersistentHandle handle, 16155 void ExternalTwoByteString::Finalize(Dart_Isolate isolate,
16156 Dart_WeakPersistentHandle handle,
16147 void* peer) { 16157 void* peer) {
16148 delete reinterpret_cast<ExternalStringData<uint16_t>*>(peer); 16158 delete reinterpret_cast<ExternalStringData<uint16_t>*>(peer);
16149 DeleteWeakPersistentHandle(handle); 16159 DeleteWeakPersistentHandle(isolate, handle);
16150 } 16160 }
16151 16161
16152 16162
16153 RawBool* Bool::New(bool value) { 16163 RawBool* Bool::New(bool value) {
16154 ASSERT(Isolate::Current()->object_store()->bool_class() != Class::null()); 16164 ASSERT(Isolate::Current()->object_store()->bool_class() != Class::null());
16155 Bool& result = Bool::Handle(); 16165 Bool& result = Bool::Handle();
16156 { 16166 {
16157 // Since the two boolean instances are singletons we allocate them straight 16167 // Since the two boolean instances are singletons we allocate them straight
16158 // in the old generation. 16168 // in the old generation.
16159 RawObject* raw = Object::Allocate(Bool::kClassId, 16169 RawObject* raw = Object::Allocate(Bool::kClassId,
(...skipping 1313 matching lines...) Expand 10 before | Expand all | Expand 10 after
17473 return "_MirrorReference"; 17483 return "_MirrorReference";
17474 } 17484 }
17475 17485
17476 17486
17477 void MirrorReference::PrintToJSONStream(JSONStream* stream, bool ref) const { 17487 void MirrorReference::PrintToJSONStream(JSONStream* stream, bool ref) const {
17478 Instance::PrintToJSONStream(stream, ref); 17488 Instance::PrintToJSONStream(stream, ref);
17479 } 17489 }
17480 17490
17481 17491
17482 } // namespace dart 17492 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/scavenger.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698