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

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

Issue 1016503005: Rename NoGCScope -> NoSafepointScope. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 5 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/profiler_service.cc ('k') | runtime/vm/runtime_entry.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 (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 #include "vm/object_store.h" 6 #include "vm/object_store.h"
7 #include "vm/snapshot.h" 7 #include "vm/snapshot.h"
8 #include "vm/stub_code.h" 8 #include "vm/stub_code.h"
9 #include "vm/symbols.h" 9 #include "vm/symbols.h"
10 #include "vm/visitor.h" 10 #include "vm/visitor.h"
(...skipping 888 matching lines...) Expand 10 before | Expand all | Expand 10 after
899 TokenStream& token_stream = TokenStream::ZoneHandle( 899 TokenStream& token_stream = TokenStream::ZoneHandle(
900 reader->zone(), NEW_OBJECT_WITH_LEN(TokenStream, len)); 900 reader->zone(), NEW_OBJECT_WITH_LEN(TokenStream, len));
901 reader->AddBackRef(object_id, &token_stream, kIsDeserialized); 901 reader->AddBackRef(object_id, &token_stream, kIsDeserialized);
902 902
903 // Set the object tags. 903 // Set the object tags.
904 token_stream.set_tags(tags); 904 token_stream.set_tags(tags);
905 905
906 // Read the stream of tokens into the TokenStream object for script 906 // Read the stream of tokens into the TokenStream object for script
907 // snapshots as we made a copy of token stream. 907 // snapshots as we made a copy of token stream.
908 if (kind == Snapshot::kScript) { 908 if (kind == Snapshot::kScript) {
909 NoGCScope no_gc; 909 NoSafepointScope no_safepoint;
910 RawExternalTypedData* stream = token_stream.GetStream(); 910 RawExternalTypedData* stream = token_stream.GetStream();
911 reader->ReadBytes(stream->ptr()->data_, len); 911 reader->ReadBytes(stream->ptr()->data_, len);
912 } 912 }
913 913
914 // Read in the literal/identifier token array. 914 // Read in the literal/identifier token array.
915 *(reader->TokensHandle()) ^= reader->ReadObjectImpl(); 915 *(reader->TokensHandle()) ^= reader->ReadObjectImpl();
916 token_stream.SetTokenObjects(*(reader->TokensHandle())); 916 token_stream.SetTokenObjects(*(reader->TokensHandle()));
917 // Read in the private key in use by the token stream. 917 // Read in the private key in use by the token stream.
918 *(reader->StringHandle()) ^= reader->ReadObjectImpl(); 918 *(reader->StringHandle()) ^= reader->ReadObjectImpl();
919 token_stream.SetPrivateKey(*(reader->StringHandle())); 919 token_stream.SetPrivateKey(*(reader->StringHandle()));
(...skipping 976 matching lines...) Expand 10 before | Expand all | Expand 10 after
1896 } 1896 }
1897 *str_obj ^= (*new_symbol)(ptr, len); 1897 *str_obj ^= (*new_symbol)(ptr, len);
1898 } else { 1898 } else {
1899 // Set up the string object. 1899 // Set up the string object.
1900 *str_obj = StringType::New(len, HEAP_SPACE(kind)); 1900 *str_obj = StringType::New(len, HEAP_SPACE(kind));
1901 str_obj->set_tags(tags); 1901 str_obj->set_tags(tags);
1902 str_obj->SetHash(0); // Will get computed when needed. 1902 str_obj->SetHash(0); // Will get computed when needed.
1903 if (len == 0) { 1903 if (len == 0) {
1904 return; 1904 return;
1905 } 1905 }
1906 NoGCScope no_gc; 1906 NoSafepointScope no_safepoint;
1907 CharacterType* str_addr = StringType::CharAddr(*str_obj, 0); 1907 CharacterType* str_addr = StringType::CharAddr(*str_obj, 0);
1908 for (intptr_t i = 0; i < len; i++) { 1908 for (intptr_t i = 0; i < len; i++) {
1909 *str_addr = reader->Read<CharacterType>(); 1909 *str_addr = reader->Read<CharacterType>();
1910 str_addr++; 1910 str_addr++;
1911 } 1911 }
1912 } 1912 }
1913 } 1913 }
1914 1914
1915 1915
1916 RawOneByteString* OneByteString::ReadFrom(SnapshotReader* reader, 1916 RawOneByteString* OneByteString::ReadFrom(SnapshotReader* reader,
1917 intptr_t object_id, 1917 intptr_t object_id,
1918 intptr_t tags, 1918 intptr_t tags,
1919 Snapshot::Kind kind) { 1919 Snapshot::Kind kind) {
1920 // Read the length so that we can determine instance size to allocate. 1920 // Read the length so that we can determine instance size to allocate.
1921 ASSERT(reader != NULL); 1921 ASSERT(reader != NULL);
1922 intptr_t len = reader->ReadSmiValue(); 1922 intptr_t len = reader->ReadSmiValue();
1923 intptr_t hash = reader->ReadSmiValue(); 1923 intptr_t hash = reader->ReadSmiValue();
1924 String& str_obj = String::Handle(reader->zone(), String::null()); 1924 String& str_obj = String::Handle(reader->zone(), String::null());
1925 1925
1926 if (kind == Snapshot::kFull) { 1926 if (kind == Snapshot::kFull) {
1927 ASSERT(reader->isolate()->no_gc_scope_depth() != 0); 1927 ASSERT(reader->isolate()->no_safepoint_scope_depth() != 0);
1928 RawOneByteString* obj = reader->NewOneByteString(len); 1928 RawOneByteString* obj = reader->NewOneByteString(len);
1929 str_obj = obj; 1929 str_obj = obj;
1930 str_obj.set_tags(tags); 1930 str_obj.set_tags(tags);
1931 str_obj.SetHash(hash); 1931 str_obj.SetHash(hash);
1932 if (len > 0) { 1932 if (len > 0) {
1933 uint8_t* raw_ptr = CharAddr(str_obj, 0); 1933 uint8_t* raw_ptr = CharAddr(str_obj, 0);
1934 reader->ReadBytes(raw_ptr, len); 1934 reader->ReadBytes(raw_ptr, len);
1935 } 1935 }
1936 ASSERT((hash == 0) || (String::Hash(str_obj, 0, str_obj.Length()) == hash)); 1936 ASSERT((hash == 0) || (String::Hash(str_obj, 0, str_obj.Length()) == hash));
1937 } else { 1937 } else {
(...skipping 13 matching lines...) Expand all
1951 ASSERT(reader != NULL); 1951 ASSERT(reader != NULL);
1952 intptr_t len = reader->ReadSmiValue(); 1952 intptr_t len = reader->ReadSmiValue();
1953 intptr_t hash = reader->ReadSmiValue(); 1953 intptr_t hash = reader->ReadSmiValue();
1954 String& str_obj = String::Handle(reader->zone(), String::null()); 1954 String& str_obj = String::Handle(reader->zone(), String::null());
1955 1955
1956 if (kind == Snapshot::kFull) { 1956 if (kind == Snapshot::kFull) {
1957 RawTwoByteString* obj = reader->NewTwoByteString(len); 1957 RawTwoByteString* obj = reader->NewTwoByteString(len);
1958 str_obj = obj; 1958 str_obj = obj;
1959 str_obj.set_tags(tags); 1959 str_obj.set_tags(tags);
1960 str_obj.SetHash(hash); 1960 str_obj.SetHash(hash);
1961 NoGCScope no_gc; 1961 NoSafepointScope no_safepoint;
1962 uint16_t* raw_ptr = (len > 0)? CharAddr(str_obj, 0) : NULL; 1962 uint16_t* raw_ptr = (len > 0)? CharAddr(str_obj, 0) : NULL;
1963 for (intptr_t i = 0; i < len; i++) { 1963 for (intptr_t i = 0; i < len; i++) {
1964 ASSERT(CharAddr(str_obj, i) == raw_ptr); // Will trigger assertions. 1964 ASSERT(CharAddr(str_obj, i) == raw_ptr); // Will trigger assertions.
1965 *raw_ptr = reader->Read<uint16_t>(); 1965 *raw_ptr = reader->Read<uint16_t>();
1966 raw_ptr += 1; 1966 raw_ptr += 1;
1967 } 1967 }
1968 ASSERT(String::Hash(str_obj, 0, str_obj.Length()) == hash); 1968 ASSERT(String::Hash(str_obj, 0, str_obj.Length()) == hash);
1969 } else { 1969 } else {
1970 String::ReadFromImpl<TwoByteString, uint16_t>( 1970 String::ReadFromImpl<TwoByteString, uint16_t>(
1971 reader, &str_obj, len, tags, Symbols::FromUTF16, kind); 1971 reader, &str_obj, len, tags, Symbols::FromUTF16, kind);
(...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after
2425 // Set the object tags. 2425 // Set the object tags.
2426 result.set_tags(tags); 2426 result.set_tags(tags);
2427 2427
2428 // Setup the array elements. 2428 // Setup the array elements.
2429 intptr_t element_size = ElementSizeInBytes(cid); 2429 intptr_t element_size = ElementSizeInBytes(cid);
2430 intptr_t length_in_bytes = len * element_size; 2430 intptr_t length_in_bytes = len * element_size;
2431 switch (cid) { 2431 switch (cid) {
2432 case kTypedDataInt8ArrayCid: 2432 case kTypedDataInt8ArrayCid:
2433 case kTypedDataUint8ArrayCid: 2433 case kTypedDataUint8ArrayCid:
2434 case kTypedDataUint8ClampedArrayCid: { 2434 case kTypedDataUint8ClampedArrayCid: {
2435 NoGCScope no_gc; 2435 NoSafepointScope no_safepoint;
2436 uint8_t* data = reinterpret_cast<uint8_t*>(result.DataAddr(0)); 2436 uint8_t* data = reinterpret_cast<uint8_t*>(result.DataAddr(0));
2437 reader->ReadBytes(data, length_in_bytes); 2437 reader->ReadBytes(data, length_in_bytes);
2438 break; 2438 break;
2439 } 2439 }
2440 case kTypedDataInt16ArrayCid: 2440 case kTypedDataInt16ArrayCid:
2441 TYPED_DATA_READ(Int16, int16_t); 2441 TYPED_DATA_READ(Int16, int16_t);
2442 break; 2442 break;
2443 case kTypedDataUint16ArrayCid: 2443 case kTypedDataUint16ArrayCid:
2444 TYPED_DATA_READ(Uint16, uint16_t); 2444 TYPED_DATA_READ(Uint16, uint16_t);
2445 break; 2445 break;
(...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after
2903 // We do not allow objects with native fields in an isolate message. 2903 // We do not allow objects with native fields in an isolate message.
2904 writer->SetWriteException(Exceptions::kArgument, 2904 writer->SetWriteException(Exceptions::kArgument,
2905 "Illegal argument in isolate message" 2905 "Illegal argument in isolate message"
2906 " : (object is a UserTag)"); 2906 " : (object is a UserTag)");
2907 } else { 2907 } else {
2908 UNREACHABLE(); 2908 UNREACHABLE();
2909 } 2909 }
2910 } 2910 }
2911 2911
2912 } // namespace dart 2912 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/profiler_service.cc ('k') | runtime/vm/runtime_entry.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698