diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-09 12:15:52 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-09 12:16:06 +0100 |
commit | de4f791e30be4e4239b381c11745ffa4d87ddb8b (patch) | |
tree | 885e3a5d6670828b454cf676b4d42f78e28b1f0e /Source/JavaScriptCore/llint/LowLevelInterpreter64.asm | |
parent | b022df48697d40cdabdeafb2c29bb14fe489b6fe (diff) | |
download | qtwebkit-de4f791e30be4e4239b381c11745ffa4d87ddb8b.tar.gz |
Imported WebKit commit e2c32e2f53e02d388e70b9db88b91d8d9d28fc84 (http://svn.webkit.org/repository/webkit/trunk@133952)
Revert back to an older snapshot that should build on ARM
Diffstat (limited to 'Source/JavaScriptCore/llint/LowLevelInterpreter64.asm')
-rw-r--r-- | Source/JavaScriptCore/llint/LowLevelInterpreter64.asm | 79 |
1 files changed, 18 insertions, 61 deletions
diff --git a/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm b/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm index d8a293337..c9900b343 100644 --- a/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm +++ b/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm @@ -1025,9 +1025,7 @@ _llint_op_get_by_val: sxi2q t1, t1 loadp JSObject::m_butterfly[t0], t3 andi IndexingShapeMask, t2 - bieq t2, Int32Shape, .opGetByValIsContiguous bineq t2, ContiguousShape, .opGetByValNotContiguous -.opGetByValIsContiguous: biaeq t1, -sizeof IndexingHeader + IndexingHeader::m_publicLength[t3], .opGetByValSlow loadisFromInstruction(1, t0) @@ -1036,16 +1034,6 @@ _llint_op_get_by_val: jmp .opGetByValDone .opGetByValNotContiguous: - bineq t2, DoubleShape, .opGetByValNotDouble - biaeq t1, -sizeof IndexingHeader + IndexingHeader::m_publicLength[t3], .opGetByValSlow - loadis 8[PB, PC, 8], t0 - loadd [t3, t1, 8], ft0 - bdnequn ft0, ft0, .opGetByValSlow - fd2q ft0, t2 - subq tagTypeNumber, t2 - jmp .opGetByValDone - -.opGetByValNotDouble: subi ArrayStorageShape, t2 bia t2, SlowPutArrayStorageShape - ArrayStorageShape, .opGetByValSlow biaeq t1, -sizeof IndexingHeader + IndexingHeader::m_vectorLength[t3], .opGetByValSlow @@ -1121,24 +1109,6 @@ _llint_op_get_by_pname: dispatch(7) -macro contiguousPutByVal(storeCallback) - biaeq t3, -sizeof IndexingHeader + IndexingHeader::m_publicLength[t0], .outOfBounds -.storeResult: - loadisFromInstruction(3, t2) - storeCallback(t2, t1, [t0, t3, 8]) - dispatch(5) - -.outOfBounds: - biaeq t3, -sizeof IndexingHeader + IndexingHeader::m_vectorLength[t0], .opPutByValSlow - if VALUE_PROFILER - loadp 32[PB, PC, 8], t2 - storeb 1, ArrayProfile::m_mayStoreToHole[t2] - end - addi 1, t3, t2 - storei t2, -sizeof IndexingHeader + IndexingHeader::m_publicLength[t0] - jmp .storeResult -end - _llint_op_put_by_val: traceExecution() loadisFromInstruction(1, t0) @@ -1151,38 +1121,25 @@ _llint_op_put_by_val: sxi2q t3, t3 loadp JSObject::m_butterfly[t1], t0 andi IndexingShapeMask, t2 - bineq t2, Int32Shape, .opPutByValNotInt32 - contiguousPutByVal( - macro (operand, scratch, address) - loadConstantOrVariable(operand, scratch) - bpb scratch, tagTypeNumber, .opPutByValSlow - storep scratch, address - end) - -.opPutByValNotInt32: - bineq t2, DoubleShape, .opPutByValNotDouble - contiguousPutByVal( - macro (operand, scratch, address) - loadConstantOrVariable(operand, scratch) - bqb scratch, tagTypeNumber, .notInt - ci2d scratch, ft0 - jmp .ready - .notInt: - addp tagTypeNumber, scratch - fq2d scratch, ft0 - bdnequn ft0, ft0, .opPutByValSlow - .ready: - stored ft0, address - end) - -.opPutByValNotDouble: bineq t2, ContiguousShape, .opPutByValNotContiguous - contiguousPutByVal( - macro (operand, scratch, address) - loadConstantOrVariable(operand, scratch) - writeBarrier(scratch) - storep scratch, address - end) + + biaeq t3, -sizeof IndexingHeader + IndexingHeader::m_publicLength[t0], .opPutByValContiguousOutOfBounds +.opPutByValContiguousStoreResult: + loadisFromInstruction(3, t2) + loadConstantOrVariable(t2, t1) + writeBarrier(t1) + storeq t1, [t0, t3, 8] + dispatch(5) + +.opPutByValContiguousOutOfBounds: + biaeq t3, -sizeof IndexingHeader + IndexingHeader::m_vectorLength[t0], .opPutByValSlow + if VALUE_PROFILER + loadpFromInstruction(4, t2) + storeb 1, ArrayProfile::m_mayStoreToHole[t2] + end + addi 1, t3, t2 + storei t2, -sizeof IndexingHeader + IndexingHeader::m_publicLength[t0] + jmp .opPutByValContiguousStoreResult .opPutByValNotContiguous: bineq t2, ArrayStorageShape, .opPutByValSlow |