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

Issue 192513002: Checking for stack height equality between full codegen and hydrogen. (Closed)

Created:
6 years, 9 months ago by Jarin
Modified:
3 years, 5 months ago
Reviewers:
Jakob Kummerow
CC:
v8-dev, Michael Starzinger
Visibility:
Public.

Description

Checking for stack height equality between full codegen and hydrogen. This comes in two flavors: 1. In debug mode (defining COMPARE_OPT_STACK_HEIGHT), we keep track of stack height during full codegen an record the stack height at bailout points. The recorded stack height is then compared to hydrogen stack height whenever we create a HSimulate instruction. 2. There is also a verification of the stack height calculation in full codegen. This verification is only performed when built with the verifystackheight=on option. This verification inserts a sequence of instructions checking that EBP - ESP is what we think it is at every bailout point. To make this work, I had to fix a couple of stack height mismatches around inlining. First, we used to visit the return statement of an inlined function in effect context if the call-site was in effect context. This caused mismatch in stack height just before we return from the function. This should be benign (because the stack pointer is about to be restored), but this change fixes it for consistency. Second, there are fake simulates (never used for a real deopt, only to calculate inlined environments) before entering inlined functions. These are off by the number of arguments. For these, the stack height check takes the number of arguments as a parameter checking we match up to the number of arguments. BUG=

Patch Set 1 #

Patch Set 2 : Cleanup #

Patch Set 3 : Rebase + fix of stack height when handling errors in fullcodegen #

Patch Set 4 : Rebase to 20368 #

Patch Set 5 : Rebase #

Unified diffs Side-by-side diffs Delta from patch set Stats (+705 lines, -340 lines) Patch
M Makefile View 1 2 3 4 1 chunk +4 lines, -0 lines 0 comments Download
M build/features.gypi View 1 2 3 4 2 chunks +5 lines, -0 lines 0 comments Download
M src/deoptimizer.h View 1 2 3 4 1 chunk +9 lines, -0 lines 0 comments Download
M src/deoptimizer.cc View 1 2 3 4 2 chunks +26 lines, -4 lines 0 comments Download
M src/full-codegen.h View 1 2 3 4 5 chunks +120 lines, -0 lines 0 comments Download
M src/full-codegen.cc View 1 2 3 4 37 chunks +84 lines, -56 lines 0 comments Download
M src/hydrogen.h View 1 2 3 4 5 chunks +12 lines, -9 lines 0 comments Download
M src/hydrogen.cc View 1 2 3 4 10 chunks +67 lines, -9 lines 0 comments Download
M src/ia32/full-codegen-ia32.cc View 1 2 3 4 116 chunks +315 lines, -252 lines 0 comments Download
M src/objects.h View 1 2 3 4 2 chunks +37 lines, -7 lines 0 comments Download
M src/objects.cc View 1 2 3 4 3 chunks +24 lines, -1 line 0 comments Download
M src/objects-inl.h View 1 2 3 4 1 chunk +2 lines, -2 lines 0 comments Download

Messages

Total messages: 1 (0 generated)
Jarin
6 years, 9 months ago (2014-03-25 20:49:13 UTC) #1

          

Powered by Google App Engine
This is Rietveld 408576698