summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/llint/LowLevelInterpreter64.asm')
-rw-r--r--Source/JavaScriptCore/llint/LowLevelInterpreter64.asm47
1 files changed, 32 insertions, 15 deletions
diff --git a/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm b/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
index 5225bdda9..a153586f4 100644
--- a/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
+++ b/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
@@ -893,33 +893,50 @@ _llint_op_put_scoped_var:
dispatch(4)
-_llint_op_get_global_var:
+macro getGlobalVar(size)
traceExecution()
- loadis 16[PB, PC, 8], t1
+ loadp 16[PB, PC, 8], t0
loadis 8[PB, PC, 8], t3
- loadp CodeBlock[cfr], t0
- loadp CodeBlock::m_globalObject[t0], t0
- loadp JSGlobalObject::m_registers[t0], t0
- loadp [t0, t1, 8], t2
- storep t2, [cfr, t3, 8]
- loadp 24[PB, PC, 8], t3
- valueProfile(t2, t3)
- dispatch(4)
+ loadp [t0], t1
+ storep t1, [cfr, t3, 8]
+ loadp (size - 1) * 8[PB, PC, 8], t0
+ valueProfile(t1, t0)
+ dispatch(size)
+end
+
+_llint_op_get_global_var:
+ getGlobalVar(4)
+
+
+_llint_op_get_global_var_watchable:
+ getGlobalVar(5)
_llint_op_put_global_var:
traceExecution()
loadis 16[PB, PC, 8], t1
- loadp CodeBlock[cfr], t0
- loadp CodeBlock::m_globalObject[t0], t0
- loadp JSGlobalObject::m_registers[t0], t0
+ loadp 8[PB, PC, 8], t0
loadConstantOrVariable(t1, t2)
- loadis 8[PB, PC, 8], t1
writeBarrier(t2)
- storep t2, [t0, t1, 8]
+ storep t2, [t0]
dispatch(3)
+_llint_op_put_global_var_check:
+ traceExecution()
+ loadp 24[PB, PC, 8], t2
+ loadis 16[PB, PC, 8], t1
+ loadp 8[PB, PC, 8], t0
+ btbnz [t2], .opPutGlobalVarCheckSlow
+ loadConstantOrVariable(t1, t2)
+ writeBarrier(t2)
+ storep t2, [t0]
+ dispatch(5)
+.opPutGlobalVarCheckSlow:
+ callSlowPath(_llint_slow_path_put_global_var_check)
+ dispatch(5)
+
+
_llint_op_get_by_id:
traceExecution()
# We only do monomorphic get_by_id caching for now, and we do not modify the