- 14 Sep, 2017 1 commit
-
-
Sigurdur Asgeirsson authored
Bug: chromium:763010 Change-Id: Iafed5a0e8087f415cd2c11a0b1326c04bd01ef80 Reviewed-on: https://chromium-review.googlesource.com/665351Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Sigurður Ásgeirsson <siggi@chromium.org> Cr-Commit-Position: refs/heads/master@{#48018}
-
- 07 Sep, 2017 1 commit
-
-
Clemens Hammacher authored
Use operator== and operator!= instead. Implemented for x64, ia32, arm, arm64, mips and mips64. R=mstarzinger@chromium.org,ishell@chromium.org,jgruber@chromium.org Change-Id: Iad0f03f7f442709dcaa12d6a49a8bc4b03b9cdae Reviewed-on: https://chromium-review.googlesource.com/654857 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#47889}
-
- 06 Sep, 2017 1 commit
-
-
Clemens Hammacher authored
Up to now, each architecture defined all Register types as structs, with lots of redundancy. An often found comment noted that they cannot be classes due to initialization order problems. As these problems are gone with C++11 constexpr constants, I now tried making Registers classes again. All register types now inherit from RegisterBase, which provides a default set of methods and named constructors (like ::from_code, code(), bit(), is_valid(), ...). This design allows to guarantee an interesting property: Each register is either valid, or it's the no_reg register. There are no other invalid registers. This is guaranteed statically by the constexpr constructor, and dynamically by ::from_code. I decided to disallow the default constructor completely, so instead of "Register reg;" you now need "Register reg = no_reg;". This makes explicit how the Register is initialized. I did this change to the x64, ia32, arm, arm64, mips and mips64 ports. Overall, code got much more compact and more safe. In theory, it should also increase performance (since the is_valid() check is simpler), but this is probably not measurable. R=mstarzinger@chromium.org Change-Id: I5ccfa4050daf4e146a557970e9d37fd3d2788d4a Reviewed-on: https://chromium-review.googlesource.com/650927Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#47847}
-
- 17 Aug, 2017 1 commit
-
-
Ivica Bogosavljevic authored
Bug: Change-Id: I5b5477b55f42cdfa7978bbe6b8610302f0ec41fb Reviewed-on: https://chromium-review.googlesource.com/612085Reviewed-by:
Miran Karić <Miran.Karic@imgtec.com> Commit-Queue: Ivica Bogosavljevic <ivica.bogosavljevic@imgtec.com> Cr-Commit-Position: refs/heads/master@{#47396}
-
- 16 Aug, 2017 1 commit
-
-
Yang Guo authored
This removes: - CodeBreakIterator for FCG code. - RelocModes for debug breaks. - Code generator for debug break slots. - GC support for debug break slots. - Code flag to indicate code with debug break slots. - Builtin type DBG. - Mechanisms to replace FCG code in the debugger and LiveEdit. - Runtime entry to the debugger from debug break slots. R=bmeurer@chromium.org, rmcilroy@chromium.org, ulan@chromium.org Bug: v8:6409 Change-Id: I5662c8800e3ef1b1584ad107bfe0aae26c9d8abb Reviewed-on: https://chromium-review.googlesource.com/613263Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#47364}
-
- 14 Aug, 2017 1 commit
-
-
Mircea Trofin authored
The way we access wasm addresses or sizes is the same, on a platform. We have 2 size parameters - memory and table - and 2 addresses - globals and memory. The CL also renames for generality the address setting API. Bug: Change-Id: Ib66c3aff6a0ab4313391528cd2692749bb389559 Reviewed-on: https://chromium-review.googlesource.com/612597 Commit-Queue: Brad Nelson <bradnelson@chromium.org> Reviewed-by:
Brad Nelson <bradnelson@chromium.org> Cr-Commit-Position: refs/heads/master@{#47350}
-
- 11 Aug, 2017 1 commit
-
-
Ross McIlroy authored
Deletes the now unused Full-codegen compiler. Also removes some macro assembler instructions which are no longer used. Note: there is still additional cleanup work to do after this lands (e.g., remove support for FCG frames support and FCG debugger support, etc.), but this will be done in followup CLs to keep this patch managable. BUG=v8:6409 Change-Id: I8d828fe7a64d29f2c1252d5fda968a630a2e9ef2 Reviewed-on: https://chromium-review.googlesource.com/584773 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#47307}
-
- 28 Jul, 2017 1 commit
-
-
sreten.kovacevic authored
Add UseScratchRegisterScope for MIPS and use it instead of using at register directly. Original commit message: `Introduce a stripped down version of UseScratchRegisterScope for ARM and use it inside the assembler and macro-assembler. At the exception of the Call instructions, we now use this scope instead of using the ip register directly. This is inspired from how the ARM64 backend works. In general, the benefit of doing this is we can catch cases where ip is being used both by the caller and by the assembler. But more specifically, TurboFan reserves r9 as an extra scratch register because ip can already be used by the assembler. With this utility, we can isolate the cases in the code generator which need an extra register and potentially fix them, allowing us to give r9 back to the register allocator. This patch uncovered places in the assembler where we were using ip unconditionally when we could have re-used the destination register instead.` Bug: Change-Id: I1a35c1661579882801605337abfc95f75b47f052 Reviewed-on: https://chromium-review.googlesource.com/574923 Commit-Queue: Ivica Bogosavljevic <ivica.bogosavljevic@imgtec.com> Reviewed-by:
Ivica Bogosavljevic <ivica.bogosavljevic@imgtec.com> Cr-Commit-Position: refs/heads/master@{#46963}
-
- 13 Jul, 2017 1 commit
-
-
Clemens Hammacher authored
There is just one version now, called IsPowerOfTwo. It accepts any integral type. There is one slight semantical change: Called with kMinInt, it previously returned true, because the argument was implicitly casted to an unsigned. It's now (correctly) returning false, so I had to add special handlings of kMinInt in machine-operator-reducer before calling IsPowerOfTwo on that value. R=mlippautz@chromium.org,mstarzinger@chromium.org,jgruber@chromium.org,ishell@chromium.org,yangguo@chromium.org Change-Id: Idc112a89034cdc8c03365b778b33b1c29fefb38d Reviewed-on: https://chromium-review.googlesource.com/568140Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#46627}
-
- 12 Jul, 2017 1 commit
-
-
Georg Neis authored
TF will instantiate the Assembler when we're already on a background thread, so it's not safe to read out the heap's max_old_generation_size (it can change). This CL simply removes the use of that value from the assembler. If the buffer gets too large we will fail when creating the actual code object. Bug: v8:6048 Change-Id: Ifb8a64c90222e4516117d237b001779fae060d28 Reviewed-on: https://chromium-review.googlesource.com/567921Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#46581}
-
- 11 Jul, 2017 1 commit
-
-
Georg Neis authored
Port https://chromium-review.googlesource.com/563658. R=mvstanton@chromium.org Bug: v8:6048 Change-Id: Ic3e23d82a039a1bec7b328e79fefb0ea18a3b3f7 Reviewed-on: https://chromium-review.googlesource.com/566837Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#46562}
-
- 10 Jul, 2017 3 commits
-
-
Georg Neis authored
Port https://chromium-review.googlesource.com/c/561015/. Bug: v8:6048 Change-Id: I887ad0651674fb1c503bea19660199eb5ab3e9ba Reviewed-on: https://chromium-review.googlesource.com/565568Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#46531}
-
Ivica Bogosavljevic authored
Port 040fa06f Port 659e8f7b Bug: Change-Id: Ie08d65ff6647f8a15127a065e7224b5b5cec09a4 Reviewed-on: https://chromium-review.googlesource.com/558294 Commit-Queue: Ivica Bogosavljevic <ivica.bogosavljevic@imgtec.com> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#46525}
-
Miran.Karic authored
The CL introducing optimizations in memory load/store helper, https://chromium-review.googlesource.com/c/552119/, caused several failures on r6 builders. The problem was in Sdc1 macro instruction where address in at register was overwritten before being used. Also in debug mode a DCHECK was failing because an incorrect type was used. BUG= Change-Id: If38f9dfbbe2e72dfce05c24f7b6019060ef28334 Reviewed-on: https://chromium-review.googlesource.com/565297Reviewed-by:
Ivica Bogosavljevic <ivica.bogosavljevic@imgtec.com> Commit-Queue: Miran Karić <Miran.Karic@imgtec.com> Cr-Commit-Position: refs/heads/master@{#46521}
-
- 05 Jul, 2017 1 commit
-
-
Miran.Karic authored
The CL replaces several helper functions for memory load/store using base register and offset with one helper function that contains several optimizations. BUG= Change-Id: I187e7e882131552abd9a0b3a0070d78adefd25b6 Reviewed-on: https://chromium-review.googlesource.com/552119 Commit-Queue: Miran Karić <Miran.Karic@imgtec.com> Reviewed-by:
Ivica Bogosavljevic <ivica.bogosavljevic@imgtec.com> Cr-Commit-Position: refs/heads/master@{#46420}
-
- 27 Jun, 2017 1 commit
-
-
Ilija Pavlovic authored
For handling restartability issues, following conditions must be fulfilled: - For Branch-and-link restartability: GPR 31 (ra register) must not be used for the source register rs. - For Jump-and-Link restartability: Register specifiers rs and rd must not be equal. This CL implements checking that GPR 31 is not used as source register. TEST= BUG= Change-Id: I568ff9c497b4efca73f1a5353cb7520202524479 Reviewed-on: https://chromium-review.googlesource.com/549362Reviewed-by:
Ivica Bogosavljevic <ivica.bogosavljevic@imgtec.com> Commit-Queue: Ivica Bogosavljevic <ivica.bogosavljevic@imgtec.com> Cr-Commit-Position: refs/heads/master@{#46252}
-
- 20 Jun, 2017 2 commits
-
-
mvstanton authored
RelocInfo no longer needs CODE_TARGET_WITH_ID thanks to the removal of Crankshaft. BUG=v8:6408 R=mstarzinger@chromium.org Review-Url: https://codereview.chromium.org/2951473002 Cr-Commit-Position: refs/heads/master@{#46047}
-
mvstanton authored
These are no longer being used. BUG=v8:6408 Review-Url: https://codereview.chromium.org/2944013002 Cr-Commit-Position: refs/heads/master@{#46024}
-
- 01 Jun, 2017 1 commit
-
-
dusan.simicic authored
Add support for S1x4And, S1x4Or, S1x4Xor, S1x4Not, S1x4AnyTrue, S1x4AllTrue, S1x8And, S1x8Or, S1x8Xor, S1x8Not, S1x8AnyTrue, S1x8AllTrue, S1x16And, S1x16Or, S1x16Xor, S1x16Not, S1x16AnyTrue, S1x16AllTrue, SimdLoad, SimdStore operations for mips32 and mips64 architectures. BUG= Review-Url: https://codereview.chromium.org/2801683003 Cr-Commit-Position: refs/heads/master@{#45662}
-
- 31 May, 2017 1 commit
-
-
neis authored
Instead of allocating and embedding certain heap numbers into the code during code assembly, emit dummies but record the allocation requests. Later then, in Assembler::GetCode, allocate the heap numbers and patch the code by replacing the dummies with the actual objects. The RelocInfos for the embedded objects are already recorded correctly when emitting the dummies. R=jarin@chromium.org BUG=v8:6048 Review-Url: https://codereview.chromium.org/2900683002 Cr-Commit-Position: refs/heads/master@{#45635}
-
- 22 May, 2017 1 commit
-
-
Wiktor Garbacz authored
Change-Id: I20ed35a7fb5104a9cc66bb54fa8966589c43d7f9 Reviewed-on: https://chromium-review.googlesource.com/507287Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Daniel Clifford <danno@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Reviewed-by:
Jochen Eisinger <jochen@chromium.org> Commit-Queue: Wiktor Garbacz <wiktorg@google.com> Cr-Commit-Position: refs/heads/master@{#45458}
-
- 28 Apr, 2017 1 commit
-
-
hpayer authored
BUG=chromium:716032 Review-Url: https://codereview.chromium.org/2842303003 Cr-Commit-Position: refs/heads/master@{#44975}
-
- 25 Apr, 2017 1 commit
-
-
Miran.Karic authored
Until now JIC and JIALC compact branches were emited without using their offset. Here we optimize their use by using offset after addition and/or load immediate operations. The CL also fixes a problem with deserialization that occurs when a code object ends with an optimized LUI/AUI and JIC/JIALC instruction pair. Deserializer processed these instruction pairs by moving to a location immediately after it, but when this location is the end of the object it would finish with the current object before doing relocation. This is fixed by moving the deserializer one instruction before the location of the instruction pair end. BUG= Review-Url: https://codereview.chromium.org/2542403002 Cr-Commit-Position: refs/heads/master@{#44841}
-
- 27 Mar, 2017 1 commit
-
-
dusan.simicic authored
This patch adds support for MIPS SIMD (MSA) instructions in Assembler and Decoder (disassembler) classes. MSA instructions are implemented for both mips32 and mips64 architectures. BUG= Review-Url: https://codereview.chromium.org/2740123004 Cr-Commit-Position: refs/heads/master@{#44148}
-
- 21 Mar, 2017 1 commit
-
-
Ilija.Pavlovic authored
For MIPS32, instructions ldc1 and sdc1 are moved into macro-assembler and renamed as Ldc1 and Sdc1. The reason for placing them into macro-assembler is that they emmit two or three instructions. TEST=test/cctest/test-assembler-mips, test/cctest/test-code-stubs-mips, test/cctest/test-macro-assembler-mips BUG= Review-Url: https://codereview.chromium.org/2751973002 Cr-Commit-Position: refs/heads/master@{#43977}
-
- 20 Mar, 2017 1 commit
-
-
Yang Guo authored
Previously we used to add a string address after the stop instruction for description. This has been removed, but the skip in the simulator was not consistently removed in 0ca72de2. BUG=chromium:703051 Change-Id: I3135d180bcef174bc5d9dd24f7737a4415732976 Reviewed-on: https://chromium-review.googlesource.com/457356Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#43931}
-
- 17 Mar, 2017 1 commit
-
-
neis authored
This is a first step towards moving Turbofan code generation off the main thread. Summary of the changes: - AssemblerBase no longer has a pointer to the isolate. Instead, its constructor receives the few things that it needs from the isolate (on most architectures this is just the serializer_enabled flag). - RelocInfo no longer has a pointer to the isolate. Instead, the functions that need it take it as an argument. (There are currently still a few that implicitly access the isolate through a HeapObject.) - The MacroAssembler now explicitly holds a pointer to the isolate (before, it used to get it from the Assembler). - The jit_cookie also moved from AssemblerBase to the MacroAssemblers, since it's not used at all in the Assemblers. - A few architectures implemented parts of the Assembler with the help of a Codepatcher that is based on MacroAssembler. Since the Assembler no longer has the isolate, but the MacroAssembler still needs it, this doesn't work anymore. Instead, these Assemblers now use a new PatchingAssembler. BUG=v8:6048 Review-Url: https://codereview.chromium.org/2732273003 Cr-Commit-Position: refs/heads/master@{#43890}
-
- 09 Mar, 2017 1 commit
-
-
yangguo authored
We used to embed a string address as description right after a stop instruction, which the simulator would read and print. We removed that a while ago to make the snapshot predictable. R=petermarshall@chromium.org BUG=v8:6071 Review-Url: https://codereview.chromium.org/2744503003 Cr-Commit-Position: refs/heads/master@{#43698}
-
- 10 Jan, 2017 1 commit
-
-
gdeepti authored
- Refactor Dispatch tables to have separate function, signature tables - New Relocation type for WasmFunctionTableReference, assembler, compiler support. - RelocInfo helper functions for Wasm references Review-Url: https://codereview.chromium.org/2627543003 Cr-Commit-Position: refs/heads/master@{#42192}
-
- 01 Dec, 2016 2 commits
-
-
marija.antic authored
Replace the sequence LUI+(D)ADD with (D)AUI BUG= Review-Url: https://codereview.chromium.org/2535703002 Cr-Commit-Position: refs/heads/master@{#41425}
-
dusan.simicic authored
Trampolines are generated when the value of pc_offset is greater than next_buffer_check_ (attribute from Assembler class). This value shouldn't be incremented in bind_to() method when internal reference label is bound, because it is not decremented when the switch table is generated (dd() method from Assemler class). This patch fixes this problem. Regression test are also included for mips and mips64 arch. BUG= Review-Url: https://codereview.chromium.org/2530143002 Cr-Commit-Position: refs/heads/master@{#41423}
-
- 15 Nov, 2016 1 commit
-
-
dusan.simicic authored
Currently, we are using the following sequence for load/store with large offset (offset > 16b): lui at, 0x1234 ori at, at, 0x5678 add at, s0, at lw a0, 0(at) This sequence can be optimized in the following way: lui at, 0x1234 add at, s0, at lw a0, 0x5678(at) BUG= Review-Url: https://codereview.chromium.org/2503493002 Cr-Commit-Position: refs/heads/master@{#40988}
-
- 14 Nov, 2016 2 commits
-
-
bmeurer authored
Revert of MIPS: Optimize load/store with large offset (patchset #1 id:1 of https://codereview.chromium.org/2486283003/ ) Reason for revert: Breaks CQ trybots now, i.e. https://build.chromium.org/p/tryserver.v8/builders/v8_linux_mipsel_compile_rel/builds/24703/steps/compile%20with%20ninja/logs/stdio Original issue's description: > MIPS: Optimize load/store with large offset > > Currently, we are using the following sequence for load/store with large offset (offset > 16b): > > lui at, 0x1234 > ori at, at, 0x5678 > add at, s0, at > lw a0, 0(at) > > This sequence can be optimized in the following way: > > lui at, 0x1234 > add at, s0, at > lw a0, 0x5678(at) > > BUG= TBR=ivica.bogosavljevic@imgtec.com,miran.karic@imgtec.com,v8-mips-ports@googlegroups.com,dusan.simicic@imgtec.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= Review-Url: https://codereview.chromium.org/2500863003 Cr-Commit-Position: refs/heads/master@{#40959}
-
dusan.simicic authored
Currently, we are using the following sequence for load/store with large offset (offset > 16b): lui at, 0x1234 ori at, at, 0x5678 add at, s0, at lw a0, 0(at) This sequence can be optimized in the following way: lui at, 0x1234 add at, s0, at lw a0, 0x5678(at) BUG= Review-Url: https://codereview.chromium.org/2486283003 Cr-Commit-Position: refs/heads/master@{#40953}
-
- 14 Sep, 2016 1 commit
-
-
Ilija.Pavlovic authored
Implementation MADD.S. MSUB.fmt, MADDF.fmt, MSUBF.fmt and corresponding tests for assembler and disassembler. TEST=cctest/test-assembler-mips[64], cctest/test-disasm-mips[64] BUG= Review-Url: https://codereview.chromium.org/2313623002 Cr-Commit-Position: refs/heads/master@{#39415}
-
- 26 Aug, 2016 1 commit
-
-
Miran.Karic authored
These DCHECKs were causing several test failures or r6. They should not be here because only NEG.PS format was removed in r6, NEG.S and NEG.D instructions remain. BUG= Review-Url: https://codereview.chromium.org/2276563006 Cr-Commit-Position: refs/heads/master@{#38944}
-
- 19 Aug, 2016 1 commit
-
-
marija.antic authored
Implement Neg_d and Neg_s in macro-assembler. Floating point negate instructions are removed in release 6. On r2, these instructoin do not change the sign of NaN operands. TEST=cctest/test-run-wasm/RunWasmCompiled_Float32Neg, cctest/test-run-wasm/RunWasmCompiled_Float64Neg BUG= Review-Url: https://codereview.chromium.org/2256963003 Cr-Commit-Position: refs/heads/master@{#38749}
-
- 26 Jul, 2016 1 commit
-
-
yangguo authored
Doing so in a -pie build would make the snapshot non-deterministic. R=bmeurer@chromium.org BUG=v8:5233 Review-Url: https://codereview.chromium.org/2178093003 Cr-Commit-Position: refs/heads/master@{#38042}
-
- 29 Jun, 2016 2 commits
-
-
alph authored
BUG=v8:5117 TBR=yangguo@chromium.org,ivica.bogosavljevic@imgtec.com Review-Url: https://codereview.chromium.org/2105553007 Cr-Commit-Position: refs/heads/master@{#37403}
-
yangguo authored
R=mstarzinger@chromium.org BUG=v8:5117 Review-Url: https://codereview.chromium.org/2109613004 Cr-Commit-Position: refs/heads/master@{#37397}
-