1// 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 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 22uint8_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 51