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

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

Issue 12314055: Use browsers JSON.parse for parsing JSON (#3) (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 10 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/bootstrap.cc ('k') | runtime/vm/vm.gypi » ('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/bigint_operations.h" 10 #include "vm/bigint_operations.h"
(...skipping 623 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 #define INIT_LIBRARY(name, raw_script, raw_lib) \ 634 #define INIT_LIBRARY(name, raw_script, raw_lib) \
635 script ^= raw_script; \ 635 script ^= raw_script; \
636 Library::Init##name##Library(isolate); \ 636 Library::Init##name##Library(isolate); \
637 lib ^= raw_lib; \ 637 lib ^= raw_lib; \
638 ASSERT(!lib.IsNull()); \ 638 ASSERT(!lib.IsNull()); \
639 error = Bootstrap::Compile(lib, script); \ 639 error = Bootstrap::Compile(lib, script); \
640 if (!error.IsNull()) { \ 640 if (!error.IsNull()) { \
641 return error.raw(); \ 641 return error.raw(); \
642 } \ 642 } \
643 643
644 #define PATCH_LIBRARY(lib, raw_patch_script) \
645 patch_script ^= raw_patch_script; \
646 error = lib.Patch(patch_script); \
647 if (!error.IsNull()) { \
648 return error.raw(); \
649 } \
siva 2013/02/22 18:25:39 Could you leave this the way it was without a macr
644 650
645 RawError* Object::Init(Isolate* isolate) { 651 RawError* Object::Init(Isolate* isolate) {
646 TIMERSCOPE(time_bootstrap); 652 TIMERSCOPE(time_bootstrap);
647 ObjectStore* object_store = isolate->object_store(); 653 ObjectStore* object_store = isolate->object_store();
648 654
649 Class& cls = Class::Handle(); 655 Class& cls = Class::Handle();
650 Type& type = Type::Handle(); 656 Type& type = Type::Handle();
651 Array& array = Array::Handle(); 657 Array& array = Array::Handle();
652 658
653 // All RawArray fields will be initialized to an empty array, therefore 659 // All RawArray fields will be initialized to an empty array, therefore
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after
998 Library::InitNativeWrappersLibrary(isolate); 1004 Library::InitNativeWrappersLibrary(isolate);
999 ASSERT(isolate->object_store()->native_wrappers_library() != Library::null()); 1005 ASSERT(isolate->object_store()->native_wrappers_library() != Library::null());
1000 1006
1001 // Finish the initialization by compiling the bootstrap scripts containing the 1007 // Finish the initialization by compiling the bootstrap scripts containing the
1002 // base interfaces and the implementation of the internal classes. 1008 // base interfaces and the implementation of the internal classes.
1003 Error& error = Error::Handle(); 1009 Error& error = Error::Handle();
1004 error = Bootstrap::Compile(core_lib, script); 1010 error = Bootstrap::Compile(core_lib, script);
1005 if (!error.IsNull()) { 1011 if (!error.IsNull()) {
1006 return error.raw(); 1012 return error.raw();
1007 } 1013 }
1008 Script& patch_script = Script::Handle(Bootstrap::LoadCoreScript(true)); 1014 Script& patch_script = Script::Handle();
1009 error = core_lib.Patch(patch_script); 1015 PATCH_LIBRARY(core_lib, Bootstrap::LoadCoreScript(true));
1010 if (!error.IsNull()) { 1016
1011 return error.raw();
1012 }
1013 Library::InitASyncLibrary(isolate); 1017 Library::InitASyncLibrary(isolate);
1014 const Script& async_script = 1018 const Script& async_script =
1015 Script::Handle(Bootstrap::LoadASyncScript(false)); 1019 Script::Handle(Bootstrap::LoadASyncScript(false));
1016 const Library& async_lib = Library::Handle(Library::ASyncLibrary()); 1020 const Library& async_lib = Library::Handle(Library::ASyncLibrary());
1017 ASSERT(!async_lib.IsNull()); 1021 ASSERT(!async_lib.IsNull());
1018 error = Bootstrap::Compile(async_lib, async_script); 1022 error = Bootstrap::Compile(async_lib, async_script);
1019 if (!error.IsNull()) { 1023 if (!error.IsNull()) {
1020 return error.raw(); 1024 return error.raw();
1021 } 1025 }
1022 patch_script = Bootstrap::LoadASyncScript(true); 1026 PATCH_LIBRARY(async_lib, Bootstrap::LoadASyncScript(true));
1023 error = async_lib.Patch(patch_script); 1027
1024 if (!error.IsNull()) {
1025 return error.raw();
1026 }
1027 const Script& collection_script = 1028 const Script& collection_script =
1028 Script::Handle(Bootstrap::LoadCollectionScript(false)); 1029 Script::Handle(Bootstrap::LoadCollectionScript(false));
1029 const Library& collection_lib = 1030 const Library& collection_lib =
1030 Library::Handle(Library::CollectionLibrary()); 1031 Library::Handle(Library::CollectionLibrary());
1031 ASSERT(!collection_lib.IsNull()); 1032 ASSERT(!collection_lib.IsNull());
1032 error = Bootstrap::Compile(collection_lib, collection_script); 1033 error = Bootstrap::Compile(collection_lib, collection_script);
1033 if (!error.IsNull()) { 1034 if (!error.IsNull()) {
1034 return error.raw(); 1035 return error.raw();
1035 } 1036 }
1036 const Script& collection_dev_script = 1037 const Script& collection_dev_script =
1037 Script::Handle(Bootstrap::LoadCollectionDevScript(false)); 1038 Script::Handle(Bootstrap::LoadCollectionDevScript(false));
1038 const Library& collection_dev_lib = 1039 const Library& collection_dev_lib =
1039 Library::Handle(Library::CollectionDevLibrary()); 1040 Library::Handle(Library::CollectionDevLibrary());
1040 ASSERT(!collection_dev_lib.IsNull()); 1041 ASSERT(!collection_dev_lib.IsNull());
1041 error = Bootstrap::Compile(collection_dev_lib, collection_dev_script); 1042 error = Bootstrap::Compile(collection_dev_lib, collection_dev_script);
1042 if (!error.IsNull()) { 1043 if (!error.IsNull()) {
1043 return error.raw(); 1044 return error.raw();
1044 } 1045 }
1045 const Script& math_script = Script::Handle(Bootstrap::LoadMathScript(false)); 1046 const Script& math_script = Script::Handle(Bootstrap::LoadMathScript(false));
1046 const Library& math_lib = Library::Handle(Library::MathLibrary()); 1047 const Library& math_lib = Library::Handle(Library::MathLibrary());
1047 ASSERT(!math_lib.IsNull()); 1048 ASSERT(!math_lib.IsNull());
1048 error = Bootstrap::Compile(math_lib, math_script); 1049 error = Bootstrap::Compile(math_lib, math_script);
1049 if (!error.IsNull()) { 1050 if (!error.IsNull()) {
1050 return error.raw(); 1051 return error.raw();
1051 } 1052 }
1052 patch_script = Bootstrap::LoadMathScript(true); 1053 PATCH_LIBRARY(math_lib, Bootstrap::LoadMathScript(true));
1053 error = math_lib.Patch(patch_script); 1054
1054 if (!error.IsNull()) {
1055 return error.raw();
1056 }
1057 const Script& isolate_script = Script::Handle( 1055 const Script& isolate_script = Script::Handle(
1058 Bootstrap::LoadIsolateScript(false)); 1056 Bootstrap::LoadIsolateScript(false));
1059 Library::InitIsolateLibrary(isolate); 1057 Library::InitIsolateLibrary(isolate);
1060 const Library& isolate_lib = Library::Handle(Library::IsolateLibrary()); 1058 const Library& isolate_lib = Library::Handle(Library::IsolateLibrary());
1061 ASSERT(!isolate_lib.IsNull()); 1059 ASSERT(!isolate_lib.IsNull());
1062 error = Bootstrap::Compile(isolate_lib, isolate_script); 1060 error = Bootstrap::Compile(isolate_lib, isolate_script);
1063 if (!error.IsNull()) { 1061 if (!error.IsNull()) {
1064 return error.raw(); 1062 return error.raw();
1065 } 1063 }
1066 patch_script = Bootstrap::LoadIsolateScript(true); 1064 PATCH_LIBRARY(isolate_lib, Bootstrap::LoadIsolateScript(true));
1067 error = isolate_lib.Patch(patch_script); 1065
1068 if (!error.IsNull()) {
1069 return error.raw();
1070 }
1071 const Script& mirrors_script = Script::Handle( 1066 const Script& mirrors_script = Script::Handle(
1072 Bootstrap::LoadMirrorsScript(false)); 1067 Bootstrap::LoadMirrorsScript(false));
1073 Library::InitMirrorsLibrary(isolate); 1068 Library::InitMirrorsLibrary(isolate);
1074 const Library& mirrors_lib = Library::Handle(Library::MirrorsLibrary()); 1069 const Library& mirrors_lib = Library::Handle(Library::MirrorsLibrary());
1075 ASSERT(!mirrors_lib.IsNull()); 1070 ASSERT(!mirrors_lib.IsNull());
1076 error = Bootstrap::Compile(mirrors_lib, mirrors_script); 1071 error = Bootstrap::Compile(mirrors_lib, mirrors_script);
1077 if (!error.IsNull()) { 1072 if (!error.IsNull()) {
1078 return error.raw(); 1073 return error.raw();
1079 } 1074 }
1080 patch_script = Bootstrap::LoadMirrorsScript(true); 1075 PATCH_LIBRARY(mirrors_lib, Bootstrap::LoadMirrorsScript(true));
1081 error = mirrors_lib.Patch(patch_script); 1076
1082 if (!error.IsNull()) {
1083 return error.raw();
1084 }
1085 const Script& scalarlist_script = Script::Handle( 1077 const Script& scalarlist_script = Script::Handle(
1086 Bootstrap::LoadScalarlistScript(false)); 1078 Bootstrap::LoadScalarlistScript(false));
1087 ASSERT(!scalarlist_lib.IsNull()); 1079 ASSERT(!scalarlist_lib.IsNull());
1088 error = Bootstrap::Compile(scalarlist_lib, scalarlist_script); 1080 error = Bootstrap::Compile(scalarlist_lib, scalarlist_script);
1089 if (!error.IsNull()) { 1081 if (!error.IsNull()) {
1090 return error.raw(); 1082 return error.raw();
1091 } 1083 }
1092 patch_script = Bootstrap::LoadScalarlistScript(true); 1084 PATCH_LIBRARY(scalarlist_lib, Bootstrap::LoadScalarlistScript(true));
1093 error = scalarlist_lib.Patch(patch_script); 1085
1094 if (!error.IsNull()) {
1095 return error.raw();
1096 }
1097 Library& lib = Library::Handle(); 1086 Library& lib = Library::Handle();
1098 INIT_LIBRARY(Crypto, 1087 INIT_LIBRARY(Crypto,
1099 Bootstrap::LoadCryptoScript(false), 1088 Bootstrap::LoadCryptoScript(false),
1100 Library::CryptoLibrary()); 1089 Library::CryptoLibrary());
1101 INIT_LIBRARY(Json, 1090 INIT_LIBRARY(Json,
1102 Bootstrap::LoadJsonScript(false), 1091 Bootstrap::LoadJsonScript(false),
1103 Library::JsonLibrary()); 1092 Library::JsonLibrary());
1093 PATCH_LIBRARY(lib, Bootstrap::LoadJsonScript(true));
siva 2013/02/22 18:25:39 Just add the patch code inline here.
1104 INIT_LIBRARY(Utf, 1094 INIT_LIBRARY(Utf,
1105 Bootstrap::LoadUtfScript(false), 1095 Bootstrap::LoadUtfScript(false),
1106 Library::UtfLibrary()); 1096 Library::UtfLibrary());
1107 INIT_LIBRARY(Uri, 1097 INIT_LIBRARY(Uri,
1108 Bootstrap::LoadUriScript(false), 1098 Bootstrap::LoadUriScript(false),
1109 Library::UriLibrary()); 1099 Library::UriLibrary());
1110 Bootstrap::SetupNativeResolver(); 1100 Bootstrap::SetupNativeResolver();
1111 1101
1112 // Remove the Object superclass cycle by setting the super type to null (not 1102 // Remove the Object superclass cycle by setting the super type to null (not
1113 // to the type of null). 1103 // to the type of null).
(...skipping 11878 matching lines...) Expand 10 before | Expand all | Expand 10 after
12992 } 12982 }
12993 return result.raw(); 12983 return result.raw();
12994 } 12984 }
12995 12985
12996 12986
12997 const char* WeakProperty::ToCString() const { 12987 const char* WeakProperty::ToCString() const {
12998 return "_WeakProperty"; 12988 return "_WeakProperty";
12999 } 12989 }
13000 12990
13001 } // namespace dart 12991 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/bootstrap.cc ('k') | runtime/vm/vm.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698