| Index: src/objects-inl.h
 | 
| diff --git a/src/objects-inl.h b/src/objects-inl.h
 | 
| index f468c55a56b437946b2785e6addd27a884362256..c09dfe4db879fb451b3aa09f97a92909e60bb0b1 100644
 | 
| --- a/src/objects-inl.h
 | 
| +++ b/src/objects-inl.h
 | 
| @@ -5974,6 +5974,7 @@ void Script::set_origin_options(ScriptOriginOptions origin_options) {
 | 
|  
 | 
|  
 | 
|  ACCESSORS(DebugInfo, shared, SharedFunctionInfo, kSharedFunctionInfoIndex)
 | 
| +SMI_ACCESSORS(DebugInfo, debugger_hints, kDebuggerHintsIndex)
 | 
|  ACCESSORS(DebugInfo, debug_bytecode_array, Object, kDebugBytecodeArrayIndex)
 | 
|  ACCESSORS(DebugInfo, break_points, FixedArray, kBreakPointsStateIndex)
 | 
|  
 | 
| @@ -6043,23 +6044,6 @@ BOOL_ACCESSORS(SharedFunctionInfo, start_position_and_type, is_named_expression,
 | 
|  BOOL_ACCESSORS(SharedFunctionInfo, start_position_and_type, is_toplevel,
 | 
|                 kIsTopLevelBit)
 | 
|  
 | 
| -BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, allows_lazy_compilation,
 | 
| -               kAllowLazyCompilation)
 | 
| -BOOL_ACCESSORS(SharedFunctionInfo,
 | 
| -               compiler_hints,
 | 
| -               uses_arguments,
 | 
| -               kUsesArguments)
 | 
| -BOOL_ACCESSORS(SharedFunctionInfo,
 | 
| -               compiler_hints,
 | 
| -               has_duplicate_parameters,
 | 
| -               kHasDuplicateParameters)
 | 
| -BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, asm_function, kIsAsmFunction)
 | 
| -BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, deserialized, kDeserialized)
 | 
| -BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_declaration,
 | 
| -               kIsDeclaration)
 | 
| -BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, marked_for_tier_up,
 | 
| -               kMarkedForTierUp)
 | 
| -
 | 
|  #if V8_HOST_ARCH_32_BIT
 | 
|  SMI_ACCESSORS(SharedFunctionInfo, length, kLengthOffset)
 | 
|  SMI_ACCESSORS(SharedFunctionInfo, internal_formal_parameter_count,
 | 
| @@ -6144,12 +6128,6 @@ PSEUDO_SMI_ACCESSORS_HI(SharedFunctionInfo,
 | 
|  
 | 
|  #endif
 | 
|  
 | 
| -
 | 
| -BOOL_GETTER(SharedFunctionInfo,
 | 
| -            compiler_hints,
 | 
| -            optimization_disabled,
 | 
| -            kOptimizationDisabled)
 | 
| -
 | 
|  AbstractCode* SharedFunctionInfo::abstract_code() {
 | 
|    if (HasBytecodeArray()) {
 | 
|      return AbstractCode::cast(bytecode_array());
 | 
| @@ -6158,20 +6136,43 @@ AbstractCode* SharedFunctionInfo::abstract_code() {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, allows_lazy_compilation,
 | 
| +               kAllowLazyCompilation)
 | 
| +BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, uses_arguments,
 | 
| +               kUsesArguments)
 | 
| +BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, has_duplicate_parameters,
 | 
| +               kHasDuplicateParameters)
 | 
| +BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, asm_function, kIsAsmFunction)
 | 
| +BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_declaration,
 | 
| +               kIsDeclaration)
 | 
| +BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, marked_for_tier_up,
 | 
| +               kMarkedForTierUp)
 | 
| +
 | 
| +BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, needs_home_object,
 | 
| +               kNeedsHomeObject)
 | 
| +BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, native, kNative)
 | 
| +BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, force_inline, kForceInline)
 | 
| +BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, must_use_ignition_turbo,
 | 
| +               kMustUseIgnitionTurbo)
 | 
| +BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, dont_flush, kDontFlush)
 | 
| +BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_asm_wasm_broken,
 | 
| +               kIsAsmWasmBroken)
 | 
| +
 | 
| +BOOL_GETTER(SharedFunctionInfo, compiler_hints, optimization_disabled,
 | 
| +            kOptimizationDisabled)
 | 
| +
 | 
|  void SharedFunctionInfo::set_optimization_disabled(bool disable) {
 | 
|    set_compiler_hints(BooleanBit::set(compiler_hints(),
 | 
|                                       kOptimizationDisabled,
 | 
|                                       disable));
 | 
|  }
 | 
|  
 | 
| -
 | 
|  LanguageMode SharedFunctionInfo::language_mode() {
 | 
|    STATIC_ASSERT(LANGUAGE_END == 2);
 | 
|    return construct_language_mode(
 | 
|        BooleanBit::get(compiler_hints(), kStrictModeFunction));
 | 
|  }
 | 
|  
 | 
| -
 | 
|  void SharedFunctionInfo::set_language_mode(LanguageMode language_mode) {
 | 
|    STATIC_ASSERT(LANGUAGE_END == 2);
 | 
|    // We only allow language mode transitions that set the same language mode
 | 
| @@ -6186,7 +6187,6 @@ FunctionKind SharedFunctionInfo::kind() const {
 | 
|    return FunctionKindBits::decode(compiler_hints());
 | 
|  }
 | 
|  
 | 
| -
 | 
|  void SharedFunctionInfo::set_kind(FunctionKind kind) {
 | 
|    DCHECK(IsValidFunctionKind(kind));
 | 
|    int hints = compiler_hints();
 | 
| @@ -6194,23 +6194,14 @@ void SharedFunctionInfo::set_kind(FunctionKind kind) {
 | 
|    set_compiler_hints(hints);
 | 
|  }
 | 
|  
 | 
| -BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, needs_home_object,
 | 
| -               kNeedsHomeObject)
 | 
| -BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, native, kNative)
 | 
