diff options
Diffstat (limited to 'Source/JavaScriptCore/llint')
-rw-r--r-- | Source/JavaScriptCore/llint/LLIntSlowPaths.cpp | 2 | ||||
-rw-r--r-- | Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm | 6 | ||||
-rw-r--r-- | Source/JavaScriptCore/llint/LowLevelInterpreter64.asm | 6 |
3 files changed, 10 insertions, 4 deletions
diff --git a/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp b/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp index 066530c87..5cba5ea70 100644 --- a/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp +++ b/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp @@ -467,6 +467,8 @@ LLINT_SLOW_PATH_DECL(slow_path_convert_this) LLINT_BEGIN(); JSValue v1 = LLINT_OP(1).jsValue(); ASSERT(v1.isPrimitive()); + pc[OPCODE_LENGTH(op_convert_this) - 1].u.profile->m_buckets[0] = + JSValue::encode(v1.structureOrUndefined()); LLINT_RETURN(v1.toThisObject(exec)); } diff --git a/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm b/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm index e1b08eaa5..dd5ab674a 100644 --- a/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm +++ b/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm @@ -364,11 +364,13 @@ _llint_op_convert_this: loadi PayloadOffset[cfr, t0, 8], t0 loadp JSCell::m_structure[t0], t0 bbb Structure::m_typeInfo + TypeInfo::m_type[t0], ObjectType, .opConvertThisSlow - dispatch(2) + loadi 8[PC], t1 + valueProfile(CellTag, t0, t1) + dispatch(3) .opConvertThisSlow: callSlowPath(_llint_slow_path_convert_this) - dispatch(2) + dispatch(3) _llint_op_new_object: diff --git a/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm b/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm index a73085f76..5225bdda9 100644 --- a/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm +++ b/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm @@ -241,11 +241,13 @@ _llint_op_convert_this: btpnz t0, tagMask, .opConvertThisSlow loadp JSCell::m_structure[t0], t0 bbb Structure::m_typeInfo + TypeInfo::m_type[t0], ObjectType, .opConvertThisSlow - dispatch(2) + loadp 16[PB, PC, 8], t1 + valueProfile(t0, t1) + dispatch(3) .opConvertThisSlow: callSlowPath(_llint_slow_path_convert_this) - dispatch(2) + dispatch(3) _llint_op_new_object: |