v8/src/compiler
Martyn Capewell 0d5b0d7365 [arm64] Enforce restriction on stlxr instructions
The stlxr (store-release exclusive register) instructions in Arm64 have similar
restrictions to Arm's strex instructions - the status register must not alias
the source or address registers.

Enforce this in the assembler and simulator, and modify Turbofan and cctest to
conform to this. Also, make a small improvement to the code generated for
compare and exchange.

This is a port of 44c52f7bb5.

Bug: 
Change-Id: Ia3a8c39b09c5cb579357a5f61c3d88f13d61b724
Reviewed-on: https://chromium-review.googlesource.com/793037
Reviewed-by: Ben Smith <binji@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Martyn Capewell <martyn.capewell@arm.com>
Cr-Commit-Position: refs/heads/master@{#49714}
2017-11-29 13:19:28 +00:00
..
arm [wasm] JIT using WasmCodeManager: codegen components. 2017-11-21 17:56:00 +00:00
arm64 [arm64] Enforce restriction on stlxr instructions 2017-11-29 13:19:28 +00:00
ia32 [ia32][wasm] Add I8x16 BinOp and CompareOp. 2017-11-28 05:44:09 +00:00
mips [wasm] JIT using WasmCodeManager: codegen components. 2017-11-21 17:56:00 +00:00
mips64 [wasm] JIT using WasmCodeManager: codegen components. 2017-11-21 17:56:00 +00:00
ppc PPC/s390: [wasm] JIT using WasmCodeManager: codegen components. 2017-11-22 20:22:00 +00:00
s390 PPC/s390: [wasm] JIT using WasmCodeManager: codegen components. 2017-11-22 20:22:00 +00:00
x64 [x64] Remove impossible TODO. 2017-11-22 21:42:20 +00:00
access-builder.cc [runtime] Extend InstanceType to uint16_t range of values. 2017-11-22 19:14:09 +00:00
access-builder.h [turbofan] Make ConvertReceiver a simplified operator. 2017-10-27 04:35:48 +00:00
access-info.cc [runtime] Change FieldIndex encoding so it supports unaligned offsets and can load single words 2017-11-14 15:02:46 +00:00
access-info.h [iwyu] Make "access-info.h" header stand-alone. 2017-09-14 09:56:09 +00:00
all-nodes.cc
all-nodes.h [TurboFan] Verify the graph against floating effectful control 2017-11-20 12:51:13 +00:00
allocation-builder.h [turbofan] Use AllocationBuilder helper class everywhere. 2017-10-12 13:54:12 +00:00
basic-block-instrumentor.cc [Compiler] Remove isolate from CompilationInfo. 2017-11-15 15:40:55 +00:00
basic-block-instrumentor.h [Compiler] Remove isolate from CompilationInfo. 2017-11-15 15:40:55 +00:00
branch-elimination.cc Reland^6 "[turbofan] eagerly prune None types and deadness from the graph" 2017-11-16 20:01:22 +00:00
branch-elimination.h [TurboFan] In branch-elimination create ControlPathConditions only if needed 2017-07-12 17:02:29 +00:00
bytecode-analysis.cc [compiler] Add missing "break" in switch statement 2017-09-05 17:52:49 +00:00
bytecode-analysis.h [turbofan] Never generate loop exit phis for the accumulator 2017-08-17 05:09:31 +00:00
bytecode-graph-builder.cc No longer desugar the exponentiation (**) operator. 2017-11-29 06:52:27 +00:00
bytecode-graph-builder.h [bigint,compiler] Support bigints in increment (++) and decrement (--). 2017-11-28 09:45:49 +00:00
bytecode-liveness-map.cc
bytecode-liveness-map.h
c-linkage.cc [ic] Ensure that we make progress on KeyedLoadIC polymorphic name. 2017-10-20 12:16:10 +00:00
checkpoint-elimination.cc
checkpoint-elimination.h [Turbofan] Enable reducers to report their name to make reducer tracing clearer 2017-07-11 10:40:23 +00:00
code-assembler.cc [turbofan] Remove obsolete {SupportsTailCalls} flag. 2017-11-29 11:52:06 +00:00
code-assembler.h [typedarray] Widen set fast path for JSTypedArray source arguments 2017-11-27 17:32:15 +00:00
code-generator-impl.h [turbofan] Remove ToFloat64AsInt and make ToFloat64 return a Double 2017-07-14 15:01:02 +00:00
code-generator.cc Revert "Revert "[wasm] JIT using WasmCodeManager"" 2017-11-28 22:27:13 +00:00
code-generator.h Revert "Revert "[wasm] JIT using WasmCodeManager"" 2017-11-28 22:27:13 +00:00
common-node-cache.cc
common-node-cache.h
common-operator-reducer.cc [compiler] Pass deoptimization_kind through DeoptimizeParameters and FlagsContinuation 2017-02-10 09:15:07 +00:00
common-operator-reducer.h [Turbofan] Enable reducers to report their name to make reducer tracing clearer 2017-07-11 10:40:23 +00:00
common-operator.cc Reland^6 "[turbofan] eagerly prune None types and deadness from the graph" 2017-11-16 20:01:22 +00:00
common-operator.h Reland^6 "[turbofan] eagerly prune None types and deadness from the graph" 2017-11-16 20:01:22 +00:00
compiler-source-position-table.cc
compiler-source-position-table.h
control-equivalence.cc add gn jumbo build support 2017-08-09 09:05:29 +00:00
control-equivalence.h [TurboFan] Reduce memory usage of ControlEquivalence. 2017-03-27 14:14:14 +00:00
control-flow-optimizer.cc
control-flow-optimizer.h
dead-code-elimination.cc [turbofan] fix dead code elimination: propagate DeadValue along FrameState inputs 2017-11-28 09:09:09 +00:00
dead-code-elimination.h Reland^6 "[turbofan] eagerly prune None types and deadness from the graph" 2017-11-16 20:01:22 +00:00
diamond.h
effect-control-linearizer.cc Reland^6 "[turbofan] eagerly prune None types and deadness from the graph" 2017-11-16 20:01:22 +00:00
effect-control-linearizer.h [compiler] Avoid code duplication in LowerTruncateTagged*ToBit. 2017-11-16 11:14:48 +00:00
escape-analysis-reducer.cc Revert "[TurboFan] Diagnostic code to track down bug in representation selection" 2017-11-14 09:26:51 +00:00
escape-analysis-reducer.h [turbofan] delete old implementation of escape analysis 2017-08-30 06:03:29 +00:00
escape-analysis.cc [turbofan] Escape analysis no longer introduces Dead nodes in unreachable code. 2017-11-15 11:16:01 +00:00
escape-analysis.h [turbofan] Escape analysis no longer introduces Dead nodes in unreachable code. 2017-11-15 11:16:01 +00:00
frame-elider.cc [iwyu] Remove include debug.h -> arguments.h 2017-02-09 09:19:23 +00:00
frame-elider.h
frame-states.cc Drop custom accessor deoptimization support 2017-11-06 20:20:58 +00:00
frame-states.h Drop custom accessor deoptimization support 2017-11-06 20:20:58 +00:00
frame.cc
frame.h [cleanup] [compiler] Fix (D)CHECK macros 2017-09-25 10:21:34 +00:00
gap-resolver.cc Remove compiler distinction from RegisterConfiguration. 2017-08-03 07:47:36 +00:00
gap-resolver.h
graph-assembler.cc Reland "[Turbofan] Introduce AllocateRaw node" 2017-11-10 14:47:18 +00:00
graph-assembler.h [turbofan] add Terminate nodes to all loops 2017-11-15 16:05:15 +00:00
graph-reducer.cc [cleanup] [compiler] Fix (D)CHECK macros 2017-09-25 10:21:34 +00:00
graph-reducer.h [Turbofan] Enable reducers to report their name to make reducer tracing clearer 2017-07-11 10:40:23 +00:00
graph-trimmer.cc
graph-trimmer.h
graph-visualizer.cc [compiler] Remove script() from CompilationInfo 2017-09-29 09:33:59 +00:00
graph-visualizer.h [turbofan] Introduce --trace-turbo-scheduled for printing scheduled graphs. 2017-09-05 04:58:39 +00:00
graph.cc
graph.h [compiler] [cleanup] Replace 12 instantiations by one template 2017-06-12 08:28:02 +00:00
instruction-codes.h [wasm] JIT using WasmCodeManager: codegen components. 2017-11-21 17:56:00 +00:00
instruction-scheduler.cc [wasm] JIT using WasmCodeManager: codegen components. 2017-11-21 17:56:00 +00:00
instruction-scheduler.h [cleanup] [compiler] Fix (D)CHECK macros 2017-09-25 10:21:34 +00:00
instruction-selector-impl.h [cleanup] Remove return after UNREACHABLE 2017-05-22 13:10:01 +00:00
instruction-selector.cc [turbofan] Remove obsolete {SupportsTailCalls} flag. 2017-11-29 11:52:06 +00:00
instruction-selector.h [turbofan] Remove obsolete {SupportsTailCalls} flag. 2017-11-29 11:52:06 +00:00
instruction.cc [cleanup] [compiler] Fix (D)CHECK macros 2017-09-25 10:21:34 +00:00
instruction.h [wasm] JIT using WasmCodeManager: codegen components. 2017-11-21 17:56:00 +00:00
int64-lowering.cc [wasm] Int64 lowering for return values 2017-10-27 11:34:14 +00:00
int64-lowering.h [wasm] Fix interpreter entry for i64 return type 2017-03-07 18:03:08 +00:00
js-builtin-reducer.cc [turbofan] Optimize String#slice(-1) calls. 2017-11-29 10:55:26 +00:00
js-builtin-reducer.h [turbofan] Optimize String#slice(-1) calls. 2017-11-29 10:55:26 +00:00
js-call-reducer.cc [turbofan] Unify CanBePrimitive and NeedsConvertReceiver. 2017-11-29 06:50:57 +00:00
js-call-reducer.h Remove distinction between lazy and non-lazy CallApiCallback, always explicitly set up target context 2017-10-30 09:37:37 +00:00
js-context-specialization.cc [iwyu] Remove illegal inline include from "macro-assembler.h" 2017-09-13 11:44:07 +00:00
js-context-specialization.h [Turbofan] Enable reducers to report their name to make reducer tracing clearer 2017-07-11 10:40:23 +00:00
js-create-lowering.cc [turbofan] Properly restrict {JSCreate} to constructors. 2017-10-18 12:02:44 +00:00
js-create-lowering.h [turbofan] Inline Function#bind in more cases. 2017-10-17 12:56:32 +00:00
js-generic-lowering.cc No longer desugar the exponentiation (**) operator. 2017-11-29 06:52:27 +00:00
js-generic-lowering.h [Turbofan] Model JSToBoolean as a simplified operator 2017-10-19 08:57:11 +00:00
js-graph.cc Reland^6 "[turbofan] eagerly prune None types and deadness from the graph" 2017-11-16 20:01:22 +00:00
js-graph.h Reland^6 "[turbofan] eagerly prune None types and deadness from the graph" 2017-11-16 20:01:22 +00:00
js-inlining-heuristic.cc Revert "[TurboFan] Diagnostic code to track down bug in representation selection" 2017-11-14 09:26:51 +00:00
js-inlining-heuristic.h [TurboFan] Remove SetForceInline 2017-09-18 13:36:16 +00:00
js-inlining.cc [turbofan] Unify CanBePrimitive and NeedsConvertReceiver. 2017-11-29 06:50:57 +00:00
js-inlining.h [es2015] Introduce dedicated GetTemplateObject bytecode. 2017-09-22 19:52:30 +00:00
js-intrinsic-lowering.cc [TurboFan] Intrinsic IsInstanceType lowering needs control 2017-11-10 15:25:58 +00:00
js-intrinsic-lowering.h Remove SubString intrinsic and convert SubString code stub to CSA. 2017-10-18 05:52:47 +00:00
js-native-context-specialization.cc [cleanup] Rename "array protector" to "no elements protector". 2017-11-20 09:43:35 +00:00
js-native-context-specialization.h [turbofan] Generalized OOB support for KeyedLoadIC. 2017-11-03 07:35:14 +00:00
js-operator.cc No longer desugar the exponentiation (**) operator. 2017-11-29 06:52:27 +00:00
js-operator.h No longer desugar the exponentiation (**) operator. 2017-11-29 06:52:27 +00:00
js-type-hint-lowering.cc No longer desugar the exponentiation (**) operator. 2017-11-29 06:52:27 +00:00
js-type-hint-lowering.h [bigint,compiler] Support bigints in negation (-) operator. 2017-11-21 13:41:34 +00:00
js-typed-lowering.cc [turbofan] Remove obsolete {SupportsTailCalls} flag. 2017-11-29 11:52:06 +00:00
js-typed-lowering.h [bigint,compiler] Support bigints in increment (++) and decrement (--). 2017-11-28 09:45:49 +00:00
jump-threading.cc Convert CHECK under #if(def) DEBUG to DCHECK. 2017-09-14 15:08:27 +00:00
jump-threading.h
linkage.cc [turbofan] Remove obsolete {SupportsTailCalls} flag. 2017-11-29 11:52:06 +00:00
linkage.h [turbofan] Remove obsolete {SupportsTailCalls} flag. 2017-11-29 11:52:06 +00:00
live-range-separator.cc add gn jumbo build support 2017-08-09 09:05:29 +00:00
live-range-separator.h
load-elimination.cc Revert "[turbofan] Prune control flow based on failed map checks and comparisons." 2017-10-25 11:03:35 +00:00
load-elimination.h Revert "[turbofan] Prune control flow based on failed map checks and comparisons." 2017-10-25 11:03:35 +00:00
loop-analysis.cc [TurboFan] Verify that return statements are 'outside' loops 2017-11-21 11:37:53 +00:00
loop-analysis.h [cleanup] Remove return after UNREACHABLE 2017-05-22 13:10:01 +00:00
loop-peeling.cc
loop-peeling.h
loop-variable-optimizer.cc [bigint,compiler] Fully implement ToNumeric bytecode. 2017-11-21 11:56:34 +00:00
loop-variable-optimizer.h
machine-graph-verifier.cc [csa] Fix typo in machine graph verifier. 2017-09-21 08:45:09 +00:00
machine-graph-verifier.h
machine-operator-reducer.cc Reland "[bits] Consolidate Count{Leading,Trailing}Zeros" 2017-11-06 11:55:44 +00:00
machine-operator-reducer.h [Turbofan] Enable reducers to report their name to make reducer tracing clearer 2017-07-11 10:40:23 +00:00
machine-operator.cc [wasm] Reduce size of the trap handler ool code 2017-09-26 13:00:34 +00:00
machine-operator.h [csa] Do not generate '& 0x1f' for shifts if possible 2017-11-15 09:16:55 +00:00
memory-optimizer.cc Reland^6 "[turbofan] eagerly prune None types and deadness from the graph" 2017-11-16 20:01:22 +00:00
memory-optimizer.h Reland "[Turbofan] Introduce AllocateRaw node" 2017-11-10 14:47:18 +00:00
move-optimizer.cc [cleanup] [compiler] Fix (D)CHECK macros 2017-09-25 10:21:34 +00:00
move-optimizer.h Fix common misspellings 2017-08-02 09:35:28 +00:00
node-aux-data.h
node-cache.cc
node-cache.h
node-marker.cc
node-marker.h
node-matchers.cc
node-matchers.h [base] Consolidate IsPowerOfTwo{32,64} and IS_POWER_OF_TWO 2017-07-13 10:49:09 +00:00
node-properties.cc [turbofan] Unify CanBePrimitive and NeedsConvertReceiver. 2017-11-29 06:50:57 +00:00
node-properties.h [turbofan] Unify CanBePrimitive and NeedsConvertReceiver. 2017-11-29 06:50:57 +00:00
node.cc [cleanup] [compiler] Fix (D)CHECK macros 2017-09-25 10:21:34 +00:00
node.h [cleanup] [compiler] Fix (D)CHECK macros 2017-09-25 10:21:34 +00:00
opcodes.cc
opcodes.h No longer desugar the exponentiation (**) operator. 2017-11-29 06:52:27 +00:00
operation-typer.cc [turbofan] Improve typing rule for NumberTrunc. 2017-11-28 08:31:39 +00:00
operation-typer.h [bigint,compiler] Fully implement ToNumeric bytecode. 2017-11-21 11:56:34 +00:00
operator-properties.cc No longer desugar the exponentiation (**) operator. 2017-11-29 06:52:27 +00:00
operator-properties.h
operator.cc [turbofan] Bump control/effect input count size to 32 bits. 2017-10-25 05:11:19 +00:00
operator.h [turbofan] Bump control/effect input count size to 32 bits. 2017-10-25 05:11:19 +00:00
osr.cc [arm64] Pad registers in interpreter frame. 2017-09-22 10:58:28 +00:00
osr.h [TurboFan] Delete AstGraphBuilder. 2017-08-10 15:56:21 +00:00
OWNERS Adjust compiler owners file. 2017-07-07 13:48:42 +00:00
persistent-map.h Reland2: [turbofan] staging new implementation of escape analysis 2017-07-31 10:01:07 +00:00
pipeline-statistics.cc [Compiler] Remove isolate from CompilationInfo. 2017-11-15 15:40:55 +00:00
pipeline-statistics.h [Compiler] Remove isolate from CompilationInfo. 2017-11-15 15:40:55 +00:00
pipeline.cc Revert "Revert "[wasm] JIT using WasmCodeManager"" 2017-11-28 22:27:13 +00:00
pipeline.h [builtins] Set {builtin_index} during code allocation. 2017-11-16 13:56:49 +00:00
property-access-builder.cc [turbofan] Make ConvertReceiver a simplified operator. 2017-10-27 04:35:48 +00:00
property-access-builder.h [turbofan] Introduce InstanceOfIC to collect rhs feedback. 2017-10-23 10:15:36 +00:00
raw-machine-assembler.cc [typedarray] Widen set fast path for JSTypedArray source arguments 2017-11-27 17:32:15 +00:00
raw-machine-assembler.h [typedarray] Widen set fast path for JSTypedArray source arguments 2017-11-27 17:32:15 +00:00
redundancy-elimination.cc [turbofan] Fix bounds check elimination for safe-integer-add. 2017-08-30 19:27:21 +00:00
redundancy-elimination.h [Turbofan] Enable reducers to report their name to make reducer tracing clearer 2017-07-11 10:40:23 +00:00
register-allocator-verifier.cc [cleanup] [compiler] Fix (D)CHECK macros 2017-09-25 10:21:34 +00:00
register-allocator-verifier.h [regalloc] Validator: handle aliasing first class. 2017-08-28 23:05:14 +00:00
register-allocator.cc [cleanup] [compiler] Fix (D)CHECK macros 2017-09-25 10:21:34 +00:00
register-allocator.h [cleanup] [compiler] Fix (D)CHECK macros 2017-09-25 10:21:34 +00:00
representation-change.cc Reland^6 "[turbofan] eagerly prune None types and deadness from the graph" 2017-11-16 20:01:22 +00:00
representation-change.h [turbofan] Fix truncation for number feedback. 2017-09-05 14:48:08 +00:00
schedule.cc [cleanup] [compiler] Fix (D)CHECK macros 2017-09-25 10:21:34 +00:00
schedule.h Move phis, if any, when ensuring deferred blocks. 2017-05-18 05:49:58 +00:00
scheduler.cc [cleanup] [compiler] Fix (D)CHECK macros 2017-09-25 10:21:34 +00:00
scheduler.h [turbofan] Make the scheduler work with non-trimmed graph. 2017-09-04 11:42:01 +00:00
select-lowering.cc
select-lowering.h [Turbofan] Enable reducers to report their name to make reducer tracing clearer 2017-07-11 10:40:23 +00:00
simd-scalar-lowering.cc [wasm] Further reduce usage of wasm-module.h outside of src/wasm. 2017-10-04 14:49:19 +00:00
simd-scalar-lowering.h Revert "Revert "[WASM SIMD] Store simd lowering compare ops result as -1 instead of 1"" 2017-06-20 21:44:17 +00:00
simplified-lowering.cc [bigint,compiler] Support bigints in increment (++) and decrement (--). 2017-11-28 09:45:49 +00:00
simplified-lowering.h [bigint,compiler] Fully implement ToNumeric bytecode. 2017-11-21 11:56:34 +00:00
simplified-operator-reducer.cc
simplified-operator-reducer.h [Turbofan] Enable reducers to report their name to make reducer tracing clearer 2017-07-11 10:40:23 +00:00
simplified-operator.cc [turbofan] Fix printing of FieldAccess. 2017-11-20 12:11:55 +00:00
simplified-operator.h [turbofan] Remove the unused ToBooleanHints. 2017-11-20 09:42:38 +00:00
state-values-utils.cc [cleanup] [compiler] Fix (D)CHECK macros 2017-09-25 10:21:34 +00:00
state-values-utils.h [turbofan] Allow registers/accum/params to share state value nodes 2017-02-13 10:13:36 +00:00
store-store-elimination.cc Fix compilation failures with GCC 6.3.0 2017-11-27 11:30:11 +00:00
store-store-elimination.h
STYLE
type-cache.cc add gn jumbo build support 2017-08-09 09:05:29 +00:00
type-cache.h [objects.h splitting] Move Code & related classes. 2017-10-13 14:22:11 +00:00
typed-optimization.cc [bigint,compiler] Support bigints in typeof operator. 2017-11-20 17:45:53 +00:00
typed-optimization.h [turbofan] Introduce SameValue operator. 2017-10-27 08:03:26 +00:00
typer.cc [bigint,compiler] Adapt typer and verifier. 2017-11-29 09:43:07 +00:00
typer.h [turbofan] Utilize the fact that empty string is canonicalized. 2017-02-09 07:23:08 +00:00
types.cc [runtime] Introduce instance type for descriptor arrays. 2017-11-23 11:42:29 +00:00
types.h [bigint,compiler] Adapt typer and verifier. 2017-11-29 09:43:07 +00:00
unwinding-info-writer.h
value-numbering-reducer.cc [cleanup] [compiler] Fix (D)CHECK macros 2017-09-25 10:21:34 +00:00
value-numbering-reducer.h [Turbofan] Enable reducers to report their name to make reducer tracing clearer 2017-07-11 10:40:23 +00:00
verifier.cc [bigint,compiler] Adapt typer and verifier. 2017-11-29 09:43:07 +00:00
verifier.h [Turbofan] Improve verification with effect output checks 2017-10-24 09:00:31 +00:00
wasm-compiler.cc [turbofan] Remove obsolete {SupportsTailCalls} flag. 2017-11-29 11:52:06 +00:00
wasm-compiler.h [turbofan] Remove obsolete {SupportsTailCalls} flag. 2017-11-29 11:52:06 +00:00
wasm-linkage.cc [turbofan] Remove obsolete {SupportsTailCalls} flag. 2017-11-29 11:52:06 +00:00
zone-stats.cc [cleanup] Remove List. 2017-09-28 10:47:40 +00:00
zone-stats.h [wasm] Throttle the amount of unfinished work to avoid OOM (non-blocking) 2017-06-20 09:48:05 +00:00