| -BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, force_inline, kForceInline)
 | 
| -BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints,
 | 
| -               name_should_print_as_anonymous,
 | 
| -               kNameShouldPrintAsAnonymous)
 | 
| -BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_anonymous_expression,
 | 
| +BOOL_ACCESSORS(SharedFunctionInfo, debugger_hints,
 | 
| +               name_should_print_as_anonymous, kNameShouldPrintAsAnonymous)
 | 
| +BOOL_ACCESSORS(SharedFunctionInfo, debugger_hints, is_anonymous_expression,
 | 
|                 kIsAnonymousExpression)
 | 
| -BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, must_use_ignition_turbo,
 | 
| -               kMustUseIgnitionTurbo)
 | 
| -BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, dont_flush, kDontFlush)
 | 
| -BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_asm_wasm_broken,
 | 
| -               kIsAsmWasmBroken)
 | 
| -BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, has_no_side_effect,
 | 
| +BOOL_ACCESSORS(SharedFunctionInfo, debugger_hints, deserialized, kDeserialized)
 | 
| +BOOL_ACCESSORS(SharedFunctionInfo, debugger_hints, has_no_side_effect,
 | 
|                 kHasNoSideEffect)
 | 
| -BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, computed_has_no_side_effect,
 | 
| +BOOL_ACCESSORS(SharedFunctionInfo, debugger_hints, computed_has_no_side_effect,
 | 
|                 kComputedHasNoSideEffect)
 | 
|  
 | 
|  bool Script::HasValidSource() {
 | 
| @@ -6315,25 +6306,35 @@ bool SharedFunctionInfo::has_simple_parameters() {
 | 
|    return scope_info()->HasSimpleParameters();
 | 
|  }
 | 
|  
 | 
| -
 | 
| -bool SharedFunctionInfo::HasDebugInfo() {
 | 
| -  bool has_debug_info = debug_info()->IsStruct();
 | 
| +bool SharedFunctionInfo::HasDebugInfo() const {
 | 
| +  bool has_debug_info = !debug_info()->IsSmi();
 | 
| +  DCHECK_EQ(debug_info()->IsStruct(), has_debug_info);
 | 
|    DCHECK(!has_debug_info || HasDebugCode());
 | 
|    return has_debug_info;
 | 
|  }
 | 
|  
 | 
| -
 | 
| -DebugInfo* SharedFunctionInfo::GetDebugInfo() {
 | 
| +DebugInfo* SharedFunctionInfo::GetDebugInfo() const {
 | 
|    DCHECK(HasDebugInfo());
 | 
|    return DebugInfo::cast(debug_info());
 | 
|  }
 | 
|  
 | 
| -
 | 
| -bool SharedFunctionInfo::HasDebugCode() {
 | 
| +bool SharedFunctionInfo::HasDebugCode() const {
 | 
|    if (HasBaselineCode()) return code()->has_debug_break_slots();
 | 
|    return HasBytecodeArray();
 | 
|  }
 | 
|  
 | 
| +int SharedFunctionInfo::debugger_hints() const {
 | 
| +  if (HasDebugInfo()) return GetDebugInfo()->debugger_hints();
 | 
| +  return Smi::cast(debug_info())->value();
 | 
| +}
 | 
| +
 | 
| +void SharedFunctionInfo::set_debugger_hints(int value) {
 | 
| +  if (HasDebugInfo()) {
 | 
| +    GetDebugInfo()->set_debugger_hints(value);
 | 
| +  } else {
 | 
| +    set_debug_info(Smi::FromInt(value));
 | 
| +  }
 | 
| +}
 | 
|  
 | 
|  bool SharedFunctionInfo::IsApiFunction() {
 | 
|    return function_data()->IsFunctionTemplateInfo();
 | 
| @@ -6350,11 +6351,11 @@ void SharedFunctionInfo::set_api_func_data(FunctionTemplateInfo* data) {
 | 
|    set_function_data(data);
 | 
|  }
 | 
|  
 | 
| -bool SharedFunctionInfo::HasBytecodeArray() {
 | 
| +bool SharedFunctionInfo::HasBytecodeArray() const {
 | 
|    return function_data()->IsBytecodeArray();
 | 
|  }
 | 
|  
 | 
| -BytecodeArray* SharedFunctionInfo::bytecode_array() {
 | 
| +BytecodeArray* SharedFunctionInfo::bytecode_array() const {
 | 
|    DCHECK(HasBytecodeArray());
 | 
|    return BytecodeArray::cast(function_data());
 | 
|  }
 | 
| @@ -6369,11 +6370,11 @@ void SharedFunctionInfo::ClearBytecodeArray() {
 | 
|    set_function_data(GetHeap()->undefined_value());
 | 
|  }
 | 
|  
 | 
| -bool SharedFunctionInfo::HasAsmWasmData() {
 | 
| +bool SharedFunctionInfo::HasAsmWasmData() const {
 | 
|    return function_data()->IsFixedArray();
 | 
|  }
 | 
|  
 | 
| -FixedArray* SharedFunctionInfo::asm_wasm_data() {
 | 
| +FixedArray* SharedFunctionInfo::asm_wasm_data() const {
 | 
|    DCHECK(HasAsmWasmData());
 | 
|    return FixedArray::cast(function_data());
 | 
|  }
 | 
| 
 |