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

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

Issue 1291803009: Enable concurrent optimization test after migrating scopes to Thread* (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Update ASSERT in LongJumpScope. Created 5 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
« no previous file with comments | « runtime/vm/dart.cc ('k') | runtime/vm/flow_graph_compiler.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 "include/dart_api.h" 5 #include "include/dart_api.h"
6 #include "include/dart_mirrors_api.h" 6 #include "include/dart_mirrors_api.h"
7 #include "include/dart_native_api.h" 7 #include "include/dart_native_api.h"
8 8
9 #include "platform/assert.h" 9 #include "platform/assert.h"
10 #include "vm/class_finalizer.h" 10 #include "vm/class_finalizer.h"
(...skipping 1492 matching lines...) Expand 10 before | Expand all | Expand 10 after
1503 ptr, old_size, new_size); 1503 ptr, old_size, new_size);
1504 } 1504 }
1505 1505
1506 1506
1507 DART_EXPORT Dart_Handle Dart_CreateSnapshot( 1507 DART_EXPORT Dart_Handle Dart_CreateSnapshot(
1508 uint8_t** vm_isolate_snapshot_buffer, 1508 uint8_t** vm_isolate_snapshot_buffer,
1509 intptr_t* vm_isolate_snapshot_size, 1509 intptr_t* vm_isolate_snapshot_size,
1510 uint8_t** isolate_snapshot_buffer, 1510 uint8_t** isolate_snapshot_buffer,
1511 intptr_t* isolate_snapshot_size) { 1511 intptr_t* isolate_snapshot_size) {
1512 ASSERT(FLAG_load_deferred_eagerly); 1512 ASSERT(FLAG_load_deferred_eagerly);
1513 Isolate* isolate = Isolate::Current(); 1513 Thread* thread = Thread::Current();
1514 Isolate* isolate = thread->isolate();
1514 DARTSCOPE(isolate); 1515 DARTSCOPE(isolate);
1515 TIMERSCOPE(isolate, time_creating_snapshot); 1516 TIMERSCOPE(thread, time_creating_snapshot);
1516 if (vm_isolate_snapshot_buffer != NULL && 1517 if (vm_isolate_snapshot_buffer != NULL &&
1517 vm_isolate_snapshot_size == NULL) { 1518 vm_isolate_snapshot_size == NULL) {
1518 RETURN_NULL_ERROR(vm_isolate_snapshot_size); 1519 RETURN_NULL_ERROR(vm_isolate_snapshot_size);
1519 } 1520 }
1520 if (isolate_snapshot_buffer == NULL) { 1521 if (isolate_snapshot_buffer == NULL) {
1521 RETURN_NULL_ERROR(isolate_snapshot_buffer); 1522 RETURN_NULL_ERROR(isolate_snapshot_buffer);
1522 } 1523 }
1523 if (isolate_snapshot_size == NULL) { 1524 if (isolate_snapshot_size == NULL) {
1524 RETURN_NULL_ERROR(isolate_snapshot_size); 1525 RETURN_NULL_ERROR(isolate_snapshot_size);
1525 } 1526 }
(...skipping 16 matching lines...) Expand all
1542 writer.WriteFullSnapshot(); 1543 writer.WriteFullSnapshot();
1543 *vm_isolate_snapshot_size = writer.VmIsolateSnapshotSize(); 1544 *vm_isolate_snapshot_size = writer.VmIsolateSnapshotSize();
1544 *isolate_snapshot_size = writer.IsolateSnapshotSize(); 1545 *isolate_snapshot_size = writer.IsolateSnapshotSize();
1545 return Api::Success(); 1546 return Api::Success();
1546 } 1547 }
1547 1548
1548 1549
1549 static Dart_Handle createLibrarySnapshot(Dart_Handle library, 1550 static Dart_Handle createLibrarySnapshot(Dart_Handle library,
1550 uint8_t** buffer, 1551 uint8_t** buffer,
1551 intptr_t* size) { 1552 intptr_t* size) {
1552 Isolate* isolate = Isolate::Current(); 1553 Thread* thread = Thread::Current();
1554 Isolate* isolate = thread->isolate();
1553 DARTSCOPE(isolate); 1555 DARTSCOPE(isolate);
1554 TIMERSCOPE(isolate, time_creating_snapshot); 1556 TIMERSCOPE(thread, time_creating_snapshot);
1555 if (buffer == NULL) { 1557 if (buffer == NULL) {
1556 RETURN_NULL_ERROR(buffer); 1558 RETURN_NULL_ERROR(buffer);
1557 } 1559 }
1558 if (size == NULL) { 1560 if (size == NULL) {
1559 RETURN_NULL_ERROR(size); 1561 RETURN_NULL_ERROR(size);
1560 } 1562 }
1561 // Finalize all classes if needed. 1563 // Finalize all classes if needed.
1562 Dart_Handle state = Api::CheckAndFinalizePendingClasses(isolate); 1564 Dart_Handle state = Api::CheckAndFinalizePendingClasses(isolate);
1563 if (::Dart_IsError(state)) { 1565 if (::Dart_IsError(state)) {
1564 return state; 1566 return state;
(...skipping 2604 matching lines...) Expand 10 before | Expand all | Expand 10 after
4169 return Api::NewError( 4171 return Api::NewError(
4170 "%s expects argument 'name' to be a valid constructor.", 4172 "%s expects argument 'name' to be a valid constructor.",
4171 CURRENT_FUNC); 4173 CURRENT_FUNC);
4172 } 4174 }
4173 4175
4174 4176
4175 DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target, 4177 DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target,
4176 Dart_Handle name, 4178 Dart_Handle name,
4177 int number_of_arguments, 4179 int number_of_arguments,
4178 Dart_Handle* arguments) { 4180 Dart_Handle* arguments) {
4179 Isolate* isolate = Isolate::Current(); 4181 Thread* thread = Thread::Current();
4182 Isolate* isolate = thread->isolate();
4180 DARTSCOPE(isolate); 4183 DARTSCOPE(isolate);
4181 CHECK_CALLBACK_STATE(isolate); 4184 CHECK_CALLBACK_STATE(isolate);
4182 // TODO(turnidge): This is a bit simplistic. It overcounts when 4185 // TODO(turnidge): This is a bit simplistic. It overcounts when
4183 // other operations (gc, compilation) are active. 4186 // other operations (gc, compilation) are active.
4184 TIMERSCOPE(isolate, time_dart_execution); 4187 TIMERSCOPE(thread, time_dart_execution);
4185 4188
4186 const String& function_name = Api::UnwrapStringHandle(isolate, name); 4189 const String& function_name = Api::UnwrapStringHandle(isolate, name);
4187 if (function_name.IsNull()) { 4190 if (function_name.IsNull()) {
4188 RETURN_TYPE_ERROR(isolate, name, String); 4191 RETURN_TYPE_ERROR(isolate, name, String);
4189 } 4192 }
4190 if (number_of_arguments < 0) { 4193 if (number_of_arguments < 0) {
4191 return Api::NewError( 4194 return Api::NewError(
4192 "%s expects argument 'number_of_arguments' to be non-negative.", 4195 "%s expects argument 'number_of_arguments' to be non-negative.",
4193 CURRENT_FUNC); 4196 CURRENT_FUNC);
4194 } 4197 }
(...skipping 993 matching lines...) Expand 10 before | Expand all | Expand 10 after
5188 // as having failed to load without providing an error instance. 5191 // as having failed to load without providing an error instance.
5189 lib.SetLoadError(Object::null_instance()); 5192 lib.SetLoadError(Object::null_instance());
5190 } 5193 }
5191 } 5194 }
5192 5195
5193 5196
5194 DART_EXPORT Dart_Handle Dart_LoadScript(Dart_Handle url, 5197 DART_EXPORT Dart_Handle Dart_LoadScript(Dart_Handle url,
5195 Dart_Handle source, 5198 Dart_Handle source,
5196 intptr_t line_offset, 5199 intptr_t line_offset,
5197 intptr_t column_offset) { 5200 intptr_t column_offset) {
5198 Isolate* isolate = Isolate::Current(); 5201 Thread* thread = Thread::Current();
5202 Isolate* isolate = thread->isolate();
5199 DARTSCOPE(isolate); 5203 DARTSCOPE(isolate);
5200 TIMERSCOPE(isolate, time_script_loading); 5204 TIMERSCOPE(thread, time_script_loading);
5201 const String& url_str = Api::UnwrapStringHandle(isolate, url); 5205 const String& url_str = Api::UnwrapStringHandle(isolate, url);
5202 if (url_str.IsNull()) { 5206 if (url_str.IsNull()) {
5203 RETURN_TYPE_ERROR(isolate, url, String); 5207 RETURN_TYPE_ERROR(isolate, url, String);
5204 } 5208 }
5205 const String& source_str = Api::UnwrapStringHandle(isolate, source); 5209 const String& source_str = Api::UnwrapStringHandle(isolate, source);
5206 if (source_str.IsNull()) { 5210 if (source_str.IsNull()) {
5207 RETURN_TYPE_ERROR(isolate, source, String); 5211 RETURN_TYPE_ERROR(isolate, source, String);
5208 } 5212 }
5209 Library& library = 5213 Library& library =
5210 Library::Handle(isolate, isolate->object_store()->root_library()); 5214 Library::Handle(isolate, isolate->object_store()->root_library());
(...skipping 23 matching lines...) Expand all
5234 isolate, Script::New(url_str, source_str, RawScript::kScriptTag)); 5238 isolate, Script::New(url_str, source_str, RawScript::kScriptTag));
5235 script.SetLocationOffset(line_offset, column_offset); 5239 script.SetLocationOffset(line_offset, column_offset);
5236 Dart_Handle result; 5240 Dart_Handle result;
5237 CompileSource(isolate, library, script, &result); 5241 CompileSource(isolate, library, script, &result);
5238 return result; 5242 return result;
5239 } 5243 }
5240 5244
5241 5245
5242 DART_EXPORT Dart_Handle Dart_LoadScriptFromSnapshot(const uint8_t* buffer, 5246 DART_EXPORT Dart_Handle Dart_LoadScriptFromSnapshot(const uint8_t* buffer,
5243 intptr_t buffer_len) { 5247 intptr_t buffer_len) {
5244 Isolate* isolate = Isolate::Current(); 5248 Thread* thread = Thread::Current();
5249 Isolate* isolate = thread->isolate();
5245 DARTSCOPE(isolate); 5250 DARTSCOPE(isolate);
5246 TIMERSCOPE(isolate, time_script_loading); 5251 TIMERSCOPE(thread, time_script_loading);
5247 StackZone zone(isolate); 5252 StackZone zone(isolate);
5248 if (buffer == NULL) { 5253 if (buffer == NULL) {
5249 RETURN_NULL_ERROR(buffer); 5254 RETURN_NULL_ERROR(buffer);
5250 } 5255 }
5251 NoHeapGrowthControlScope no_growth_control; 5256 NoHeapGrowthControlScope no_growth_control;
5252 5257
5253 const Snapshot* snapshot = Snapshot::SetupFromBuffer(buffer); 5258 const Snapshot* snapshot = Snapshot::SetupFromBuffer(buffer);
5254 if (!snapshot->IsScriptSnapshot()) { 5259 if (!snapshot->IsScriptSnapshot()) {
5255 return Api::NewError("%s expects parameter 'buffer' to be a script type" 5260 return Api::NewError("%s expects parameter 'buffer' to be a script type"
5256 " snapshot.", CURRENT_FUNC); 5261 " snapshot.", CURRENT_FUNC);
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
5447 } 5452 }
5448 } 5453 }
5449 return error_in; 5454 return error_in;
5450 } 5455 }
5451 5456
5452 5457
5453 DART_EXPORT Dart_Handle Dart_LoadLibrary(Dart_Handle url, 5458 DART_EXPORT Dart_Handle Dart_LoadLibrary(Dart_Handle url,
5454 Dart_Handle source, 5459 Dart_Handle source,
5455 intptr_t line_offset, 5460 intptr_t line_offset,
5456 intptr_t column_offset) { 5461 intptr_t column_offset) {
5457 Isolate* isolate = Isolate::Current(); 5462 Thread* thread = Thread::Current();
5463 Isolate* isolate = thread->isolate();
5458 DARTSCOPE(isolate); 5464 DARTSCOPE(isolate);
5459 TIMERSCOPE(isolate, time_script_loading); 5465 TIMERSCOPE(thread, time_script_loading);
5460 const String& url_str = Api::UnwrapStringHandle(isolate, url); 5466 const String& url_str = Api::UnwrapStringHandle(isolate, url);
5461 if (url_str.IsNull()) { 5467 if (url_str.IsNull()) {
5462 RETURN_TYPE_ERROR(isolate, url, String); 5468 RETURN_TYPE_ERROR(isolate, url, String);
5463 } 5469 }
5464 const String& source_str = Api::UnwrapStringHandle(isolate, source); 5470 const String& source_str = Api::UnwrapStringHandle(isolate, source);
5465 if (source_str.IsNull()) { 5471 if (source_str.IsNull()) {
5466 RETURN_TYPE_ERROR(isolate, source, String); 5472 RETURN_TYPE_ERROR(isolate, source, String);
5467 } 5473 }
5468 if (line_offset < 0) { 5474 if (line_offset < 0) {
5469 return Api::NewError("%s: argument 'line_offset' must be positive number", 5475 return Api::NewError("%s: argument 'line_offset' must be positive number",
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
5553 } 5559 }
5554 return Api::Success(); 5560 return Api::Success();
5555 } 5561 }
5556 5562
5557 5563
5558 DART_EXPORT Dart_Handle Dart_LoadSource(Dart_Handle library, 5564 DART_EXPORT Dart_Handle Dart_LoadSource(Dart_Handle library,
5559 Dart_Handle url, 5565 Dart_Handle url,
5560 Dart_Handle source, 5566 Dart_Handle source,
5561 intptr_t line_offset, 5567 intptr_t line_offset,
5562 intptr_t column_offset) { 5568 intptr_t column_offset) {
5563 Isolate* isolate = Isolate::Current(); 5569 Thread* thread = Thread::Current();
5570 Isolate* isolate = thread->isolate();
5564 DARTSCOPE(isolate); 5571 DARTSCOPE(isolate);
5565 TIMERSCOPE(isolate, time_script_loading); 5572 TIMERSCOPE(thread, time_script_loading);
5566 const Library& lib = Api::UnwrapLibraryHandle(isolate, library); 5573 const Library& lib = Api::UnwrapLibraryHandle(isolate, library);
5567 if (lib.IsNull()) { 5574 if (lib.IsNull()) {
5568 RETURN_TYPE_ERROR(isolate, library, Library); 5575 RETURN_TYPE_ERROR(isolate, library, Library);
5569 } 5576 }
5570 const String& url_str = Api::UnwrapStringHandle(isolate, url); 5577 const String& url_str = Api::UnwrapStringHandle(isolate, url);
5571 if (url_str.IsNull()) { 5578 if (url_str.IsNull()) {
5572 RETURN_TYPE_ERROR(isolate, url, String); 5579 RETURN_TYPE_ERROR(isolate, url, String);
5573 } 5580 }
5574 const String& source_str = Api::UnwrapStringHandle(isolate, source); 5581 const String& source_str = Api::UnwrapStringHandle(isolate, source);
5575 if (source_str.IsNull()) { 5582 if (source_str.IsNull()) {
(...skipping 16 matching lines...) Expand all
5592 script.SetLocationOffset(line_offset, column_offset); 5599 script.SetLocationOffset(line_offset, column_offset);
5593 Dart_Handle result; 5600 Dart_Handle result;
5594 CompileSource(isolate, lib, script, &result); 5601 CompileSource(isolate, lib, script, &result);
5595 return result; 5602 return result;
5596 } 5603 }
5597 5604
5598 5605
5599 DART_EXPORT Dart_Handle Dart_LibraryLoadPatch(Dart_Handle library, 5606 DART_EXPORT Dart_Handle Dart_LibraryLoadPatch(Dart_Handle library,
5600 Dart_Handle url, 5607 Dart_Handle url,
5601 Dart_Handle patch_source) { 5608 Dart_Handle patch_source) {
5602 Isolate* isolate = Isolate::Current(); 5609 Thread* thread = Thread::Current();
5610 Isolate* isolate = thread->isolate();
5603 DARTSCOPE(isolate); 5611 DARTSCOPE(isolate);
5604 TIMERSCOPE(isolate, time_script_loading); 5612 TIMERSCOPE(thread, time_script_loading);
5605 const Library& lib = Api::UnwrapLibraryHandle(isolate, library); 5613 const Library& lib = Api::UnwrapLibraryHandle(isolate, library);
5606 if (lib.IsNull()) { 5614 if (lib.IsNull()) {
5607 RETURN_TYPE_ERROR(isolate, library, Library); 5615 RETURN_TYPE_ERROR(isolate, library, Library);
5608 } 5616 }
5609 const String& url_str = Api::UnwrapStringHandle(isolate, url); 5617 const String& url_str = Api::UnwrapStringHandle(isolate, url);
5610 if (url_str.IsNull()) { 5618 if (url_str.IsNull()) {
5611 RETURN_TYPE_ERROR(isolate, url, String); 5619 RETURN_TYPE_ERROR(isolate, url, String);
5612 } 5620 }
5613 const String& source_str = Api::UnwrapStringHandle(isolate, patch_source); 5621 const String& source_str = Api::UnwrapStringHandle(isolate, patch_source);
5614 if (source_str.IsNull()) { 5622 if (source_str.IsNull()) {
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after
6021 ASSERT(stream != NULL); 6029 ASSERT(stream != NULL);
6022 TimelineEvent* event = stream->StartEvent(); 6030 TimelineEvent* event = stream->StartEvent();
6023 if (event != NULL) { 6031 if (event != NULL) {
6024 event->AsyncEnd(label, async_id); 6032 event->AsyncEnd(label, async_id);
6025 event->Complete(); 6033 event->Complete();
6026 } 6034 }
6027 return Api::Success(); 6035 return Api::Success();
6028 } 6036 }
6029 6037
6030 } // namespace dart 6038 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/dart.cc ('k') | runtime/vm/flow_graph_compiler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698