- 01 Aug, 2016 1 commit
-
-
ahaas authored
The initialization of static variables that were used originally caused a data race because multiple threads tried to initialize the variables at the same time. The use of a LazyInstance guarantees that the variables get initialized exactly once. The same problem also existed in c-linkage.cc. There I fixed the problem by using a local variable instead of a static variable. BUG=v8:5242 R=titzer@chromium.org Review-Url: https://codereview.chromium.org/2202433003 Cr-Commit-Position: refs/heads/master@{#38221}
-
- 11 Jul, 2016 1 commit
-
-
danno authored
By adding MachineType to LinkageLocation, it is possible not only to reason about the location of a LinkageLocation on the stack, but also about it's size. This will be useful in follow-on CLs that attempt to merge some of the parameter passing logic of tail calls and normal (non-tail) calls. As a nice side-effect, it is no longer necessary to separately keep a MachineSignature in a CallDescriptor, because the MachineTypes contianed in LinkageLocation for all of the Descriptor's parameters and return types are sufficient. This CL therefore removes the MachineSignature from the CallDescriptor and adjusts all the calling code accordingly, simplifying and de-duplicating code in a bunch of places. R=titzer@chromium.org, bmeurer@chromium.org LOG=N Review-Url: https://codereview.chromium.org/2124023003 Cr-Commit-Position: refs/heads/master@{#37633}
-
- 29 Mar, 2016 1 commit
-
-
titzer authored
In JavaScript code and stubs, JSSP mirrors the CSP but may be unaligned. But in WASM code only CSP is used, like native code, and it must be aligned. Calls into WASM from JS need to carefully align the C stack pointer (csp) and restore the previous JSSP, while calls from WASM to JS need to compute a new JSSP and restore their CSP after the call. R=ahaas@chromium.org BUG= Review URL: https://codereview.chromium.org/1811283003 Cr-Commit-Position: refs/heads/master@{#35096}
-
- 04 Mar, 2016 1 commit
-
-
jyan authored
R=danno@chromium.org,jkummerow@chromium.org,jochen@chromium.org,joransiu@ca.ibm.com,michael_dawson@ca.ibm.com,mbrandy@us.ibm.com BUG= Review URL: https://codereview.chromium.org/1762743002 Cr-Commit-Position: refs/heads/master@{#34501}
-
- 24 Feb, 2016 1 commit
-
-
akos.palfi authored
Per MIPS O32 ABI the first four arguments must be passed via the a0-a3 registers and they must be on the stack as well. TEST=cctest/test-run-wasm/* BUG= Review URL: https://codereview.chromium.org/1730763002 Cr-Commit-Position: refs/heads/master@{#34260}
-
- 15 Feb, 2016 1 commit
-
-
titzer authored
Passing floating point params to/from C has never quite worked correctly, but we've never enforced the restriction early in the CallDescriptor creation process because of unittests. Fix unittests to make their own simple call descriptors and not rely on the C ones. R=bmeurer@chromium.org BUG= Review URL: https://codereview.chromium.org/1701593003 Cr-Commit-Position: refs/heads/master@{#33993}
-
- 01 Feb, 2016 1 commit
-
-
ahaas authored
The root register is needed (at least on x64) to access ExternalReferences. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1641153003 Cr-Commit-Position: refs/heads/master@{#33631}
-
- 10 Dec, 2015 1 commit
-
-
jarin authored
MachineType is now a class with two enum fields: - MachineRepresentation - MachineSemantic Both enums are usable on their own, and this change switches some places from using MachineType to use just MachineRepresentation. Most notably: - register allocator now uses just the representation. - Phi and Select nodes only refer to representations. Review URL: https://codereview.chromium.org/1513543003 Cr-Commit-Position: refs/heads/master@{#32738}
-
- 02 Oct, 2015 3 commits
-
-
danno authored
Previous to this patch, both the lithium and TurboFan register allocators tracked allocated registers by "indices", rather than the register codes used elsewhere in the runtime. This patch ensures that codes are used everywhere, and in the process cleans up a bunch of redundant code and adds more structure to how the set of allocatable registers is defined. Some highlights of changes: * TurboFan's RegisterConfiguration class moved to V8's top level so that it can be shared with Crankshaft. * Various "ToAllocationIndex" and related methods removed. * Code that can be easily shared between Register classes on different platforms is now shared. * The list of allocatable registers on each platform is declared as a list rather than implicitly via the register index <-> code mapping. Committed: https://crrev.com/80bc6f6e11f79524e3f1ad05579583adfd5f18b2 Cr-Commit-Position: refs/heads/master@{#30913} Committed: https://crrev.com/7b7a8205d9a00c678fb7a6e032a55fecbc1509cf Cr-Commit-Position: refs/heads/master@{#31075} Review URL: https://codereview.chromium.org/1287383003 Cr-Commit-Position: refs/heads/master@{#31087}
-
danno authored
Revert of Reland: Remove register index/code indirection (patchset #20 id:380001 of https://codereview.chromium.org/1287383003/ ) Reason for revert: Failures on MIPS Original issue's description: > Remove register index/code indirection > > Previous to this patch, both the lithium and TurboFan register > allocators tracked allocated registers by "indices", rather than > the register codes used elsewhere in the runtime. This patch > ensures that codes are used everywhere, and in the process cleans > up a bunch of redundant code and adds more structure to how the > set of allocatable registers is defined. > > Some highlights of changes: > > * TurboFan's RegisterConfiguration class moved to V8's top level > so that it can be shared with Crankshaft. > * Various "ToAllocationIndex" and related methods removed. > * Code that can be easily shared between Register classes on > different platforms is now shared. > * The list of allocatable registers on each platform is declared > as a list rather than implicitly via the register index <-> > code mapping. > > Committed: https://crrev.com/80bc6f6e11f79524e3f1ad05579583adfd5f18b2 > Cr-Commit-Position: refs/heads/master@{#30913} > > Committed: https://crrev.com/7b7a8205d9a00c678fb7a6e032a55fecbc1509cf > Cr-Commit-Position: refs/heads/master@{#31075} TBR=akos.palfi@imgtec.com,bmeurer@chromium.org,jarin@chromium.org,paul.lind@imgtec.com,titzer@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1380863004 Cr-Commit-Position: refs/heads/master@{#31083}
-
danno authored
Previous to this patch, both the lithium and TurboFan register allocators tracked allocated registers by "indices", rather than the register codes used elsewhere in the runtime. This patch ensures that codes are used everywhere, and in the process cleans up a bunch of redundant code and adds more structure to how the set of allocatable registers is defined. Some highlights of changes: * TurboFan's RegisterConfiguration class moved to V8's top level so that it can be shared with Crankshaft. * Various "ToAllocationIndex" and related methods removed. * Code that can be easily shared between Register classes on different platforms is now shared. * The list of allocatable registers on each platform is declared as a list rather than implicitly via the register index <-> code mapping. Committed: https://crrev.com/80bc6f6e11f79524e3f1ad05579583adfd5f18b2 Cr-Commit-Position: refs/heads/master@{#30913} Review URL: https://codereview.chromium.org/1287383003 Cr-Commit-Position: refs/heads/master@{#31075}
-
- 30 Sep, 2015 1 commit
-
-
mstarzinger authored
This enables linter checking for "readability/namespace" violations during presubmit and instead marks the few known exceptions that we allow explicitly. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1371083003 Cr-Commit-Position: refs/heads/master@{#31019}
-
- 24 Sep, 2015 2 commits
-
-
danno authored
Revert of Remove register index/code indirection (patchset #17 id:320001 of https://codereview.chromium.org/1287383003/ ) Reason for revert: Failures on greedy RegAlloc, Fuzzer Original issue's description: > Remove register index/code indirection > > Previous to this patch, both the lithium and TurboFan register > allocators tracked allocated registers by "indices", rather than > the register codes used elsewhere in the runtime. This patch > ensures that codes are used everywhere, and in the process cleans > up a bunch of redundant code and adds more structure to how the > set of allocatable registers is defined. > > Some highlights of changes: > > * TurboFan's RegisterConfiguration class moved to V8's top level > so that it can be shared with Crankshaft. > * Various "ToAllocationIndex" and related methods removed. > * Code that can be easily shared between Register classes on > different platforms is now shared. > * The list of allocatable registers on each platform is declared > as a list rather than implicitly via the register index <-> > code mapping. > > Committed: https://crrev.com/80bc6f6e11f79524e3f1ad05579583adfd5f18b2 > Cr-Commit-Position: refs/heads/master@{#30913} TBR=akos.palfi@imgtec.com,bmeurer@chromium.org,jarin@chromium.org,paul.lind@imgtec.com,titzer@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1365073002 Cr-Commit-Position: refs/heads/master@{#30914}
-
danno authored
Previous to this patch, both the lithium and TurboFan register allocators tracked allocated registers by "indices", rather than the register codes used elsewhere in the runtime. This patch ensures that codes are used everywhere, and in the process cleans up a bunch of redundant code and adds more structure to how the set of allocatable registers is defined. Some highlights of changes: * TurboFan's RegisterConfiguration class moved to V8's top level so that it can be shared with Crankshaft. * Various "ToAllocationIndex" and related methods removed. * Code that can be easily shared between Register classes on different platforms is now shared. * The list of allocatable registers on each platform is declared as a list rather than implicitly via the register index <-> code mapping. Review URL: https://codereview.chromium.org/1287383003 Cr-Commit-Position: refs/heads/master@{#30913}
-
- 07 Aug, 2015 1 commit
-
-
titzer authored
[turbofan] Remove architecture-specific linkage files and LinkageTraits. Use macro-assembler-defined constants. R=mstarzinger@chromium.org BUG= Review URL: https://codereview.chromium.org/1272883003 Cr-Commit-Position: refs/heads/master@{#30063}
-
- 03 Aug, 2015 1 commit
-
-
mbrandy authored
NOPRESUBMIT=true R=titzer@chromium.org, michael_dawson@ca.ibm.com, jyan@ca.ibm.com, joransiu@ca.ibm.com BUG= Review URL: https://codereview.chromium.org/1271583002 Cr-Commit-Position: refs/heads/master@{#29978}
-
- 31 Jul, 2015 1 commit
-
-
titzer authored
R=danno@chromium.org BUG= Review URL: https://codereview.chromium.org/1269913002 Cr-Commit-Position: refs/heads/master@{#29957}
-
- 30 Jul, 2015 2 commits
-
-
danno authored
Add factory methods for different types of LinkageLocations, and ensure that accesses to the underlying data in the location are classified by type and funneled through explicit accessors. Also change the representation of LinkageLocation to use a BitField rather than using a reserved section of the integer range. Review URL: https://codereview.chromium.org/1262343002 Cr-Commit-Position: refs/heads/master@{#29938}
-
titzer authored
This is the first step in cutting the Gordian linkage/linkage-impl knot. This basically changes the axis along which we organize call descriptor building logic from having platform-specific files dedicated to all call descriptor types to having call-descriptor-type-specific files that have The next step is to factor the JS, code stub, and runtime call descriptors similarly, dumping them into: compiler/js-linkage.cc compiler/runtime-linkage.cc compiler/code-stub-linkage.cc or, alternatively, all of them just into compiler/js-linkage.cc. This also anticipates a wasm-linkage.cc file in the future. R=bmeurer@chromium.org,danno@chromium.org BUG= Review URL: https://codereview.chromium.org/1266603002 Cr-Commit-Position: refs/heads/master@{#29931}
-