Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
token_position.cc
Go to the documentation of this file.
1// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
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.
4
5#include "vm/token_position.h"
6
7#include "vm/object.h"
9
10namespace dart {
11
13 return Utils::WordHash(value_);
14}
15
19
20int32_t TokenPosition::Serialize() const {
21 return static_cast<int32_t>(value_);
22}
23
24intptr_t TokenPosition::EncodeCoveragePosition(bool is_branch_coverage) {
25 // Normal coverage positions are encoded as 2 * pos, and branch coverage are
26 // encoded as 2 * pos + 1.
27 intptr_t encoded_position = 2 * static_cast<intptr_t>(value_);
28 return is_branch_coverage ? encoded_position + 1 : encoded_position;
29}
30
32 bool* is_branch_coverage) {
33 *is_branch_coverage = ((encoded_position % 2) == 1);
34 return TokenPosition(encoded_position / 2);
35}
36
37#define DEFINE_VALUES(name, value) \
38 const TokenPosition TokenPosition::k##name(value);
40#undef DEFINE_VALUES
41const TokenPosition TokenPosition::kMinSource(kMinSourcePos);
42const TokenPosition TokenPosition::kMaxSource(kMaxSourcePos);
43
44const char* TokenPosition::ToCString() const {
45 switch (value_) {
46#define DEFINE_CASE(name, value) \
47 case value: \
48 return #name;
50#undef DEFINE_CASE
51 default:
52 break;
53 }
56 if (IsSynthetic()) {
57 buffer.AddString("syn:");
58 }
59 buffer.Printf("%" Pd32 "", value_);
60 return buffer.buffer();
61}
62
63} // namespace dart
static Thread * Current()
Definition thread.h:361
static TokenPosition DecodeCoveragePosition(intptr_t encoded_position, bool *is_branch_coverage)
intptr_t EncodeCoveragePosition(bool is_branch_coverage)
bool IsSynthetic() const
const char * ToCString() const
int32_t Serialize() const
static TokenPosition Deserialize(int32_t value)
static const TokenPosition kMaxSource
static const TokenPosition kMinSource
static uint32_t WordHash(intptr_t key)
Definition utils.cc:217
#define ASSERT(E)
static const uint8_t buffer[]
uint8_t value
uintptr_t uword
Definition globals.h:501
#define Pd32
Definition globals.h:412
#define DEFINE_VALUES(name, value)
#define DEFINE_CASE(name, value)
#define SENTINEL_TOKEN_DESCRIPTORS(V)