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

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

Issue 2692803006: Track the 'awaiter return' call stack use it to detect uncaught exceptions in async functions (Closed)
Patch Set: rmacnak review Created 3 years, 9 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
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 RUNTIME_VM_OBJECT_H_ 5 #ifndef RUNTIME_VM_OBJECT_H_
6 #define RUNTIME_VM_OBJECT_H_ 6 #define RUNTIME_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 4495 matching lines...) Expand 10 before | Expand all | Expand 10 after
4506 public: 4506 public:
4507 static const intptr_t kInvalidPcOffset = 0; 4507 static const intptr_t kInvalidPcOffset = 0;
4508 4508
4509 intptr_t num_entries() const; 4509 intptr_t num_entries() const;
4510 4510
4511 void GetHandlerInfo(intptr_t try_index, ExceptionHandlerInfo* info) const; 4511 void GetHandlerInfo(intptr_t try_index, ExceptionHandlerInfo* info) const;
4512 4512
4513 uword HandlerPCOffset(intptr_t try_index) const; 4513 uword HandlerPCOffset(intptr_t try_index) const;
4514 intptr_t OuterTryIndex(intptr_t try_index) const; 4514 intptr_t OuterTryIndex(intptr_t try_index) const;
4515 bool NeedsStackTrace(intptr_t try_index) const; 4515 bool NeedsStackTrace(intptr_t try_index) const;
4516 bool IsGenerated(intptr_t try_index) const;
4516 4517
4517 void SetHandlerInfo(intptr_t try_index, 4518 void SetHandlerInfo(intptr_t try_index,
4518 intptr_t outer_try_index, 4519 intptr_t outer_try_index,
4519 uword handler_pc_offset, 4520 uword handler_pc_offset,
4520 bool needs_stacktrace, 4521 bool needs_stacktrace,
4521 bool has_catch_all) const; 4522 bool has_catch_all,
4523 TokenPosition token_pos,
4524 bool is_generated) const;
4522 4525
4523 RawArray* GetHandledTypes(intptr_t try_index) const; 4526 RawArray* GetHandledTypes(intptr_t try_index) const;
4524 void SetHandledTypes(intptr_t try_index, const Array& handled_types) const; 4527 void SetHandledTypes(intptr_t try_index, const Array& handled_types) const;
4525 bool HasCatchAll(intptr_t try_index) const; 4528 bool HasCatchAll(intptr_t try_index) const;
4526 4529
4527 static intptr_t InstanceSize() { 4530 static intptr_t InstanceSize() {
4528 ASSERT(sizeof(RawExceptionHandlers) == 4531 ASSERT(sizeof(RawExceptionHandlers) ==
4529 OFFSET_OF_RETURNED_VALUE(RawExceptionHandlers, data)); 4532 OFFSET_OF_RETURNED_VALUE(RawExceptionHandlers, data));
4530 return 0; 4533 return 0;
4531 } 4534 }
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
4675 4678
4676 RawCodeSourceMap* code_source_map() const { 4679 RawCodeSourceMap* code_source_map() const {
4677 return raw_ptr()->code_source_map_; 4680 return raw_ptr()->code_source_map_;
4678 } 4681 }
4679 4682
4680 void set_code_source_map(const CodeSourceMap& code_source_map) const { 4683 void set_code_source_map(const CodeSourceMap& code_source_map) const {
4681 ASSERT(code_source_map.IsOld()); 4684 ASSERT(code_source_map.IsOld());
4682 StorePointer(&raw_ptr()->code_source_map_, code_source_map.raw()); 4685 StorePointer(&raw_ptr()->code_source_map_, code_source_map.raw());
4683 } 4686 }
4684 4687
4688 RawArray* await_token_positions() const {
4689 #if defined(DART_PRECOMPILED_RUNTIME)
4690 return Array::null();
4691 #else
4692 return raw_ptr()->await_token_positions_;
4693 #endif
4694 }
4695
4696 void SetAwaitTokenPositions(const Array& await_token_positions) const;
4697
4685 // Used during reloading (see object_reload.cc). Calls Reset on all ICDatas 4698 // Used during reloading (see object_reload.cc). Calls Reset on all ICDatas
4686 // that are embedded inside the Code object. 4699 // that are embedded inside the Code object.
4687 void ResetICDatas(Zone* zone) const; 4700 void ResetICDatas(Zone* zone) const;
4688 4701
4689 // Array of DeoptInfo objects. 4702 // Array of DeoptInfo objects.
4690 RawArray* deopt_info_array() const { 4703 RawArray* deopt_info_array() const {
4691 #if defined(DART_PRECOMPILED_RUNTIME) 4704 #if defined(DART_PRECOMPILED_RUNTIME)
4692 UNREACHABLE(); 4705 UNREACHABLE();
4693 return NULL; 4706 return NULL;
4694 #else 4707 #else
(...skipping 4216 matching lines...) Expand 10 before | Expand all | Expand 10 after
8911 8924
8912 inline void TypeArguments::SetHash(intptr_t value) const { 8925 inline void TypeArguments::SetHash(intptr_t value) const {
8913 // This is only safe because we create a new Smi, which does not cause 8926 // This is only safe because we create a new Smi, which does not cause
8914 // heap allocation. 8927 // heap allocation.
8915 StoreSmi(&raw_ptr()->hash_, Smi::New(value)); 8928 StoreSmi(&raw_ptr()->hash_, Smi::New(value));
8916 } 8929 }
8917 8930
8918 } // namespace dart 8931 } // namespace dart
8919 8932
8920 #endif // RUNTIME_VM_OBJECT_H_ 8933 #endif // RUNTIME_VM_OBJECT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698