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

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

Issue 1316373002: Remove more GrowableObjectArray usage in parser (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Address comments Created 5 years, 3 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.h ('k') | runtime/vm/parser.h » ('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/cpu.h" 10 #include "vm/cpu.h"
(...skipping 2972 matching lines...) Expand 10 before | Expand all | Expand 10 after
2983 2983
2984 2984
2985 void Class::AddField(const Field& field) const { 2985 void Class::AddField(const Field& field) const {
2986 const Array& arr = Array::Handle(fields()); 2986 const Array& arr = Array::Handle(fields());
2987 const Array& new_arr = Array::Handle(Array::Grow(arr, arr.Length() + 1)); 2987 const Array& new_arr = Array::Handle(Array::Grow(arr, arr.Length() + 1));
2988 new_arr.SetAt(arr.Length(), field); 2988 new_arr.SetAt(arr.Length(), field);
2989 SetFields(new_arr); 2989 SetFields(new_arr);
2990 } 2990 }
2991 2991
2992 2992
2993 void Class::AddFields(const GrowableObjectArray& new_fields) const { 2993 void Class::AddFields(const GrowableArray<const Field*>& new_fields) const {
2994 const intptr_t num_new_fields = new_fields.Length(); 2994 const intptr_t num_new_fields = new_fields.length();
2995 if (num_new_fields == 0) return; 2995 if (num_new_fields == 0) return;
2996 const Array& arr = Array::Handle(fields()); 2996 const Array& arr = Array::Handle(fields());
2997 const intptr_t num_old_fields = arr.Length(); 2997 const intptr_t num_old_fields = arr.Length();
2998 const Array& new_arr = Array::Handle( 2998 const Array& new_arr = Array::Handle(
2999 Array::Grow(arr, num_old_fields + num_new_fields, Heap::kOld)); 2999 Array::Grow(arr, num_old_fields + num_new_fields, Heap::kOld));
3000 Field& field = Field::Handle();
3001 for (intptr_t i = 0; i < num_new_fields; i++) { 3000 for (intptr_t i = 0; i < num_new_fields; i++) {
3002 field ^= new_fields.At(i); 3001 new_arr.SetAt(i + num_old_fields, *new_fields.At(i));
3003 new_arr.SetAt(i + num_old_fields, field);
3004 } 3002 }
3005 SetFields(new_arr); 3003 SetFields(new_arr);
3006 } 3004 }
3007 3005
3008 3006
3009 intptr_t Class::FindFieldIndex(const Field& needle) const { 3007 intptr_t Class::FindFieldIndex(const Field& needle) const {
3010 Isolate* isolate = Isolate::Current(); 3008 Isolate* isolate = Isolate::Current();
3011 if (EnsureIsFinalized(isolate) != Error::null()) { 3009 if (EnsureIsFinalized(isolate) != Error::null()) {
3012 return -1; 3010 return -1;
3013 } 3011 }
(...skipping 8614 matching lines...) Expand 10 before | Expand all | Expand 10 after
11628 uword size = ExceptionHandlers::InstanceSize(num_handlers); 11626 uword size = ExceptionHandlers::InstanceSize(num_handlers);
11629 RawObject* raw = Object::Allocate(ExceptionHandlers::kClassId, 11627 RawObject* raw = Object::Allocate(ExceptionHandlers::kClassId,
11630 size, 11628 size,
11631 Heap::kOld); 11629 Heap::kOld);
11632 NoSafepointScope no_safepoint; 11630 NoSafepointScope no_safepoint;
11633 result ^= raw; 11631 result ^= raw;
11634 result.StoreNonPointer(&result.raw_ptr()->num_entries_, num_handlers); 11632 result.StoreNonPointer(&result.raw_ptr()->num_entries_, num_handlers);
11635 } 11633 }
11636 const Array& handled_types_data = (num_handlers == 0) ? 11634 const Array& handled_types_data = (num_handlers == 0) ?
11637 Object::empty_array() : 11635 Object::empty_array() :
11638 Array::Handle(Array::New(num_handlers)); 11636 Array::Handle(Array::New(num_handlers, Heap::kOld));
11639 result.set_handled_types_data(handled_types_data); 11637 result.set_handled_types_data(handled_types_data);
11640 return result.raw(); 11638 return result.raw();
11641 } 11639 }
11642 11640
11643 11641
11644 RawExceptionHandlers* ExceptionHandlers::New(const Array& handled_types_data) { 11642 RawExceptionHandlers* ExceptionHandlers::New(const Array& handled_types_data) {
11645 ASSERT(Object::exception_handlers_class() != Class::null()); 11643 ASSERT(Object::exception_handlers_class() != Class::null());
11646 const intptr_t num_handlers = handled_types_data.Length(); 11644 const intptr_t num_handlers = handled_types_data.Length();
11647 if ((num_handlers < 0) || (num_handlers >= kMaxHandlers)) { 11645 if ((num_handlers < 0) || (num_handlers >= kMaxHandlers)) {
11648 FATAL1("Fatal error in ExceptionHandlers::New(): " 11646 FATAL1("Fatal error in ExceptionHandlers::New(): "
(...skipping 2171 matching lines...) Expand 10 before | Expand all | Expand 10 after
13820 SubtypeTestCache& result = SubtypeTestCache::Handle(); 13818 SubtypeTestCache& result = SubtypeTestCache::Handle();
13821 { 13819 {
13822 // SubtypeTestCache objects are long living objects, allocate them in the 13820 // SubtypeTestCache objects are long living objects, allocate them in the
13823 // old generation. 13821 // old generation.
13824 RawObject* raw = Object::Allocate(SubtypeTestCache::kClassId, 13822 RawObject* raw = Object::Allocate(SubtypeTestCache::kClassId,
13825 SubtypeTestCache::InstanceSize(), 13823 SubtypeTestCache::InstanceSize(),
13826 Heap::kOld); 13824 Heap::kOld);
13827 NoSafepointScope no_safepoint; 13825 NoSafepointScope no_safepoint;
13828 result ^= raw; 13826 result ^= raw;
13829 } 13827 }
13830 const Array& cache = Array::Handle(Array::New(kTestEntryLength)); 13828 const Array& cache = Array::Handle(Array::New(kTestEntryLength, Heap::kOld));
13831 result.set_cache(cache); 13829 result.set_cache(cache);
13832 return result.raw(); 13830 return result.raw();
13833 } 13831 }
13834 13832
13835 13833
13836 void SubtypeTestCache::set_cache(const Array& value) const { 13834 void SubtypeTestCache::set_cache(const Array& value) const {
13837 StorePointer(&raw_ptr()->cache_, value.raw()); 13835 StorePointer(&raw_ptr()->cache_, value.raw());
13838 } 13836 }
13839 13837
13840 13838
(...skipping 7594 matching lines...) Expand 10 before | Expand all | Expand 10 after
21435 return tag_label.ToCString(); 21433 return tag_label.ToCString();
21436 } 21434 }
21437 21435
21438 21436
21439 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { 21437 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const {
21440 Instance::PrintJSONImpl(stream, ref); 21438 Instance::PrintJSONImpl(stream, ref);
21441 } 21439 }
21442 21440
21443 21441
21444 } // namespace dart 21442 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/parser.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698