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

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

Issue 1389353004: Remove isolate argument from handle allocation: Part II (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: c Created 5 years, 2 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.cc ('k') | runtime/vm/parser.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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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_store.h" 5 #include "vm/object_store.h"
6 6
7 #include "vm/exceptions.h" 7 #include "vm/exceptions.h"
8 #include "vm/dart_entry.h" 8 #include "vm/dart_entry.h"
9 #include "vm/isolate.h" 9 #include "vm/isolate.h"
10 #include "vm/object.h" 10 #include "vm/object.h"
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 109
110 110
111 void ObjectStore::Init(Isolate* isolate) { 111 void ObjectStore::Init(Isolate* isolate) {
112 ASSERT(isolate->object_store() == NULL); 112 ASSERT(isolate->object_store() == NULL);
113 ObjectStore* store = new ObjectStore(); 113 ObjectStore* store = new ObjectStore();
114 isolate->set_object_store(store); 114 isolate->set_object_store(store);
115 } 115 }
116 116
117 117
118 bool ObjectStore::PreallocateObjects() { 118 bool ObjectStore::PreallocateObjects() {
119 Isolate* isolate = Isolate::Current(); 119 Thread* thread = Thread::Current();
120 Isolate* isolate = thread->isolate();
121 Zone* zone = thread->zone();
120 ASSERT(isolate != NULL && isolate->object_store() == this); 122 ASSERT(isolate != NULL && isolate->object_store() == this);
121 if (this->stack_overflow() != Instance::null()) { 123 if (this->stack_overflow() != Instance::null()) {
122 ASSERT(this->out_of_memory() != Instance::null()); 124 ASSERT(this->out_of_memory() != Instance::null());
123 ASSERT(this->preallocated_stack_trace() != Stacktrace::null()); 125 ASSERT(this->preallocated_stack_trace() != Stacktrace::null());
124 return true; 126 return true;
125 } 127 }
126 ASSERT(this->stack_overflow() == Instance::null()); 128 ASSERT(this->stack_overflow() == Instance::null());
127 ASSERT(this->out_of_memory() == Instance::null()); 129 ASSERT(this->out_of_memory() == Instance::null());
128 ASSERT(this->preallocated_stack_trace() == Stacktrace::null()); 130 ASSERT(this->preallocated_stack_trace() == Stacktrace::null());
129 131
(...skipping 23 matching lines...) Expand all
153 Object::empty_array()); 155 Object::empty_array());
154 if (result.IsError()) { 156 if (result.IsError()) {
155 return false; 157 return false;
156 } 158 }
157 set_out_of_memory(Instance::Cast(result)); 159 set_out_of_memory(Instance::Cast(result));
158 160
159 // Allocate pre-allocated unhandled exception object initialized with the 161 // Allocate pre-allocated unhandled exception object initialized with the
160 // pre-allocated OutOfMemoryError. 162 // pre-allocated OutOfMemoryError.
161 const UnhandledException& unhandled_exception = UnhandledException::Handle( 163 const UnhandledException& unhandled_exception = UnhandledException::Handle(
162 UnhandledException::New(Instance::Cast(result), 164 UnhandledException::New(Instance::Cast(result),
163 Stacktrace::Handle(isolate))); 165 Stacktrace::Handle(zone)));
164 set_preallocated_unhandled_exception(unhandled_exception); 166 set_preallocated_unhandled_exception(unhandled_exception);
165 167
166 const Array& code_array = Array::Handle(isolate, 168 const Array& code_array = Array::Handle(zone,
167 Array::New(Stacktrace::kPreallocatedStackdepth, Heap::kOld)); 169 Array::New(Stacktrace::kPreallocatedStackdepth, Heap::kOld));
168 const Array& pc_offset_array = Array::Handle(isolate, 170 const Array& pc_offset_array = Array::Handle(zone,
169 Array::New(Stacktrace::kPreallocatedStackdepth, Heap::kOld)); 171 Array::New(Stacktrace::kPreallocatedStackdepth, Heap::kOld));
170 const Stacktrace& stack_trace = Stacktrace::Handle(isolate, 172 const Stacktrace& stack_trace = Stacktrace::Handle(zone,
171 Stacktrace::New(code_array, pc_offset_array)); 173 Stacktrace::New(code_array, pc_offset_array));
172 // Expansion of inlined functions requires additional memory at run time, 174 // Expansion of inlined functions requires additional memory at run time,
173 // avoid it. 175 // avoid it.
174 stack_trace.set_expand_inlined(false); 176 stack_trace.set_expand_inlined(false);
175 set_preallocated_stack_trace(stack_trace); 177 set_preallocated_stack_trace(stack_trace);
176 178
177 return true; 179 return true;
178 } 180 }
179 181
180 182
181 void ObjectStore::InitKnownObjects() { 183 void ObjectStore::InitKnownObjects() {
182 Isolate* isolate = Isolate::Current(); 184 Thread* thread = Thread::Current();
185 Zone* zone = thread->zone();
186 Isolate* isolate = thread->isolate();
183 ASSERT(isolate != NULL && isolate->object_store() == this); 187 ASSERT(isolate != NULL && isolate->object_store() == this);
184 188
185 const Library& async_lib = Library::Handle(async_library()); 189 const Library& async_lib = Library::Handle(async_library());
186 ASSERT(!async_lib.IsNull()); 190 ASSERT(!async_lib.IsNull());
187 Class& cls = Class::Handle(isolate); 191 Class& cls = Class::Handle(zone);
188 cls = async_lib.LookupClass(Symbols::Future()); 192 cls = async_lib.LookupClass(Symbols::Future());
189 ASSERT(!cls.IsNull()); 193 ASSERT(!cls.IsNull());
190 set_future_class(cls); 194 set_future_class(cls);
191 cls = async_lib.LookupClass(Symbols::Completer()); 195 cls = async_lib.LookupClass(Symbols::Completer());
192 ASSERT(!cls.IsNull()); 196 ASSERT(!cls.IsNull());
193 set_completer_class(cls); 197 set_completer_class(cls);
194 cls = async_lib.LookupClass(Symbols::StreamIterator()); 198 cls = async_lib.LookupClass(Symbols::StreamIterator());
195 ASSERT(!cls.IsNull()); 199 ASSERT(!cls.IsNull());
196 set_stream_iterator_class(cls); 200 set_stream_iterator_class(cls);
197 201
198 const Library& internal_lib = Library::Handle(internal_library()); 202 const Library& internal_lib = Library::Handle(internal_library());
199 cls = internal_lib.LookupClass(Symbols::Symbol()); 203 cls = internal_lib.LookupClass(Symbols::Symbol());
200 set_symbol_class(cls); 204 set_symbol_class(cls);
201 } 205 }
202 206
203 } // namespace dart 207 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/object.cc ('k') | runtime/vm/parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698