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

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

Issue 2419013004: Add local variable declaration token position to service protocol (Closed)
Patch Set: test closure variables Created 4 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
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 VM_RAW_OBJECT_H_ 5 #ifndef VM_RAW_OBJECT_H_
6 #define VM_RAW_OBJECT_H_ 6 #define VM_RAW_OBJECT_H_
7 7
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "vm/atomic.h" 9 #include "vm/atomic.h"
10 #include "vm/globals.h" 10 #include "vm/globals.h"
(...skipping 1335 matching lines...) Expand 10 before | Expand all | Expand 10 after
1346 kIndexBias = 1 << (kIndexSize - 1), 1346 kIndexBias = 1 << (kIndexSize - 1),
1347 kMaxIndex = (1 << (kIndexSize - 1)) - 1, 1347 kMaxIndex = (1 << (kIndexSize - 1)) - 1,
1348 }; 1348 };
1349 1349
1350 class IndexBits : public BitField<int32_t, int32_t, kIndexPos, kIndexSize> {}; 1350 class IndexBits : public BitField<int32_t, int32_t, kIndexPos, kIndexSize> {};
1351 class KindBits : public BitField<int32_t, int8_t, kKindPos, kKindSize>{}; 1351 class KindBits : public BitField<int32_t, int8_t, kKindPos, kKindSize>{};
1352 1352
1353 struct VarInfo { 1353 struct VarInfo {
1354 int32_t index_kind; // Bitfield for slot index on stack or in context, 1354 int32_t index_kind; // Bitfield for slot index on stack or in context,
1355 // and Entry kind of type VarInfoKind. 1355 // and Entry kind of type VarInfoKind.
1356 TokenPosition declaration_pos; // Token position of declaration.
1356 TokenPosition begin_pos; // Token position of scope start. 1357 TokenPosition begin_pos; // Token position of scope start.
1357 TokenPosition end_pos; // Token position of scope end. 1358 TokenPosition end_pos; // Token position of scope end.
1358 int16_t scope_id; // Scope to which the variable belongs. 1359 int16_t scope_id; // Scope to which the variable belongs.
1359 1360
1360 VarInfoKind kind() const { 1361 VarInfoKind kind() const {
1361 return static_cast<VarInfoKind>(KindBits::decode(index_kind)); 1362 return static_cast<VarInfoKind>(KindBits::decode(index_kind));
1362 } 1363 }
1363 void set_kind(VarInfoKind kind) { 1364 void set_kind(VarInfoKind kind) {
1364 index_kind = KindBits::update(kind, index_kind); 1365 index_kind = KindBits::update(kind, index_kind);
1365 } 1366 }
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
1448 friend class SnapshotReader; 1449 friend class SnapshotReader;
1449 }; 1450 };
1450 1451
1451 1452
1452 class RawContextScope : public RawObject { 1453 class RawContextScope : public RawObject {
1453 RAW_HEAP_OBJECT_IMPLEMENTATION(ContextScope); 1454 RAW_HEAP_OBJECT_IMPLEMENTATION(ContextScope);
1454 1455
1455 // TODO(iposva): Switch to conventional enum offset based structure to avoid 1456 // TODO(iposva): Switch to conventional enum offset based structure to avoid
1456 // alignment mishaps. 1457 // alignment mishaps.
1457 struct VariableDesc { 1458 struct VariableDesc {
1459 RawSmi* declaration_token_pos;
1458 RawSmi* token_pos; 1460 RawSmi* token_pos;
1459 RawString* name; 1461 RawString* name;
1460 RawBool* is_final; 1462 RawBool* is_final;
1461 RawBool* is_const; 1463 RawBool* is_const;
1462 union { 1464 union {
1463 RawAbstractType* type; 1465 RawAbstractType* type;
1464 RawInstance* value; // iff is_const is true 1466 RawInstance* value; // iff is_const is true
1465 }; 1467 };
1466 RawSmi* context_index; 1468 RawSmi* context_index;
1467 RawSmi* context_level; 1469 RawSmi* context_level;
(...skipping 1015 matching lines...) Expand 10 before | Expand all | Expand 10 after
2483 COMPILE_ASSERT(kExternalTypedDataInt8ArrayCid == 2485 COMPILE_ASSERT(kExternalTypedDataInt8ArrayCid ==
2484 kTypedDataInt8ArrayViewCid + 15); 2486 kTypedDataInt8ArrayViewCid + 15);
2485 COMPILE_ASSERT(kByteBufferCid == kExternalTypedDataInt8ArrayCid + 14); 2487 COMPILE_ASSERT(kByteBufferCid == kExternalTypedDataInt8ArrayCid + 14);
2486 COMPILE_ASSERT(kNullCid == kByteBufferCid + 1); 2488 COMPILE_ASSERT(kNullCid == kByteBufferCid + 1);
2487 return (kNullCid - kTypedDataInt8ArrayCid); 2489 return (kNullCid - kTypedDataInt8ArrayCid);
2488 } 2490 }
2489 2491
2490 } // namespace dart 2492 } // namespace dart
2491 2493
2492 #endif // VM_RAW_OBJECT_H_ 2494 #endif // VM_RAW_OBJECT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698