Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(31)

Issue 1321553002: PPC: [turbofan] Unify referencing of stack slots (Closed)

Created:
5 years, 3 months ago by MTBrandyberry
Modified:
5 years, 3 months ago
CC:
v8-dev
Base URL:
https://chromium.googlesource.com/v8/v8.git@master
Target Ref:
refs/pending/heads/master
Project:
v8
Visibility:
Public.

Description

PPC: [turbofan] Unify referencing of stack slots Port cbbaf9ea6abbc0417ee5765a4c58f1dda939ead0 Note that the above commit breaks embedded constant pools and will need to be revised in a future CL. Original commit message: Previously, it was not possible to specify StackSlotOperands for all slots in both the caller and callee stacks. Specifically, the region of the callee's stack including the saved return address, frame pointer, function pointer and context pointer could not be addressed by the register allocator/gap resolver. In preparation for better tail call support, which will use the gap resolver to reconcile outgoing parameters, this change makes it possible to address all slots on the stack, because slots in the previously inaccessible dead zone may become parameter slots for outgoing tail calls. All caller stack slots are accessible as they were before, with slot -1 corresponding to the last stack parameter. Stack slot indices >= 0 access the callee stack, with slot 0 corresponding to the callee's saved return address, 1 corresponding to the saved frame pointer, 2 corresponding to the current function context, 3 corresponding to the frame marker/JSFunction, and slots 4 and above corresponding to spill slots. The following changes were specifically needed: * Frame has been changed to explicitly manage three areas of the callee frame, the fixed header, the spill slot area, and the callee-saved register area. * Conversions from stack slot indices to fp offsets all now go through a common bottleneck: OptimizedFrame::StackSlotOffsetRelativeToFp * The generation of deoptimization translation tables has been changed to support the new stack slot indexing scheme. Crankshaft, which doesn't support the new slot numbering in its register allocator, must adapt the indexes when creating translation tables. * Callee-saved parameters are now kept below spill slots, not above, to support saving only the optimal set of used registers, which is only known after register allocation is finished and spill slots have been allocated. R=danno@chromium.org, titzer@chromium.org, jyan@ca.ibm.com, dstence@us.ibm.com, joransiu@ca.ibm.com BUG= Committed: https://crrev.com/4187035087b54d0a880c9baf88f371fc0dff2d04 Cr-Commit-Position: refs/heads/master@{#30396}

Patch Set 1 #

Unified diffs Side-by-side diffs Delta from patch set Stats (+62 lines, -51 lines) Patch
M src/compiler/ppc/code-generator-ppc.cc View 3 chunks +50 lines, -47 lines 0 comments Download
M src/ppc/lithium-codegen-ppc.cc View 1 chunk +12 lines, -4 lines 0 comments Download

Messages

Total messages: 6 (1 generated)
MTBrandyberry
5 years, 3 months ago (2015-08-26 20:26:59 UTC) #1
titzer
lgtm
5 years, 3 months ago (2015-08-26 20:38:22 UTC) #2
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1321553002/1 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1321553002/1
5 years, 3 months ago (2015-08-26 21:06:46 UTC) #4
commit-bot: I haz the power
Committed patchset #1 (id:1)
5 years, 3 months ago (2015-08-26 21:29:28 UTC) #5
commit-bot: I haz the power
5 years, 3 months ago (2015-08-26 21:29:48 UTC) #6
Message was sent while issue was closed.
Patchset 1 (id:??) landed as
https://crrev.com/4187035087b54d0a880c9baf88f371fc0dff2d04
Cr-Commit-Position: refs/heads/master@{#30396}

Powered by Google App Engine
This is Rietveld 408576698