| OLD | NEW |
| 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 | 6 |
| 7 #include "lib/invocation_mirror.h" | 7 #include "lib/invocation_mirror.h" |
| 8 #include "platform/utils.h" | 8 #include "platform/utils.h" |
| 9 #include "vm/bootstrap.h" | 9 #include "vm/bootstrap.h" |
| 10 #include "vm/class_finalizer.h" | 10 #include "vm/class_finalizer.h" |
| (...skipping 5299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5310 const Class& cls = Class::Handle(func.Owner()); | 5310 const Class& cls = Class::Handle(func.Owner()); |
| 5311 const Library& library = Library::Handle(cls.library()); | 5311 const Library& library = Library::Handle(cls.library()); |
| 5312 ASSERT(func.NumParameters() == params->parameters->length()); | 5312 ASSERT(func.NumParameters() == params->parameters->length()); |
| 5313 | 5313 |
| 5314 // Parse the function name out. | 5314 // Parse the function name out. |
| 5315 const intptr_t native_pos = TokenPos(); | 5315 const intptr_t native_pos = TokenPos(); |
| 5316 const String& native_name = ParseNativeDeclaration(); | 5316 const String& native_name = ParseNativeDeclaration(); |
| 5317 | 5317 |
| 5318 // Now resolve the native function to the corresponding native entrypoint. | 5318 // Now resolve the native function to the corresponding native entrypoint. |
| 5319 const int num_params = NativeArguments::ParameterCountForResolution(func); | 5319 const int num_params = NativeArguments::ParameterCountForResolution(func); |
| 5320 bool auto_setup_scope = true; |
| 5320 NativeFunction native_function = NativeEntry::ResolveNative( | 5321 NativeFunction native_function = NativeEntry::ResolveNative( |
| 5321 library, native_name, num_params); | 5322 library, native_name, num_params, &auto_setup_scope); |
| 5322 if (native_function == NULL) { | 5323 if (native_function == NULL) { |
| 5323 ErrorMsg(native_pos, "native function '%s' cannot be found", | 5324 ErrorMsg(native_pos, "native function '%s' cannot be found", |
| 5324 native_name.ToCString()); | 5325 native_name.ToCString()); |
| 5325 } | 5326 } |
| 5327 func.SetIsNativeAutoSetupScope(auto_setup_scope); |
| 5326 | 5328 |
| 5327 // Now add the NativeBodyNode and return statement. | 5329 // Now add the NativeBodyNode and return statement. |
| 5328 Dart_NativeEntryResolver resolver = library.native_entry_resolver(); | 5330 Dart_NativeEntryResolver resolver = library.native_entry_resolver(); |
| 5329 bool is_bootstrap_native = Bootstrap::IsBootstapResolver(resolver); | 5331 bool is_bootstrap_native = Bootstrap::IsBootstapResolver(resolver); |
| 5330 current_block_->statements->Add( | 5332 current_block_->statements->Add( |
| 5331 new ReturnNode(TokenPos(), | 5333 new ReturnNode(TokenPos(), |
| 5332 new NativeBodyNode(TokenPos(), | 5334 new NativeBodyNode(TokenPos(), |
| 5333 Function::ZoneHandle(func.raw()), | 5335 Function::ZoneHandle(func.raw()), |
| 5334 native_name, | 5336 native_name, |
| 5335 native_function, | 5337 native_function, |
| (...skipping 5415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10751 void Parser::SkipQualIdent() { | 10753 void Parser::SkipQualIdent() { |
| 10752 ASSERT(IsIdentifier()); | 10754 ASSERT(IsIdentifier()); |
| 10753 ConsumeToken(); | 10755 ConsumeToken(); |
| 10754 if (CurrentToken() == Token::kPERIOD) { | 10756 if (CurrentToken() == Token::kPERIOD) { |
| 10755 ConsumeToken(); // Consume the kPERIOD token. | 10757 ConsumeToken(); // Consume the kPERIOD token. |
| 10756 ExpectIdentifier("identifier expected after '.'"); | 10758 ExpectIdentifier("identifier expected after '.'"); |
| 10757 } | 10759 } |
| 10758 } | 10760 } |
| 10759 | 10761 |
| 10760 } // namespace dart | 10762 } // namespace dart |
| OLD | NEW |