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

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

Issue 1723733002: Simplify various name flavors in VM. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: address comments 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/intermediate_language_x64.cc ('k') | runtime/vm/object.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 #ifndef VM_OBJECT_H_ 5 #ifndef VM_OBJECT_H_
6 #define VM_OBJECT_H_ 6 #define VM_OBJECT_H_
7 7
8 #include "include/dart_api.h" 8 #include "include/dart_api.h"
9 #include "platform/assert.h" 9 #include "platform/assert.h"
10 #include "platform/utils.h" 10 #include "platform/utils.h"
(...skipping 573 matching lines...) Expand 10 before | Expand all | Expand 10 after
584 // The names of core implementation classes (like _OneByteString) 584 // The names of core implementation classes (like _OneByteString)
585 // are preserved as well. 585 // are preserved as well.
586 // 586 //
587 // e.g. 587 // e.g.
588 // private getter - get:foo@6be832b 588 // private getter - get:foo@6be832b
589 // private constructor - _MyClass@6b3832b. 589 // private constructor - _MyClass@6b3832b.
590 // private named constructor - _MyClass@6b3832b.named 590 // private named constructor - _MyClass@6b3832b.named
591 // core impl class name shown - _OneByteString 591 // core impl class name shown - _OneByteString
592 kInternalName = 0, 592 kInternalName = 0,
593 593
594 // Pretty names drop privacy suffixes, getter prefixes, and 594 // Scrubbed names drop privacy suffixes, getter prefixes, and
595 // trailing dots on unnamed constructors. These names are used in 595 // trailing dots on unnamed constructors. These names are used in
596 // the vm service. 596 // the vm service.
597 // 597 //
598 // e.g. 598 // e.g.
599 // get:foo@6be832b -> foo 599 // get:foo@6be832b -> foo
600 // _MyClass@6b3832b. -> _MyClass 600 // _MyClass@6b3832b. -> _MyClass
601 // _MyClass@6b3832b.named -> _MyClass.named 601 // _MyClass@6b3832b.named -> _MyClass.named
602 // _OneByteString -> _OneByteString (not remapped) 602 // _OneByteString -> _OneByteString (not remapped)
603 kPrettyName, 603 kScrubbedName,
604 604
605 // User visible names are appropriate for reporting type errors 605 // User visible names are appropriate for reporting type errors
606 // directly to programmers. The names have been "prettied" and 606 // directly to programmers. The names have been scrubbed and
607 // the names of core implementation classes are remapped to their 607 // the names of core implementation classes are remapped to their
608 // public interface names. 608 // public interface names.
609 // 609 //
610 // e.g. 610 // e.g.
611 // get:foo@6be832b -> foo 611 // get:foo@6be832b -> foo
612 // _MyClass@6b3832b. -> _MyClass 612 // _MyClass@6b3832b. -> _MyClass
613 // _MyClass@6b3832b.named -> _MyClass.named 613 // _MyClass@6b3832b.named -> _MyClass.named
614 // _OneByteString -> String (remapped) 614 // _OneByteString -> String (remapped)
615 kUserVisibleName 615 kUserVisibleName
616 }; 616 };
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
946 static bool is_valid_id(intptr_t value) { 946 static bool is_valid_id(intptr_t value) {
947 return RawObject::ClassIdTag::is_valid(value); 947 return RawObject::ClassIdTag::is_valid(value);
948 } 948 }
949 intptr_t id() const { return raw_ptr()->id_; } 949 intptr_t id() const { return raw_ptr()->id_; }
950 void set_id(intptr_t value) const { 950 void set_id(intptr_t value) const {
951 ASSERT(is_valid_id(value)); 951 ASSERT(is_valid_id(value));
952 StoreNonPointer(&raw_ptr()->id_, value); 952 StoreNonPointer(&raw_ptr()->id_, value);
953 } 953 }
954 954
955 RawString* Name() const; 955 RawString* Name() const;
956 RawString* PrettyName() const; 956 RawString* ScrubbedName() const;
957 RawString* UserVisibleName() const; 957 RawString* UserVisibleName() const;
958 bool IsInFullSnapshot() const; 958 bool IsInFullSnapshot() const;
959 959
960 virtual RawString* DictionaryName() const { return Name(); } 960 virtual RawString* DictionaryName() const { return Name(); }
961 961
962 RawScript* script() const { return raw_ptr()->script_; } 962 RawScript* script() const { return raw_ptr()->script_; }
963 void set_script(const Script& value) const; 963 void set_script(const Script& value) const;
964 964
965 TokenPosition token_pos() const { return raw_ptr()->token_pos_; } 965 TokenPosition token_pos() const { return raw_ptr()->token_pos_; }
966 void set_token_pos(TokenPosition value) const; 966 void set_token_pos(TokenPosition value) const;
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after
1410 public BitField<uint16_t, bool, kMixinAppAliasBit, 1> {}; 1410 public BitField<uint16_t, bool, kMixinAppAliasBit, 1> {};
1411 class MixinTypeAppliedBit : 1411 class MixinTypeAppliedBit :
1412 public BitField<uint16_t, bool, kMixinTypeAppliedBit, 1> {}; 1412 public BitField<uint16_t, bool, kMixinTypeAppliedBit, 1> {};
1413 class FieldsMarkedNullableBit : 1413 class FieldsMarkedNullableBit :
1414 public BitField<uint16_t, bool, kFieldsMarkedNullableBit, 1> {}; 1414 public BitField<uint16_t, bool, kFieldsMarkedNullableBit, 1> {};
1415 class CycleFreeBit : public BitField<uint16_t, bool, kCycleFreeBit, 1> {}; 1415 class CycleFreeBit : public BitField<uint16_t, bool, kCycleFreeBit, 1> {};
1416 class EnumBit : public BitField<uint16_t, bool, kEnumBit, 1> {}; 1416 class EnumBit : public BitField<uint16_t, bool, kEnumBit, 1> {};
1417 class IsAllocatedBit : public BitField<uint16_t, bool, kIsAllocatedBit, 1> {}; 1417 class IsAllocatedBit : public BitField<uint16_t, bool, kIsAllocatedBit, 1> {};
1418 1418
1419 void set_name(const String& value) const; 1419 void set_name(const String& value) const;
1420 void set_pretty_name(const String& value) const;
1421 void set_user_name(const String& value) const; 1420 void set_user_name(const String& value) const;
1422 RawString* GeneratePrettyName() const;
1423 RawString* GenerateUserVisibleName() const; 1421 RawString* GenerateUserVisibleName() const;
1424 void set_state_bits(intptr_t bits) const; 1422 void set_state_bits(intptr_t bits) const;
1425 1423
1426 void set_constants(const Array& value) const; 1424 void set_constants(const Array& value) const;
1427 1425
1428 void set_canonical_types(const Object& value) const; 1426 void set_canonical_types(const Object& value) const;
1429 RawObject* canonical_types() const; 1427 RawObject* canonical_types() const;
1430 1428
1431 RawArray* invocation_dispatcher_cache() const; 1429 RawArray* invocation_dispatcher_cache() const;
1432 void set_invocation_dispatcher_cache(const Array& cache) const; 1430 void set_invocation_dispatcher_cache(const Array& cache) const;
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
1542 return OFFSET_OF_RETURNED_VALUE( 1540 return OFFSET_OF_RETURNED_VALUE(
1543 RawTypeArguments, types) + index * kWordSize; 1541 RawTypeArguments, types) + index * kWordSize;
1544 } 1542 }
1545 void SetTypeAt(intptr_t index, const AbstractType& value) const; 1543 void SetTypeAt(intptr_t index, const AbstractType& value) const;
1546 1544
1547 // The name of this type argument vector, e.g. "<T, dynamic, List<T>, Smi>". 1545 // The name of this type argument vector, e.g. "<T, dynamic, List<T>, Smi>".
1548 RawString* Name() const { 1546 RawString* Name() const {
1549 return SubvectorName(0, Length(), kInternalName); 1547 return SubvectorName(0, Length(), kInternalName);
1550 } 1548 }
1551 1549
1552 // The name of this type argument vector, e.g. "<T, dynamic, List<T>, Smi>".
1553 // Names of internal classes are not mapped to their public interfaces.
1554 RawString* PrettyName() const {
1555 return SubvectorName(0, Length(), kPrettyName);
1556 }
1557
1558 // The name of this type argument vector, e.g. "<T, dynamic, List<T>, int>". 1550 // The name of this type argument vector, e.g. "<T, dynamic, List<T>, int>".
1559 // Names of internal classes are mapped to their public interfaces. 1551 // Names of internal classes are mapped to their public interfaces.
1560 RawString* UserVisibleName() const { 1552 RawString* UserVisibleName() const {
1561 return SubvectorName(0, Length(), kUserVisibleName); 1553 return SubvectorName(0, Length(), kUserVisibleName);
1562 } 1554 }
1563 1555
1564 // Check if the subvector of length 'len' starting at 'from_index' of this 1556 // Check if the subvector of length 'len' starting at 'from_index' of this
1565 // type argument vector consists solely of DynamicType. 1557 // type argument vector consists solely of DynamicType.
1566 bool IsRaw(intptr_t from_index, intptr_t len) const { 1558 bool IsRaw(intptr_t from_index, intptr_t len) const {
1567 return IsDynamicTypes(false, from_index, len); 1559 return IsDynamicTypes(false, from_index, len);
(...skipping 533 matching lines...) Expand 10 before | Expand all | Expand 10 after
2101 2093
2102 FINAL_HEAP_OBJECT_IMPLEMENTATION(ICData, Object); 2094 FINAL_HEAP_OBJECT_IMPLEMENTATION(ICData, Object);
2103 friend class Class; 2095 friend class Class;
2104 friend class SnapshotWriter; 2096 friend class SnapshotWriter;
2105 }; 2097 };
2106 2098
2107 2099
2108 class Function : public Object { 2100 class Function : public Object {
2109 public: 2101 public:
2110 RawString* name() const { return raw_ptr()->name_; } 2102 RawString* name() const { return raw_ptr()->name_; }
2111 RawString* PrettyName() const; 2103 RawString* UserVisibleName() const; // Same as scrubbed name.
2112 RawString* UserVisibleName() const; 2104 RawString* QualifiedScrubbedName() const {
2113 RawString* QualifiedPrettyName() const; 2105 return QualifiedName(kScrubbedName);
2114 RawString* QualifiedUserVisibleName() const; 2106 }
2115 const char* QualifiedUserVisibleNameCString() const; 2107 RawString* QualifiedUserVisibleName() const {
2108 return QualifiedName(kUserVisibleName);
2109 }
2116 virtual RawString* DictionaryName() const { return name(); } 2110 virtual RawString* DictionaryName() const { return name(); }
2117 2111
2118 RawString* GetSource() const; 2112 RawString* GetSource() const;
2119 2113
2120 // Return the type of this function's signature. It may not be canonical yet. 2114 // Return the type of this function's signature. It may not be canonical yet.
2121 // For example, if this function has a signature of the form 2115 // For example, if this function has a signature of the form
2122 // '(T, [b: B, c: C]) => R', where 'T' and 'R' are type parameters of the 2116 // '(T, [b: B, c: C]) => R', where 'T' and 'R' are type parameters of the
2123 // owner class of this function, then its signature type is a parameterized 2117 // owner class of this function, then its signature type is a parameterized
2124 // FunctionType with uninstantiated type arguments 'T' and 'R' as elements of 2118 // FunctionType with uninstantiated type arguments 'T' and 'R' as elements of
2125 // its type argument vector. 2119 // its type argument vector.
2126 RawFunctionType* SignatureType() const; 2120 RawFunctionType* SignatureType() const;
2127 2121
2128 // Update the signature type (with a canonical version). 2122 // Update the signature type (with a canonical version).
2129 void SetSignatureType(const FunctionType& value) const; 2123 void SetSignatureType(const FunctionType& value) const;
2130 2124
2131 // Build a string of the form 'C<T, R>(T, {b: B, c: C}) => R' representing the 2125 // Build a string of the form 'C<T, R>(T, {b: B, c: C}) => R' representing the
2132 // internal signature of the given function. In this example, T and R are 2126 // internal signature of the given function. In this example, T and R are
2133 // type parameters of class C, the owner of the function. 2127 // type parameters of class C, the owner of the function.
2134 RawString* Signature() const { 2128 RawString* Signature() const {
2135 const bool instantiate = false; 2129 const bool instantiate = false;
2136 return BuildSignature(instantiate, kInternalName, TypeArguments::Handle()); 2130 return BuildSignature(instantiate, kInternalName, TypeArguments::Handle());
2137 } 2131 }
2138 2132
2139 RawString* PrettySignature() const {
2140 const bool instantiate = false;
2141 return BuildSignature(
2142 instantiate, kPrettyName, TypeArguments::Handle());
2143 }
2144
2145 // Build a string of the form '(T, {b: B, c: C}) => R' representing the 2133 // Build a string of the form '(T, {b: B, c: C}) => R' representing the
2146 // user visible signature of the given function. In this example, T and R are 2134 // user visible signature of the given function. In this example, T and R are
2147 // type parameters of class C, the owner of the function, also called the 2135 // type parameters of class C, the owner of the function, also called the
2148 // scope class of the function type. 2136 // scope class of the function type.
2149 // Implicit parameters are hidden, as well as the prefix denoting the 2137 // Implicit parameters are hidden, as well as the prefix denoting the
2150 // scope class and its type parameters. 2138 // scope class and its type parameters.
2151 RawString* UserVisibleSignature() const { 2139 RawString* UserVisibleSignature() const {
2152 const bool instantiate = false; 2140 const bool instantiate = false;
2153 return BuildSignature( 2141 return BuildSignature(
2154 instantiate, kUserVisibleName, TypeArguments::Handle()); 2142 instantiate, kUserVisibleName, TypeArguments::Handle());
(...skipping 636 matching lines...) Expand 10 before | Expand all | Expand 10 after
2791 RawInstance* implicit_static_closure() const; 2779 RawInstance* implicit_static_closure() const;
2792 void set_implicit_static_closure(const Instance& closure) const; 2780 void set_implicit_static_closure(const Instance& closure) const;
2793 RawScript* eval_script() const; 2781 RawScript* eval_script() const;
2794 void set_eval_script(const Script& value) const; 2782 void set_eval_script(const Script& value) const;
2795 void set_num_optional_parameters(intptr_t value) const; // Encoded value. 2783 void set_num_optional_parameters(intptr_t value) const; // Encoded value.
2796 void set_kind_tag(intptr_t value) const; 2784 void set_kind_tag(intptr_t value) const;
2797 void set_data(const Object& value) const; 2785 void set_data(const Object& value) const;
2798 2786
2799 static RawFunction* New(); 2787 static RawFunction* New();
2800 2788
2789 RawString* QualifiedName(NameVisibility name_visibility) const;
2790
2801 void BuildSignatureParameters( 2791 void BuildSignatureParameters(
2802 bool instantiate, 2792 bool instantiate,
2803 NameVisibility name_visibility, 2793 NameVisibility name_visibility,
2804 const TypeArguments& instantiator, 2794 const TypeArguments& instantiator,
2805 GrowableHandlePtrArray<const String>* pieces) const; 2795 GrowableHandlePtrArray<const String>* pieces) const;
2806 RawString* BuildSignature(bool instantiate, 2796 RawString* BuildSignature(bool instantiate,
2807 NameVisibility name_visibility, 2797 NameVisibility name_visibility,
2808 const TypeArguments& instantiator) const; 2798 const TypeArguments& instantiator) const;
2809 2799
2810 // Checks the type of the formal parameter at the given position for 2800 // Checks the type of the formal parameter at the given position for
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
2885 FINAL_HEAP_OBJECT_IMPLEMENTATION(RedirectionData, Object); 2875 FINAL_HEAP_OBJECT_IMPLEMENTATION(RedirectionData, Object);
2886 friend class Class; 2876 friend class Class;
2887 friend class Function; 2877 friend class Function;
2888 friend class HeapProfiler; 2878 friend class HeapProfiler;
2889 }; 2879 };
2890 2880
2891 2881
2892 class Field : public Object { 2882 class Field : public Object {
2893 public: 2883 public:
2894 RawString* name() const { return raw_ptr()->name_; } 2884 RawString* name() const { return raw_ptr()->name_; }
2895 RawString* PrettyName() const; 2885 RawString* UserVisibleName() const; // Same as scrubbed name.
2896 RawString* UserVisibleName() const;
2897 virtual RawString* DictionaryName() const { return name(); } 2886 virtual RawString* DictionaryName() const { return name(); }
2898 2887
2899 bool is_static() const { return StaticBit::decode(raw_ptr()->kind_bits_); } 2888 bool is_static() const { return StaticBit::decode(raw_ptr()->kind_bits_); }
2900 bool is_final() const { return FinalBit::decode(raw_ptr()->kind_bits_); } 2889 bool is_final() const { return FinalBit::decode(raw_ptr()->kind_bits_); }
2901 bool is_const() const { return ConstBit::decode(raw_ptr()->kind_bits_); } 2890 bool is_const() const { return ConstBit::decode(raw_ptr()->kind_bits_); }
2902 bool is_reflectable() const { 2891 bool is_reflectable() const {
2903 return ReflectableBit::decode(raw_ptr()->kind_bits_); 2892 return ReflectableBit::decode(raw_ptr()->kind_bits_);
2904 } 2893 }
2905 void set_is_reflectable(bool value) const { 2894 void set_is_reflectable(bool value) const {
2906 set_kind_bits(ReflectableBit::update(value, raw_ptr()->kind_bits_)); 2895 set_kind_bits(ReflectableBit::update(value, raw_ptr()->kind_bits_));
(...skipping 1605 matching lines...) Expand 10 before | Expand all | Expand 10 after
4512 kInvalidPc = -1 4501 kInvalidPc = -1
4513 }; 4502 };
4514 4503
4515 uword GetLazyDeoptPc() const; 4504 uword GetLazyDeoptPc() const;
4516 4505
4517 // Find pc, return 0 if not found. 4506 // Find pc, return 0 if not found.
4518 uword GetPcForDeoptId(intptr_t deopt_id, RawPcDescriptors::Kind kind) const; 4507 uword GetPcForDeoptId(intptr_t deopt_id, RawPcDescriptors::Kind kind) const;
4519 intptr_t GetDeoptIdForOsr(uword pc) const; 4508 intptr_t GetDeoptIdForOsr(uword pc) const;
4520 4509
4521 RawString* Name() const; 4510 RawString* Name() const;
4522 RawString* PrettyName() const; 4511 RawString* QualifiedName() const;
4523 4512
4524 int64_t compile_timestamp() const { 4513 int64_t compile_timestamp() const {
4525 return raw_ptr()->compile_timestamp_; 4514 return raw_ptr()->compile_timestamp_;
4526 } 4515 }
4527 4516
4528 intptr_t lazy_deopt_pc_offset() const { 4517 intptr_t lazy_deopt_pc_offset() const {
4529 return raw_ptr()->lazy_deopt_pc_offset_; 4518 return raw_ptr()->lazy_deopt_pc_offset_;
4530 } 4519 }
4531 void set_lazy_deopt_pc_offset(intptr_t pc) const { 4520 void set_lazy_deopt_pc_offset(intptr_t pc) const {
4532 StoreNonPointer(&raw_ptr()->lazy_deopt_pc_offset_, pc); 4521 StoreNonPointer(&raw_ptr()->lazy_deopt_pc_offset_, pc);
(...skipping 779 matching lines...) Expand 10 before | Expand all | Expand 10 after
5312 // Otherwise, if the trail is null, allocate a trail, add the pair <receiver, 5301 // Otherwise, if the trail is null, allocate a trail, add the pair <receiver,
5313 // buddy> to the trail and return false. 5302 // buddy> to the trail and return false.
5314 // The receiver may be added several times, each time with a different buddy. 5303 // The receiver may be added several times, each time with a different buddy.
5315 bool TestAndAddBuddyToTrail(TrailPtr* trail, const AbstractType& buddy) const; 5304 bool TestAndAddBuddyToTrail(TrailPtr* trail, const AbstractType& buddy) const;
5316 5305
5317 // The name of this type, including the names of its type arguments, if any. 5306 // The name of this type, including the names of its type arguments, if any.
5318 virtual RawString* Name() const { 5307 virtual RawString* Name() const {
5319 return BuildName(kInternalName); 5308 return BuildName(kInternalName);
5320 } 5309 }
5321 5310
5322 virtual RawString* PrettyName() const {
5323 return BuildName(kPrettyName);
5324 }
5325
5326 // The name of this type, including the names of its type arguments, if any. 5311 // The name of this type, including the names of its type arguments, if any.
5327 // Names of internal classes are mapped to their public interfaces. 5312 // Names of internal classes are mapped to their public interfaces.
5328 virtual RawString* UserVisibleName() const { 5313 virtual RawString* UserVisibleName() const {
5329 return BuildName(kUserVisibleName); 5314 return BuildName(kUserVisibleName);
5330 } 5315 }
5331 5316
5332 virtual intptr_t Hash() const; 5317 virtual intptr_t Hash() const;
5333 5318
5334 // The name of this type's class, i.e. without the type argument names of this 5319 // The name of this type's class, i.e. without the type argument names of this
5335 // type. 5320 // type.
(...skipping 1177 matching lines...) Expand 10 before | Expand all | Expand 10 after
6513 6498
6514 static RawString* Transform(int32_t (*mapping)(int32_t ch), 6499 static RawString* Transform(int32_t (*mapping)(int32_t ch),
6515 const String& str, 6500 const String& str,
6516 Heap::Space space = Heap::kNew); 6501 Heap::Space space = Heap::kNew);
6517 6502
6518 static RawString* ToUpperCase(const String& str, 6503 static RawString* ToUpperCase(const String& str,
6519 Heap::Space space = Heap::kNew); 6504 Heap::Space space = Heap::kNew);
6520 static RawString* ToLowerCase(const String& str, 6505 static RawString* ToLowerCase(const String& str,
6521 Heap::Space space = Heap::kNew); 6506 Heap::Space space = Heap::kNew);
6522 6507
6523 static RawString* IdentifierPrettyName(const String& name); 6508 static RawString* ScrubName(const String& name);
6524 static RawString* IdentifierPrettyNameRetainPrivate(const String& name); 6509 static RawString* ScrubNameRetainPrivate(const String& name);
6525 6510
6526 static bool EqualsIgnoringPrivateKey(const String& str1, 6511 static bool EqualsIgnoringPrivateKey(const String& str1,
6527 const String& str2); 6512 const String& str2);
6528 6513
6529 static RawString* NewFormatted(const char* format, ...) 6514 static RawString* NewFormatted(const char* format, ...)
6530 PRINTF_ATTRIBUTE(1, 2); 6515 PRINTF_ATTRIBUTE(1, 2);
6531 static RawString* NewFormatted(Heap::Space space, const char* format, ...) 6516 static RawString* NewFormatted(Heap::Space space, const char* format, ...)
6532 PRINTF_ATTRIBUTE(2, 3); 6517 PRINTF_ATTRIBUTE(2, 3);
6533 static RawString* NewFormattedV(const char* format, va_list args, 6518 static RawString* NewFormattedV(const char* format, va_list args,
6534 Heap::Space space = Heap::kNew); 6519 Heap::Space space = Heap::kNew);
(...skipping 1892 matching lines...) Expand 10 before | Expand all | Expand 10 after
8427 8412
8428 8413
8429 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, 8414 RawObject* MegamorphicCache::GetTargetFunction(const Array& array,
8430 intptr_t index) { 8415 intptr_t index) {
8431 return array.At((index * kEntryLength) + kTargetFunctionIndex); 8416 return array.At((index * kEntryLength) + kTargetFunctionIndex);
8432 } 8417 }
8433 8418
8434 } // namespace dart 8419 } // namespace dart
8435 8420
8436 #endif // VM_OBJECT_H_ 8421 #endif // VM_OBJECT_H_
OLDNEW
« no previous file with comments | « runtime/vm/intermediate_language_x64.cc ('k') | runtime/vm/object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698