blob: 9b25dbd230959d2f330f93651725eeca2df966d8 [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
14uint8_t CreateObjectLiteralFlags::Encode(bool fast_clone_supported,
15 int properties_count,
16 int runtime_flags) {
17 uint8_t result = FlagsBits::encode(runtime_flags);
18 if (fast_clone_supported) {
19 STATIC_ASSERT(
20 FastCloneShallowObjectStub::kMaximumClonedProperties <=
21 1 << CreateObjectLiteralFlags::FastClonePropertiesCountBits::kShift);
22 DCHECK_LE(properties_count,
23 FastCloneShallowObjectStub::kMaximumClonedProperties);
24 result |= CreateObjectLiteralFlags::FastClonePropertiesCountBits::encode(
25 properties_count);
26 }
27 return result;
28}
29
30// static
31uint8_t CreateClosureFlags::Encode(bool pretenure, bool is_function_scope) {
32 uint8_t result = PretenuredBit::encode(pretenure);
33 if (!FLAG_always_opt && !FLAG_prepare_always_opt &&
34 pretenure == NOT_TENURED && is_function_scope) {
35 result |= FastNewClosureBit::encode(true);
36 }
37 return result;
38}
39
40} // namespace interpreter
41} // namespace internal
42} // namespace v8