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

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

Issue 2997173002: [vm] Remove Dart_MakeExternalString and --support-externalizable-strings (Closed)
Patch Set: Update vm.status Created 3 years, 4 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
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 <set> 5 #include <set>
6 6
7 #include "vm/kernel_to_il.h" 7 #include "vm/kernel_to_il.h"
8 8
9 #include "vm/compiler.h" 9 #include "vm/compiler.h"
10 #include "vm/intermediate_language.h" 10 #include "vm/intermediate_language.h"
11 #include "vm/kernel_binary_flowgraph.h" 11 #include "vm/kernel_binary_flowgraph.h"
12 #include "vm/kernel_reader.h" 12 #include "vm/kernel_reader.h"
13 #include "vm/longjump.h" 13 #include "vm/longjump.h"
14 #include "vm/method_recognizer.h" 14 #include "vm/method_recognizer.h"
15 #include "vm/object_store.h" 15 #include "vm/object_store.h"
16 #include "vm/report.h" 16 #include "vm/report.h"
17 #include "vm/resolver.h" 17 #include "vm/resolver.h"
18 #include "vm/stack_frame.h" 18 #include "vm/stack_frame.h"
19 19
20 #if !defined(DART_PRECOMPILED_RUNTIME) 20 #if !defined(DART_PRECOMPILED_RUNTIME)
21 namespace dart { 21 namespace dart {
22 22
23 DECLARE_FLAG(bool, support_externalizable_strings);
24
25 namespace kernel { 23 namespace kernel {
26 24
27 #define Z (zone_) 25 #define Z (zone_)
28 #define H (translation_helper_) 26 #define H (translation_helper_)
29 #define T (type_translator_) 27 #define T (type_translator_)
30 #define I Isolate::Current() 28 #define I Isolate::Current()
31 29
32 Fragment& Fragment::operator+=(const Fragment& other) { 30 Fragment& Fragment::operator+=(const Fragment& other) {
33 if (entry == NULL) { 31 if (entry == NULL) {
34 entry = other.entry; 32 entry = other.entry;
(...skipping 1635 matching lines...) Expand 10 before | Expand all | Expand 10 after
1670 Fragment body; 1668 Fragment body;
1671 MethodRecognizer::Kind kind = MethodRecognizer::RecognizeKind(function); 1669 MethodRecognizer::Kind kind = MethodRecognizer::RecognizeKind(function);
1672 switch (kind) { 1670 switch (kind) {
1673 case MethodRecognizer::kObjectEquals: 1671 case MethodRecognizer::kObjectEquals:
1674 body += LoadLocal(scopes_->this_variable); 1672 body += LoadLocal(scopes_->this_variable);
1675 body += LoadLocal(LookupVariable(first_positional_offset)); 1673 body += LoadLocal(LookupVariable(first_positional_offset));
1676 body += StrictCompare(Token::kEQ_STRICT); 1674 body += StrictCompare(Token::kEQ_STRICT);
1677 break; 1675 break;
1678 case MethodRecognizer::kStringBaseLength: 1676 case MethodRecognizer::kStringBaseLength:
1679 case MethodRecognizer::kStringBaseIsEmpty: 1677 case MethodRecognizer::kStringBaseIsEmpty:
1680 // Depending on FLAG_support_externalizable_strings, treat string length
1681 // loads as mutable so that the class check that precedes them will not be
1682 // hoisted. This is unsafe because string externalization can change the
1683 // class.
1684 body += LoadLocal(scopes_->this_variable); 1678 body += LoadLocal(scopes_->this_variable);
1685 body += LoadNativeField(MethodRecognizer::kStringBaseLength, 1679 body += LoadNativeField(MethodRecognizer::kStringBaseLength,
1686 dart::String::length_offset(), 1680 dart::String::length_offset(),
1687 Type::ZoneHandle(Z, Type::SmiType()), kSmiCid, 1681 Type::ZoneHandle(Z, Type::SmiType()), kSmiCid,
1688 !FLAG_support_externalizable_strings); 1682 /* is_immutable = */ true);
1689 if (kind == MethodRecognizer::kStringBaseIsEmpty) { 1683 if (kind == MethodRecognizer::kStringBaseIsEmpty) {
1690 body += IntConstant(0); 1684 body += IntConstant(0);
1691 body += StrictCompare(Token::kEQ_STRICT); 1685 body += StrictCompare(Token::kEQ_STRICT);
1692 } 1686 }
1693 break; 1687 break;
1694 case MethodRecognizer::kGrowableArrayLength: 1688 case MethodRecognizer::kGrowableArrayLength:
1695 body += LoadLocal(scopes_->this_variable); 1689 body += LoadLocal(scopes_->this_variable);
1696 body += LoadNativeField(kind, GrowableObjectArray::length_offset(), 1690 body += LoadNativeField(kind, GrowableObjectArray::length_offset(),
1697 Type::ZoneHandle(Z, Type::SmiType()), kSmiCid); 1691 Type::ZoneHandle(Z, Type::SmiType()), kSmiCid);
1698 break; 1692 break;
(...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after
2415 array_object = AsSortedDuplicateFreeArray(&token_positions); 2409 array_object = AsSortedDuplicateFreeArray(&token_positions);
2416 script.set_debug_positions(array_object); 2410 script.set_debug_positions(array_object);
2417 array_object = AsSortedDuplicateFreeArray(&yield_positions); 2411 array_object = AsSortedDuplicateFreeArray(&yield_positions);
2418 script.set_yield_positions(array_object); 2412 script.set_yield_positions(array_object);
2419 } 2413 }
2420 2414
2421 } // namespace kernel 2415 } // namespace kernel
2422 } // namespace dart 2416 } // namespace dart
2423 2417
2424 #endif // !defined(DART_PRECOMPILED_RUNTIME) 2418 #endif // !defined(DART_PRECOMPILED_RUNTIME)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698