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

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

Issue 2624393002: Remove dart_noopt and related parts from the VM. (Closed)
Patch Set: Merge branch 'master' of github.com:dart-lang/sdk into remove-noopt Created 3 years, 11 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/precompiler.h ('k') | tests/co19/co19-runtime.status » ('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) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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/precompiler.h" 5 #include "vm/precompiler.h"
6 6
7 #include "vm/aot_optimizer.h" 7 #include "vm/aot_optimizer.h"
8 #include "vm/assembler.h" 8 #include "vm/assembler.h"
9 #include "vm/ast_printer.h" 9 #include "vm/ast_printer.h"
10 #include "vm/branch_optimizer.h" 10 #include "vm/branch_optimizer.h"
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 213
214 214
215 TypeRangeCache::~TypeRangeCache() { 215 TypeRangeCache::~TypeRangeCache() {
216 ASSERT(precompiler_->type_range_cache() == this); 216 ASSERT(precompiler_->type_range_cache() == this);
217 precompiler_->set_type_range_cache(NULL); 217 precompiler_->set_type_range_cache(NULL);
218 } 218 }
219 219
220 220
221 RawError* Precompiler::CompileAll( 221 RawError* Precompiler::CompileAll(
222 Dart_QualifiedFunctionName embedder_entry_points[], 222 Dart_QualifiedFunctionName embedder_entry_points[],
223 bool reset_fields,
224 uint8_t* jit_feedback, 223 uint8_t* jit_feedback,
225 intptr_t jit_feedback_length) { 224 intptr_t jit_feedback_length) {
226 LongJumpScope jump; 225 LongJumpScope jump;
227 if (setjmp(*jump.Set()) == 0) { 226 if (setjmp(*jump.Set()) == 0) {
228 Precompiler precompiler(Thread::Current(), reset_fields); 227 Precompiler precompiler(Thread::Current());
229 precompiler.LoadFeedback(jit_feedback, jit_feedback_length); 228 precompiler.LoadFeedback(jit_feedback, jit_feedback_length);
230 precompiler.DoCompileAll(embedder_entry_points); 229 precompiler.DoCompileAll(embedder_entry_points);
231 return Error::null(); 230 return Error::null();
232 } else { 231 } else {
233 Thread* thread = Thread::Current(); 232 Thread* thread = Thread::Current();
234 const Error& error = Error::Handle(thread->sticky_error()); 233 const Error& error = Error::Handle(thread->sticky_error());
235 thread->clear_sticky_error(); 234 thread->clear_sticky_error();
236 return error.raw(); 235 return error.raw();
237 } 236 }
238 } 237 }
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 THR_Print("Type check for %s is cid range [%" Pd ", %" Pd "]\n", 324 THR_Print("Type check for %s is cid range [%" Pd ", %" Pd "]\n",
326 type.ToCString(), *lower_limit, *upper_limit); 325 type.ToCString(), *lower_limit, *upper_limit);
327 } 326 }
328 327
329 lower_limits_[type_cid] = *lower_limit; 328 lower_limits_[type_cid] = *lower_limit;
330 upper_limits_[type_cid] = *upper_limit; 329 upper_limits_[type_cid] = *upper_limit;
331 return true; 330 return true;
332 } 331 }
333 332
334 333
335 Precompiler::Precompiler(Thread* thread, bool reset_fields) 334 Precompiler::Precompiler(Thread* thread)
336 : thread_(thread), 335 : thread_(thread),
337 zone_(NULL), 336 zone_(NULL),
338 isolate_(thread->isolate()), 337 isolate_(thread->isolate()),
339 reset_fields_(reset_fields),
340 jit_feedback_(NULL), 338 jit_feedback_(NULL),
341 changed_(false), 339 changed_(false),
342 function_count_(0), 340 function_count_(0),
343 class_count_(0), 341 class_count_(0),
344 selector_count_(0), 342 selector_count_(0),
345 dropped_function_count_(0), 343 dropped_function_count_(0),
346 dropped_field_count_(0), 344 dropped_field_count_(0),
347 dropped_class_count_(0), 345 dropped_class_count_(0),
348 dropped_typearg_count_(0), 346 dropped_typearg_count_(0),
349 dropped_type_count_(0), 347 dropped_type_count_(0),
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 {"dart:isolate", "::", "_getIsolateScheduleImmediateClosure"}, 677 {"dart:isolate", "::", "_getIsolateScheduleImmediateClosure"},
680 {"dart:isolate", "::", "_setupHooks"}, 678 {"dart:isolate", "::", "_setupHooks"},
681 {"dart:isolate", "::", "_startMainIsolate"}, 679 {"dart:isolate", "::", "_startMainIsolate"},
682 {"dart:isolate", "::", "_startIsolate"}, 680 {"dart:isolate", "::", "_startIsolate"},
683 {"dart:isolate", "_RawReceivePortImpl", "_handleMessage"}, 681 {"dart:isolate", "_RawReceivePortImpl", "_handleMessage"},
684 {"dart:isolate", "_RawReceivePortImpl", "_lookupHandler"}, 682 {"dart:isolate", "_RawReceivePortImpl", "_lookupHandler"},
685 {"dart:isolate", "_SendPortImpl", "send"}, 683 {"dart:isolate", "_SendPortImpl", "send"},
686 {"dart:typed_data", "ByteData", "ByteData."}, 684 {"dart:typed_data", "ByteData", "ByteData."},
687 {"dart:typed_data", "ByteData", "ByteData._view"}, 685 {"dart:typed_data", "ByteData", "ByteData._view"},
688 {"dart:typed_data", "_ByteBuffer", "_ByteBuffer._New"}, 686 {"dart:typed_data", "_ByteBuffer", "_ByteBuffer._New"},
687 #if !defined(PRODUCT)
689 {"dart:_vmservice", "::", "_registerIsolate"}, 688 {"dart:_vmservice", "::", "_registerIsolate"},
690 {"dart:_vmservice", "::", "boot"}, 689 {"dart:_vmservice", "::", "boot"},
691 #if !defined(PRODUCT)
692 {"dart:developer", "Metrics", "_printMetrics"}, 690 {"dart:developer", "Metrics", "_printMetrics"},
693 {"dart:developer", "::", "_runExtension"}, 691 {"dart:developer", "::", "_runExtension"},
694 {"dart:isolate", "::", "_runPendingImmediateCallback"}, 692 {"dart:isolate", "::", "_runPendingImmediateCallback"},
695 #endif // !PRODUCT 693 #endif // !PRODUCT
696 // Fields 694 // Fields
697 {"dart:core", "Error", "_stackTrace"}, 695 {"dart:core", "Error", "_stackTrace"},
698 {"dart:math", "_Random", "_state"}, 696 {"dart:math", "_Random", "_state"},
699 {NULL, NULL, NULL} // Must be terminated with NULL entries. 697 {NULL, NULL, NULL} // Must be terminated with NULL entries.
700 }; 698 };
701 699
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after
1177 if (field.is_static()) { 1175 if (field.is_static()) {
1178 const Object& value = Object::Handle(Z, field.StaticValue()); 1176 const Object& value = Object::Handle(Z, field.StaticValue());
1179 if (value.IsInstance()) { 1177 if (value.IsInstance()) {
1180 AddConstObject(Instance::Cast(value)); 1178 AddConstObject(Instance::Cast(value));
1181 } 1179 }
1182 1180
1183 if (field.has_initializer()) { 1181 if (field.has_initializer()) {
1184 // Should not be in the middle of initialization while precompiling. 1182 // Should not be in the middle of initialization while precompiling.
1185 ASSERT(value.raw() != Object::transition_sentinel().raw()); 1183 ASSERT(value.raw() != Object::transition_sentinel().raw());
1186 1184
1187 const bool is_initialized = value.raw() != Object::sentinel().raw();
1188 if (is_initialized && !reset_fields_) return;
1189
1190 if (!field.HasPrecompiledInitializer() || 1185 if (!field.HasPrecompiledInitializer() ||
1191 !Function::Handle(Z, field.PrecompiledInitializer()).HasCode()) { 1186 !Function::Handle(Z, field.PrecompiledInitializer()).HasCode()) {
1192 if (FLAG_trace_precompiler) { 1187 if (FLAG_trace_precompiler) {
1193 THR_Print("Precompiling initializer for %s\n", field.ToCString()); 1188 THR_Print("Precompiling initializer for %s\n", field.ToCString());
1194 } 1189 }
1195 ASSERT(Dart::snapshot_kind() != Snapshot::kAppAOT); 1190 ASSERT(Dart::snapshot_kind() != Snapshot::kAppAOT);
1196 const Function& initializer = Function::Handle( 1191 const Function& initializer = Function::Handle(
1197 Z, CompileStaticInitializer(field, /* compute_type = */ true)); 1192 Z, CompileStaticInitializer(field, /* compute_type = */ true));
1198 ASSERT(!initializer.IsNull()); 1193 ASSERT(!initializer.IsNull());
1199 field.SetPrecompiledInitializer(initializer); 1194 field.SetPrecompiledInitializer(initializer);
(...skipping 2462 matching lines...) Expand 10 before | Expand all | Expand 10 after
3662 3657
3663 ASSERT(FLAG_precompiled_mode); 3658 ASSERT(FLAG_precompiled_mode);
3664 const bool optimized = function.IsOptimizable(); // False for natives. 3659 const bool optimized = function.IsOptimizable(); // False for natives.
3665 DartPrecompilationPipeline pipeline(zone, field_type_map); 3660 DartPrecompilationPipeline pipeline(zone, field_type_map);
3666 return PrecompileFunctionHelper(precompiler, &pipeline, function, optimized); 3661 return PrecompileFunctionHelper(precompiler, &pipeline, function, optimized);
3667 } 3662 }
3668 3663
3669 #endif // DART_PRECOMPILER 3664 #endif // DART_PRECOMPILER
3670 3665
3671 } // namespace dart 3666 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/precompiler.h ('k') | tests/co19/co19-runtime.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698