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 9 namespace v8 { 10 namespace internal { 11 namespace interpreter { 12 13 // static Encode(bool use_fast_shallow_clone,int runtime_flags)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 Encode(bool fast_clone_supported,int properties_count,int runtime_flags)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 Encode(bool pretenure,bool is_function_scope)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