- 03 May, 2016 16 commits
-
-
jkummerow authored
Omitting the initializer will give zero-initialization which is equivalent to kNoWriteBarrier. Review-Url: https://codereview.chromium.org/1942293002 Cr-Commit-Position: refs/heads/master@{#35989}
-
mstarzinger authored
This moves all implementation internals of the Pipeline class into the corresponding cc-file. Only the public API remains in the header and is made up of static functions only. R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/1948443002 Cr-Commit-Position: refs/heads/master@{#35987}
-
mlippautz authored
Reland of [turbofan] Restore basic write barrier elimination. (patchset #1 id:1 of https://codereview.chromium.org/1943743003/ ) Reason for revert: Jakob found the actual issue with the CL and is going to land the fix after relanding the WB elimination. Original issue's description: > Revert of [turbofan] Restore basic write barrier elimination. (patchset #2 id:20001 of https://codereview.chromium.org/1938993002/ ) > > Reason for revert: > Breaks WBs that should be there ;) > > https://uberchromegw.corp.google.com/i/client.v8/builders/V8%20Linux%20-%20gc%20stress/builds/3305 > > Will open repro bug asap. > > Original issue's description: > > [turbofan] Restore basic write barrier elimination. > > > > Restore the basic write barrier elimination that we used to run as part > > of the simplified lowering phase (in ChangeLowering actually) before, by > > moving the write barrier computation to SimplifiedLowering where we can > > still look at types and consider the heap/isolate, and just update the > > WriteBarrierKind in the FieldAccess/ElementAccess that we later use when > > lowering to a machine Load/Store. > > > > CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux64_tsan_rel > > R=mstarzinger@chromium.org > > BUG=v8:4969,chromium:608636 > > LOG=n > > > > Committed: https://crrev.com/7dcb6ad379fbacbc8bdc8e11a6e50d680ffa3f62 > > Cr-Commit-Position: refs/heads/master@{#35969} > > TBR=mstarzinger@chromium.org,bmeurer@chromium.org > # Skipping CQ checks because original CL landed less than 1 days ago. > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=v8:4969,chromium:608636 > > Committed: https://crrev.com/a782e93c617e728cded5ad878de11137a67891b7 > Cr-Commit-Position: refs/heads/master@{#35983} TBR=mstarzinger@chromium.org,bmeurer@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4969,chromium:608636 Review-Url: https://codereview.chromium.org/1943323002 Cr-Commit-Position: refs/heads/master@{#35984}
-
mlippautz authored
Revert of [turbofan] Restore basic write barrier elimination. (patchset #2 id:20001 of https://codereview.chromium.org/1938993002/ ) Reason for revert: Breaks WBs that should be there ;) https://uberchromegw.corp.google.com/i/client.v8/builders/V8%20Linux%20-%20gc%20stress/builds/3305 Will open repro bug asap. Original issue's description: > [turbofan] Restore basic write barrier elimination. > > Restore the basic write barrier elimination that we used to run as part > of the simplified lowering phase (in ChangeLowering actually) before, by > moving the write barrier computation to SimplifiedLowering where we can > still look at types and consider the heap/isolate, and just update the > WriteBarrierKind in the FieldAccess/ElementAccess that we later use when > lowering to a machine Load/Store. > > CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux64_tsan_rel > R=mstarzinger@chromium.org > BUG=v8:4969,chromium:608636 > LOG=n > > Committed: https://crrev.com/7dcb6ad379fbacbc8bdc8e11a6e50d680ffa3f62 > Cr-Commit-Position: refs/heads/master@{#35969} TBR=mstarzinger@chromium.org,bmeurer@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4969,chromium:608636 Review-Url: https://codereview.chromium.org/1943743003 Cr-Commit-Position: refs/heads/master@{#35983}
-
jarin authored
BUG=chromium:607493 LOG=n Review-Url: https://codereview.chromium.org/1949433002 Cr-Commit-Position: refs/heads/master@{#35982}
-
mstarzinger authored
R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/1947463002 Cr-Commit-Position: refs/heads/master@{#35981}
-
mstarzinger authored
By now the Pipeline class can no longer be used to construct instances from the outside. The constructor and all non-exposed helpers can be made private. R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/1943243003 Cr-Commit-Position: refs/heads/master@{#35978}
-
ahaas authored
Additionally I removed some stale comments. R=titzer@chromium.org Review-Url: https://codereview.chromium.org/1941323002 Cr-Commit-Position: refs/heads/master@{#35976}
-
mstarzinger authored
R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/1946523002 Cr-Commit-Position: refs/heads/master@{#35975}
-
ahaas authored
Graph construction, graph scheduling, instruction selection, and register allocation has been moved to ExecuteCompilation, which will eventually be executed on the background threads. Code generation remains in FinishCompilation because it has to be executed by the main thread. Additionally, WasmCompilationUnits are finished more eagerly in wasm-module.cc to save memory. R=titzer@chromium.org Review-Url: https://codereview.chromium.org/1942773002 Cr-Commit-Position: refs/heads/master@{#35973}
-
ishell authored
Code common with ObjectHasOwnProperty builtin was moved to CodeStubAssembler. BUG=v8:2743 LOG=Y Review-Url: https://codereview.chromium.org/1894953004 Cr-Commit-Position: refs/heads/master@{#35972}
-
bmeurer authored
R=jarin@chromium.org Review-Url: https://codereview.chromium.org/1941373002 Cr-Commit-Position: refs/heads/master@{#35971}
-
bmeurer authored
Restore the basic write barrier elimination that we used to run as part of the simplified lowering phase (in ChangeLowering actually) before, by moving the write barrier computation to SimplifiedLowering where we can still look at types and consider the heap/isolate, and just update the WriteBarrierKind in the FieldAccess/ElementAccess that we later use when lowering to a machine Load/Store. CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux64_tsan_rel R=mstarzinger@chromium.org BUG=v8:4969,chromium:608636 LOG=n Review-Url: https://codereview.chromium.org/1938993002 Cr-Commit-Position: refs/heads/master@{#35969}
-
jarin authored
Review-Url: https://codereview.chromium.org/1941353002 Cr-Commit-Position: refs/heads/master@{#35966}
-
bmeurer authored
The string operators not only read memory, but also write memory in case of cons string flattening, so we better make sure to have the stub calls in the effect chain. R=jarin@chromium.org Review-Url: https://codereview.chromium.org/1938383002 Cr-Commit-Position: refs/heads/master@{#35965}
-
bmeurer authored
Use the ShiftLeftStub, ShiftRightStub and ShiftRightLogicalStub in JSGenericLowering instead of the old-style patching BinaryOpIC. Also remove the machinery to support patching ICs in TurboFan completely, as this was the last user of code patching in TurboFan! R=yangguo@chromium.org Review-Url: https://codereview.chromium.org/1942153002 Cr-Commit-Position: refs/heads/master@{#35959}
-
- 02 May, 2016 10 commits
-
-
jyan authored
R=joransiu@ca.ibm.com, mbrandy@us.ibm.com, michael_dawson@ca.ibm.com BUG= Review-Url: https://codereview.chromium.org/1936953004 Cr-Commit-Position: refs/heads/master@{#35953}
-
jyan authored
Fix A couple places which could cause upper 32bit corruption R=joransiu@ca.ibm.com, mbrandy@us.ibm.com, michael_dawson@ca.ibm.com BUG= Review-Url: https://codereview.chromium.org/1939763003 Cr-Commit-Position: refs/heads/master@{#35952}
-
bbudge authored
Takes the SIMD runtime intrinsics as a starting point for defining TF machine operators. The rationale for omitting functions is: - Check functions. - 'FromXxxBits' functions. These are essentially casts. - UInt constructors. int and uint aren't distinguished in wasm. - Uint functions, except where their behavior is bitwise different from the Int function. Some operators are typeless, i.e. they are the same for multiple related types, e.g. logical ops for int types, load/store for float and int types. Use a 'Simd128' prefix for these operators. Skipped fns: Float32x4Check Float32x4FromInt32x4Bits Float32x4FromUint32x4Bits Float32x4FromInt16x8Bits Float32x4FromUint16x8Bits Float32x4FromInt8x16Bits Float32x4FromUint8x16Bits Int32x4Check Int32x4FromUint32x4 Int32x4FromFloat32x4Bits Int32x4FromUint32x4Bits Int32x4FromInt16x8Bits Int32x4FromUint16x8Bits Int32x4FromInt8x16Bits Int32x4FromUint8x16Bits CreateUint32x4 Uint32x4Check Uint32x4ExtractLane Uint32x4ReplaceLane Uint32x4Add Uint32x4Sub Uint32x4Mul Uint32x4And Uint32x4Or Uint32x4Xor Uint32x4Not Uint32x4Equal Uint32x4NotEqual Uint32x4Select Uint32x4Swizzle Uint32x4Shuffle Uint32x4FromInt32x4 Uint32x4FromFloat32x4Bits Uint32x4FromInt32x4Bits Uint32x4FromInt16x8Bits Uint32x4FromUint16x8Bits Uint32x4FromInt8x16Bits Uint32x4FromUint8x16Bits Bool32x4Check Int16x8Check Int16x8FromUint16x8 Int16x8FromFloat32x4Bits Int16x8FromInt32x4Bits Int16x8FromUint32x4Bits Int16x8FromUint16x8Bits Int16x8FromInt8x16Bits Int16x8FromUint8x16Bits CreateUint16x8 Uint16x8Check Uint16x8ExtractLane Uint16x8ReplaceLane Uint16x8Add Uint16x8Sub Uint16x8Mul Uint16x8And Uint16x8Or Uint16x8Xor Uint16x8Not Uint16x8Equal Uint16x8NotEqual Uint16x8Select Uint16x8Swizzle Uint16x8Shuffle Uint16x8FromInt16x8 Uint16x8FromFloat32x4Bits Uint16x8FromInt32x4Bits Uint16x8FromUint32x4Bits Uint16x8FromInt16x8Bits Uint16x8FromInt8x16Bits Uint16x8FromUint8x16Bits Bool16x8Check Int8x16Check Int8x16FromUint8x16 Int8x16FromFloat32x4Bits Int8x16FromInt32x4Bits Int8x16FromUint32x4Bits Int8x16FromInt16x8Bits Int8x16FromUint16x8Bits Int8x16FromUint8x16Bits CreateUint8x16 Uint8x16Check Uint8x16ExtractLane Uint8x16ReplaceLane Uint8x16Add Uint8x16Sub Uint8x16Mul Uint8x16And Uint8x16Or Uint8x16Xor Uint8x16Not Uint8x16Equal Uint8x16NotEqual Uint8x16Select Uint8x16Swizzle Uint8x16Shuffle Uint8x16FromInt8x16 Uint8x16FromFloat32x4Bits Uint8x16FromInt32x4Bits Uint8x16FromUint32x4Bits Uint8x16FromInt16x8Bits Uint8x16FromUint16x8Bits Uint8x16FromInt8x16Bits Bool8x16Check Generic operators for Float, Int types: Simd128Load Simd128Load1 Simd128Load2 Simd128Load3 Simd128Store Simd128Store1 Simd128Store2 Simd128Store3 Generic operators for Int types: Simd128And Simd128Or Simd128Xor Simd128Not LOG=N BUG=v8:4124 Committed: https://crrev.com/3831d41e4ce7b162775732cb6ac1f8139e60aa30 Cr-Commit-Position: refs/heads/master@{#35213} Review-Url: https://codereview.chromium.org/1848433003 Cr-Commit-Position: refs/heads/master@{#35951}
-
mstarzinger authored
This removes the CompilationInfoWithZone class, which was used to allocate a CompilationInfo on the C-heap. By now the CompilationJob is the single object being allocated on the C-heap and passed between the main thread and the compilation thread. Structs requiring destruction can be embedded within that CompilationJob. This simplifies involved lifetimes by coupling all lifetimes to one single object. R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/1930773003 Cr-Commit-Position: refs/heads/master@{#35936}
-
bmeurer authored
For LoadElimination we must not replace LoadField nodes with other nodes whose types are not a subtype of the original LoadField type, as that breaks the verifier. We already fixed that earlier for store to load forwarding, but the fix didn't cover LoadField forwarding. This actually still generates the correct code even w/o the fix, but since recently fails due to stronger checking in representation selection. So this makes clusterfuzz happy again. R=mvstanton@chromium.org BUG=chromium:607899 LOG=n Review-Url: https://codereview.chromium.org/1934973002 Cr-Commit-Position: refs/heads/master@{#35930}
-
bmeurer authored
Now ChangeLowering is only concerned with lowering memory access and allocation operations, and all changes are consistently lowered during the effect/control linearization pass. The next step is to move the left over lowerings to a pass dedicated to eliminate redundant loads and stores, eliminate write barriers, fold and inline allocations. Drive-by-fix: Rename ChangeBitToBool to ChangeBitToTagged, ChangeBoolToBit to ChangeTaggedToBit, and ChangeInt31ToTagged to ChangeInt31ToTaggedSigned for consistency. CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux64_tsan_rel Committed: https://crrev.com/ceca5ae308bddda166651c654f96d71d74f617d0 Cr-Commit-Position: refs/heads/master@{#35924} Review-Url: https://codereview.chromium.org/1941673002 Cr-Commit-Position: refs/heads/master@{#35929}
-
machenbach authored
Revert of [turbofan] Remove left-over change bits from ChangeLowering. (patchset #2 id:20001 of https://codereview.chromium.org/1941673002/ ) Reason for revert: [Sheriff] Breaks mac gc stress: https://build.chromium.org/p/client.v8/builders/V8%20Mac%20GC%20Stress/builds/5821 Original issue's description: > [turbofan] Remove left-over change bits from ChangeLowering. > > Now ChangeLowering is only concerned with lowering memory access and > allocation operations, and all changes are consistently lowered during > the effect/control linearization pass. The next step is to move the > left over lowerings to a pass dedicated to eliminate redundant loads and > stores, eliminate write barriers, fold and inline allocations. > > Also remove the atomic regions now that we wire everything into the > effect chain properly. This is an important step towards allocation > inlining. > > Drive-by-fix: Rename ChangeBitToBool to ChangeBitToTagged, > ChangeBoolToBit to ChangeTaggedToBit, and ChangeInt31ToTagged to > ChangeInt31ToTaggedSigned for consistency. > > CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux64_tsan_rel > > Committed: https://crrev.com/ceca5ae308bddda166651c654f96d71d74f617d0 > Cr-Commit-Position: refs/heads/master@{#35924} TBR=ishell@chromium.org,bmeurer@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review-Url: https://codereview.chromium.org/1942733002 Cr-Commit-Position: refs/heads/master@{#35927}
-
clemensh authored
During ast decoding and turbofan graph construction, we explicitely pass the byte offset for all instructions which potentially trap. The byte offset is finally passed to the runtime function which throws the actual error, but it is not used there yet. The WasmGraphBuilder::Binop and Unop methods have a default value of -1 for the position, which allows for more compact code for all the functions which assemble bigger snippets from the primitive operations. Whenever the position is actually used for generating a trap, we check that it is not negative. R=titzer@chromium.org Review-Url: https://codereview.chromium.org/1915123006 Cr-Commit-Position: refs/heads/master@{#35925}
-
bmeurer authored
Now ChangeLowering is only concerned with lowering memory access and allocation operations, and all changes are consistently lowered during the effect/control linearization pass. The next step is to move the left over lowerings to a pass dedicated to eliminate redundant loads and stores, eliminate write barriers, fold and inline allocations. Also remove the atomic regions now that we wire everything into the effect chain properly. This is an important step towards allocation inlining. Drive-by-fix: Rename ChangeBitToBool to ChangeBitToTagged, ChangeBoolToBit to ChangeTaggedToBit, and ChangeInt31ToTagged to ChangeInt31ToTaggedSigned for consistency. CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux64_tsan_rel Review-Url: https://codereview.chromium.org/1941673002 Cr-Commit-Position: refs/heads/master@{#35924}
-
bmeurer authored
It is unsound to look at the types in the TurboFan graphs after the representation selection (and early optimization) phases, because (a) the remaining phases (might) run concurrently, and (b) the types may not be accurate (or even correct) after representation selection due to the way we deal with truncations. So in Debug builds we now explicitly remove all types from the nodes right after we uninstall the Typer decorator from the Graph, so any further attempt to access the Type of a Node will lead to a crash (again in Debug only for now). CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux64_tsan_rel BUG=v8:4969 LOG=n Review-Url: https://codereview.chromium.org/1937803002 Cr-Commit-Position: refs/heads/master@{#35920}
-
- 30 Apr, 2016 1 commit
-
-
bmeurer authored
Further refactor the pipeline to even run the first scheduler (part of the effect control linearization) concurrently. This temporarily disables most of the write barrier elimination, but we will get back to that later. Drive-by-fix: Remove the dead code from ChangeLowering, and stack allocate the Typer in the pipeline. Also migrate the AllocateStub to a native code builtin, so that we have the code object + a handle to it available all the time. CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux64_tsan_rel R=mstarzinger@chromium.org BUG=v8:4969 LOG=n Review-Url: https://codereview.chromium.org/1926023002 Cr-Commit-Position: refs/heads/master@{#35918}
-
- 29 Apr, 2016 5 commits
-
-
rmcilroy authored
Adapts FastCloneShallowObjectStub to enable it to be used by the CreateObjectLiteral bytecode. BUG=v8:4280 LOG=N Review-Url: https://codereview.chromium.org/1922523002 Cr-Commit-Position: refs/heads/master@{#35909}
-
clemensh authored
We now store the wasm object and the function index in the deoptimization data of the wasm Code object, and store an array with function names in the wasm object. This will make both the wasm module as well as the respective function name available from the code object. Tests will follow in https://codereview.chromium.org/1916403002. R=titzer@chromium.org, mstarzinger@chromium.org, machenbach@chromium.org Review-Url: https://codereview.chromium.org/1912103002 Cr-Commit-Position: refs/heads/master@{#35905}
-
mstarzinger authored
This ensures that the TurboFan pipeline is respecting the flag on the CompilationInfo controlling whether to use the BytecodeGraphBuilder or the AstGraphBuilder when ensuring deoptimization support. R=rmcilroy@chromium.org BUG=chromium:607871 LOG=n Review-Url: https://codereview.chromium.org/1934563002 Cr-Commit-Position: refs/heads/master@{#35904}
-
clemensh authored
The header / start of the json file was missing before. R=ahaas@chromium.org, titzer@chromium.org Review-Url: https://codereview.chromium.org/1928503002 Cr-Commit-Position: refs/heads/master@{#35901}
-
zhengxing.li authored
port ff19726d (r35818) original commit message: Refactor the TurboFan pipeline to allow for concurrent recompilation in the same way that Crankshaft does it. For now we limit the concurrent phases to scheduling, instruction selection, register allocation and jump threading. BUG= Review-Url: https://codereview.chromium.org/1926383002 Cr-Commit-Position: refs/heads/master@{#35888}
-
- 28 Apr, 2016 6 commits
-
-
jyan authored
This refines 6382a610 -- as we still require clean up of the uint index register. TEST=mjsunit/asm/float32array-negative-offset R=joransiu@ca.ibm.com, mbrandy@us.ibm.com, michael_dawson@ca.ibm.com, bjaideep@ca.ibm.com BUG= Conflicts: src/compiler/s390/code-generator-s390.cc Review-Url: https://codereview.chromium.org/1921073003 Cr-Commit-Position: refs/heads/master@{#35879}
-
ahaas authored
I introduced a new flag, --wasm-parallel-compilation, which turns on parallel compilation of wasm modules. If parallel compilation is turned on, then the compilation of wasm functions is split into three phases, initialization, execution, and finalization. The execution phase is the phase which is going to contain all the code that can be executed in parallel. At the moment the execution phase is still empty. R=titzer@chromium.org Review-Url: https://codereview.chromium.org/1928933002 Cr-Commit-Position: refs/heads/master@{#35875}
-
machenbach authored
Revert of [turbofan] Run everything after representation selection concurrently. (patchset #2 id:20001 of https://codereview.chromium.org/1926023002/ ) Reason for revert: [Sheriff] Flaky crashed here and there: https://build.chromium.org/p/client.v8/builders/V8%20Linux/builds/9867 https://build.chromium.org/p/client.v8/builders/V8%20Linux64/builds/9589 https://build.chromium.org/p/client.v8/builders/V8%20Mac/builds/7679 Original issue's description: > [turbofan] Run everything after representation selection concurrently. > > Further refactor the pipeline to even run the first scheduler (part of > the effect control linearization) concurrently. This temporarily > disables most of the write barrier elimination, but we will get back to > that later. TBR=mstarzinger@chromium.org,bmeurer@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review-Url: https://codereview.chromium.org/1925073002 Cr-Commit-Position: refs/heads/master@{#35863}
-
bmeurer authored
Further refactor the pipeline to even run the first scheduler (part of the effect control linearization) concurrently. This temporarily disables most of the write barrier elimination, but we will get back to that later. Review-Url: https://codereview.chromium.org/1926023002 Cr-Commit-Position: refs/heads/master@{#35861}
-
jarin authored
BUG=chromium:607115 LOG=n Review-Url: https://codereview.chromium.org/1928903002 Cr-Commit-Position: refs/heads/master@{#35855}
-
jacob.bramley authored
Remove a couple of variables that are written but not read. BUG= Review-Url: https://codereview.chromium.org/1923913002 Cr-Commit-Position: refs/heads/master@{#35847}
-
- 27 Apr, 2016 2 commits
-
-
mstarzinger authored
The status FAILED and BAILED_OUT only distinguishes between whether an exception is pending or not. Such a distinction is obsolete by now as all callers check for pending exceptions directly. Also it is impossible for any concurrent part of the job to actually set a pending exception, hence even the assertion that the concurrent part does not return FAILED is obsolete. R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/1926693003 Cr-Commit-Position: refs/heads/master@{#35834}
-
mstarzinger authored
R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/1925743002 Cr-Commit-Position: refs/heads/master@{#35832}
-