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

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

Issue 1672853002: Move sticky_error_ from isolate to thread (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Comments addressed Created 4 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
« no previous file with comments | « runtime/vm/object_store.cc ('k') | runtime/vm/precompiler.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/parser.h" 5 #include "vm/parser.h"
6 #include "vm/flags.h" 6 #include "vm/flags.h"
7 7
8 #ifndef DART_PRECOMPILED_RUNTIME 8 #ifndef DART_PRECOMPILED_RUNTIME
9 9
10 #include "lib/invocation_mirror.h" 10 #include "lib/invocation_mirror.h"
(...skipping 901 matching lines...) Expand 10 before | Expand all | Expand 10 after
912 if ((metadata != NULL) && (*metadata).IsError()) { 912 if ((metadata != NULL) && (*metadata).IsError()) {
913 return metadata->raw(); // Error evaluating the metadata. 913 return metadata->raw(); // Error evaluating the metadata.
914 } 914 }
915 param_descriptor.SetAt(j + kParameterMetadataOffset, 915 param_descriptor.SetAt(j + kParameterMetadataOffset,
916 (param[i].metadata == NULL) ? Object::null_instance() : 916 (param[i].metadata == NULL) ? Object::null_instance() :
917 *(param[i].metadata)); 917 *(param[i].metadata));
918 } 918 }
919 return param_descriptor.raw(); 919 return param_descriptor.raw();
920 } else { 920 } else {
921 Thread* thread = Thread::Current(); 921 Thread* thread = Thread::Current();
922 Isolate* isolate = thread->isolate();
923 Error& error = Error::Handle(); 922 Error& error = Error::Handle();
924 error = isolate->object_store()->sticky_error(); 923 error = thread->sticky_error();
925 isolate->object_store()->clear_sticky_error(); 924 thread->clear_sticky_error();
926 return error.raw(); 925 return error.raw();
927 } 926 }
928 UNREACHABLE(); 927 UNREACHABLE();
929 return Object::null(); 928 return Object::null();
930 } 929 }
931 930
932 931
933 bool Parser::ParseFormalParameters(const Function& func, ParamList* params) { 932 bool Parser::ParseFormalParameters(const Function& func, ParamList* params) {
934 ASSERT(!func.IsNull()); 933 ASSERT(!func.IsNull());
935 // This is currently only used for constructors. To handle all kinds 934 // This is currently only used for constructors. To handle all kinds
(...skipping 10 matching lines...) Expand all
946 const Script& script = Script::Handle(func.script()); 945 const Script& script = Script::Handle(func.script());
947 const Class& owner = Class::Handle(func.Owner()); 946 const Class& owner = Class::Handle(func.Owner());
948 ASSERT(!owner.IsNull()); 947 ASSERT(!owner.IsNull());
949 ParsedFunction* parsed_function = 948 ParsedFunction* parsed_function =
950 new ParsedFunction(Thread::Current(), Function::ZoneHandle(func.raw())); 949 new ParsedFunction(Thread::Current(), Function::ZoneHandle(func.raw()));
951 Parser parser(script, parsed_function, func.token_pos()); 950 Parser parser(script, parsed_function, func.token_pos());
952 parser.SkipFunctionPreamble(); 951 parser.SkipFunctionPreamble();
953 parser.ParseFormalParameterList(true, true, params); 952 parser.ParseFormalParameterList(true, true, params);
954 return true; 953 return true;
955 } else { 954 } else {
956 Thread::Current()->isolate()->object_store()->clear_sticky_error(); 955 Thread::Current()->clear_sticky_error();
957 params->Clear(); 956 params->Clear();
958 return false; 957 return false;
959 } 958 }
960 UNREACHABLE(); 959 UNREACHABLE();
961 return false; 960 return false;
962 } 961 }
963 962
964 963
965 void Parser::ParseFunction(ParsedFunction* parsed_function) { 964 void Parser::ParseFunction(ParsedFunction* parsed_function) {
966 Thread* thread = parsed_function->thread(); 965 Thread* thread = parsed_function->thread();
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
1094 ParsedFunction* parsed_function = 1093 ParsedFunction* parsed_function =
1095 new ParsedFunction(thread, fake_function); 1094 new ParsedFunction(thread, fake_function);
1096 Parser parser(script, parsed_function, token_pos); 1095 Parser parser(script, parsed_function, token_pos);
1097 parser.set_current_class(owner_class); 1096 parser.set_current_class(owner_class);
1098 parser.OpenFunctionBlock(fake_function); 1097 parser.OpenFunctionBlock(fake_function);
1099 1098
1100 RawObject* metadata = parser.EvaluateMetadata(); 1099 RawObject* metadata = parser.EvaluateMetadata();
1101 return metadata; 1100 return metadata;
1102 } else { 1101 } else {
1103 Thread* thread = Thread::Current(); 1102 Thread* thread = Thread::Current();
1104 Isolate* isolate = thread->isolate();
1105 StackZone stack_zone(thread); 1103 StackZone stack_zone(thread);
1106 Zone* zone = stack_zone.GetZone(); 1104 Zone* zone = stack_zone.GetZone();
1107 Error& error = Error::Handle(zone); 1105 Error& error = Error::Handle(zone);
1108 error = isolate->object_store()->sticky_error(); 1106 error = thread->sticky_error();
1109 isolate->object_store()->clear_sticky_error(); 1107 thread->clear_sticky_error();
1110 return error.raw(); 1108 return error.raw();
1111 } 1109 }
1112 UNREACHABLE(); 1110 UNREACHABLE();
1113 return Object::null(); 1111 return Object::null();
1114 } 1112 }
1115 1113
1116 1114
1117 RawArray* Parser::EvaluateMetadata() { 1115 RawArray* Parser::EvaluateMetadata() {
1118 CheckToken(Token::kAT, "Metadata character '@' expected"); 1116 CheckToken(Token::kAT, "Metadata character '@' expected");
1119 GrowableObjectArray& meta_values = 1117 GrowableObjectArray& meta_values =
(...skipping 13288 matching lines...) Expand 10 before | Expand all | Expand 10 after
14408 const ArgumentListNode& function_args, 14406 const ArgumentListNode& function_args,
14409 const LocalVariable* temp_for_last_arg, 14407 const LocalVariable* temp_for_last_arg,
14410 bool is_super_invocation) { 14408 bool is_super_invocation) {
14411 UNREACHABLE(); 14409 UNREACHABLE();
14412 return NULL; 14410 return NULL;
14413 } 14411 }
14414 14412
14415 } // namespace dart 14413 } // namespace dart
14416 14414
14417 #endif // DART_PRECOMPILED_RUNTIME 14415 #endif // DART_PRECOMPILED_RUNTIME
OLDNEW
« no previous file with comments | « runtime/vm/object_store.cc ('k') | runtime/vm/precompiler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698