summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-11-09 12:15:52 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2012-11-09 12:16:06 +0100
commitde4f791e30be4e4239b381c11745ffa4d87ddb8b (patch)
tree885e3a5d6670828b454cf676b4d42f78e28b1f0e /Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
parentb022df48697d40cdabdeafb2c29bb14fe489b6fe (diff)
downloadqtwebkit-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.asm79
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