diff options
Diffstat (limited to 'Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm')
-rw-r--r-- | Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm | 27 |
1 files changed, 9 insertions, 18 deletions
diff --git a/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm b/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm index 42ab4c1e4..e1361315f 100644 --- a/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm +++ b/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm @@ -343,31 +343,17 @@ _llint_op_create_arguments: _llint_op_create_this: traceExecution() - loadi 8[PC], t0 - assertNotConstant(t0) - bineq TagOffset[cfr, t0, 8], CellTag, .opCreateThisSlow - loadi PayloadOffset[cfr, t0, 8], t0 - loadp JSCell::m_structure[t0], t1 - bbb Structure::m_typeInfo + TypeInfo::m_type[t1], ObjectType, .opCreateThisSlow - loadp JSObject::m_inheritorID[t0], t2 + loadp Callee[cfr], t0 + loadp JSFunction::m_cachedInheritorID[t0], t2 btpz t2, .opCreateThisSlow allocateBasicJSObject(JSFinalObjectSizeClassIndex, JSGlobalData::jsFinalObjectClassInfo, t2, t0, t1, t3, .opCreateThisSlow) loadi 4[PC], t1 storei CellTag, TagOffset[cfr, t1, 8] storei t0, PayloadOffset[cfr, t1, 8] - dispatch(3) + dispatch(2) .opCreateThisSlow: callSlowPath(_llint_slow_path_create_this) - dispatch(3) - - -_llint_op_get_callee: - traceExecution() - loadi 4[PC], t0 - loadp PayloadOffset + Callee[cfr], t1 - storei CellTag, TagOffset[cfr, t0, 8] - storei t1, PayloadOffset[cfr, t0, 8] dispatch(2) @@ -1446,8 +1432,9 @@ _llint_op_switch_char: bineq t1, CellTag, .opSwitchCharFallThrough loadp JSCell::m_structure[t0], t1 bbneq Structure::m_typeInfo + TypeInfo::m_type[t1], StringType, .opSwitchCharFallThrough + bineq JSString::m_length[t0], 1, .opSwitchCharFallThrough loadp JSString::m_value[t0], t0 - bineq StringImpl::m_length[t0], 1, .opSwitchCharFallThrough + btpz t0, .opSwitchOnRope loadp StringImpl::m_data8[t0], t1 btinz StringImpl::m_hashAndFlags[t0], HashFlags8BitBuffer, .opSwitchChar8Bit loadh [t1], t0 @@ -1465,6 +1452,10 @@ _llint_op_switch_char: .opSwitchCharFallThrough: dispatchBranch(8[PC]) +.opSwitchOnRope: + callSlowPath(_llint_slow_path_switch_char) + dispatch(0) + _llint_op_new_func: traceExecution() |