blob: 158af13ea73edd39372cfcecef332e29628112da [file] [log] [blame]
Ben Murdochf91f0612016-11-29 16:50:11 +00001// Copyright 2016 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "src/interpreter/bytecode-flags.h"
6
7#include "src/code-stubs.h"
8
9namespace v8 {
10namespace internal {
11namespace interpreter {
12
13// static
Ben Murdochf3b273f2017-01-17 12:11:28 +000014uint8_t CreateArrayLiteralFlags::Encode(bool use_fast_shallow_clone,
15 int runtime_flags) {
16 uint8_t result = FlagsBits::encode(runtime_flags);
17 result |= FastShallowCloneBit::encode(use_fast_shallow_clone);
18 return result;
19}
20
21// static
Ben Murdochf91f0612016-11-29 16:50:11 +000022uint8_t CreateObjectLiteralFlags::Encode(bool fast_clone_supported,
23 int properties_count,
24 int runtime_flags) {
25 uint8_t result = FlagsBits::encode(runtime_flags);
26 if (fast_clone_supported) {
27 STATIC_ASSERT(
28 FastCloneShallowObjectStub::kMaximumClonedProperties <=
29 1 << CreateObjectLiteralFlags::FastClonePropertiesCountBits::kShift);
30 DCHECK_LE(properties_count,
31 FastCloneShallowObjectStub::kMaximumClonedProperties);
32 result |= CreateObjectLiteralFlags::FastClonePropertiesCountBits::encode(
33 properties_count);
34 }
35 return result;
36}
37
38// static
39uint8_t CreateClosureFlags::Encode(bool pretenure, bool is_function_scope) {
40 uint8_t result = PretenuredBit::encode(pretenure);
41 if (!FLAG_always_opt && !FLAG_prepare_always_opt &&
42 pretenure == NOT_TENURED && is_function_scope) {
43 result |= FastNewClosureBit::encode(true);
44 }
45 return result;
46}
47
48} // namespace interpreter
49} // namespace internal
50} // namespace v8