• sgjesse@chromium.org's avatar
    Fixed the step in handling for function.apply. · a74fcf45
    sgjesse@chromium.org authored
    The generic step-in mechanism floods the function called with break points to ensure a break is hit when entering the function. This generic mechanism was also used for function.apply. The code for function.apply contains a keyed load IC which was patched when stepping into function.apply. However function.apply enteres an internal frame not a JavaScript frame. This caused the logic for returning from the break in function.apply to fail as it forced a jump to the IC on the top JavaScript frame. The top JavaScript frame was the frame for the function calling function.apply not the frame for the apply function. Now returning from the break point in the keyed load IC in the apply code caused a jump to the code for the call IC for the function calling function.apply in the first place. Not a pretty sight.
    
    Step-in now handles function.apply as a separate case where the actual JavaScript function called through apply is flodded with breakpoints instead of the function.apply function.
    
    BUG=269
    BUG=8210@chromium.org
    Review URL: http://codereview.chromium.org/63055
    
    git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1683 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
    a74fcf45
Name
Last commit
Last update
..
bugs Loading commit data...
regress Loading commit data...
api-call-after-bypassed-exception.js Loading commit data...
apply.js Loading commit data...
arguments-call-apply.js Loading commit data...
arguments-enum.js Loading commit data...
arguments-indirect.js Loading commit data...
arguments-opt.js Loading commit data...
arguments.js Loading commit data...
array-concat.js Loading commit data...
array-functions-prototype.js Loading commit data...
array-indexing.js Loading commit data...
array-iteration.js Loading commit data...
array-join.js Loading commit data...
array-length-number-conversion.js Loading commit data...
array-length.js Loading commit data...
array-sort.js Loading commit data...
array-splice-webkit.js Loading commit data...
array-splice.js Loading commit data...
ascii-regexp-subject.js Loading commit data...
big-array-literal.js Loading commit data...
big-object-literal.js Loading commit data...
binary-operation-overwrite.js Loading commit data...
body-not-visible.js Loading commit data...
call-non-function-call.js Loading commit data...
call-non-function.js Loading commit data...
call.js Loading commit data...
char-escape.js Loading commit data...
class-of-builtins.js Loading commit data...
closure.js Loading commit data...
compare-nan.js Loading commit data...
const-eval-init.js Loading commit data...
const-redecl.js Loading commit data...
const.js Loading commit data...
constant-folding.js Loading commit data...
context-variable-assignments.js Loading commit data...
cyclic-array-to-string.js Loading commit data...
d8-os.js Loading commit data...
date-parse.js Loading commit data...
date.js Loading commit data...
debug-backtrace-text.js Loading commit data...
debug-backtrace.js Loading commit data...
debug-breakpoints.js Loading commit data...
debug-changebreakpoint.js Loading commit data...
debug-clearbreakpoint.js Loading commit data...
debug-compile-event.js Loading commit data...
debug-conditional-breakpoints.js Loading commit data...
debug-constructed-by.js Loading commit data...
debug-constructor.js Loading commit data...
debug-continue.js Loading commit data...
debug-enable-disable-breakpoints.js Loading commit data...
debug-evaluate-arguments.js Loading commit data...
debug-evaluate-locals.js Loading commit data...
debug-evaluate-recursive.js Loading commit data...
debug-evaluate-with.js Loading commit data...
debug-evaluate.js Loading commit data...
debug-event-listener.js Loading commit data...
debug-handle.js Loading commit data...
debug-ignore-breakpoints.js Loading commit data...
debug-mirror-cache.js Loading commit data...
debug-multiple-breakpoints.js Loading commit data...
debug-referenced-by.js Loading commit data...
debug-references.js Loading commit data...
debug-script-breakpoints.js Loading commit data...
debug-script.js Loading commit data...
debug-scripts-request.js Loading commit data...
debug-setbreakpoint.js Loading commit data...
debug-sourceinfo.js Loading commit data...
debug-sourceslice.js Loading commit data...
debug-step-stub-callfunction.js Loading commit data...
debug-step.js Loading commit data...
debug-stepin-constructor.js Loading commit data...
declare-locally.js Loading commit data...
deep-recursion.js Loading commit data...
delay-syntax-error.js Loading commit data...
delete-global-properties.js Loading commit data...
delete-in-eval.js Loading commit data...
delete-in-with.js Loading commit data...
delete-vars-from-eval.js Loading commit data...
delete.js Loading commit data...
do-not-strip-fc.js Loading commit data...
dont-enum-array-holes.js Loading commit data...
dont-reinit-global-var.js Loading commit data...
double-equals.js Loading commit data...
dtoa.js Loading commit data...
enumeration-order.js Loading commit data...
error-constructors.js Loading commit data...
escape.js Loading commit data...
eval-typeof-non-existing.js Loading commit data...
eval.js Loading commit data...
execScript-case-insensitive.js Loading commit data...
extra-arguments.js Loading commit data...
extra-commas.js Loading commit data...
for-in-null-or-undefined.js Loading commit data...
for-in-special-cases.js Loading commit data...
for-in.js Loading commit data...
fun-as-prototype.js Loading commit data...
fun-name.js Loading commit data...
function-arguments-null.js Loading commit data...
function-caller.js Loading commit data...
function-names.js Loading commit data...
function-property.js Loading commit data...
function-prototype.js Loading commit data...
function-source.js Loading commit data...
function.js Loading commit data...
fuzz-accessors.js Loading commit data...
fuzz-natives.js Loading commit data...
getter-in-prototype.js Loading commit data...
getter-in-value-prototype.js Loading commit data...
global-const-var-conflicts.js Loading commit data...
global-load-from-eval-in-with.js Loading commit data...
global-load-from-eval.js Loading commit data...
global-load-from-nested-eval.js Loading commit data...
global-vars-eval.js Loading commit data...
global-vars-with.js Loading commit data...
greedy.js Loading commit data...
has-own-property.js Loading commit data...
html-comments.js Loading commit data...
html-string-funcs.js Loading commit data...
if-in-undefined.js Loading commit data...
in.js Loading commit data...
indexed-accessors.js Loading commit data...
instanceof.js Loading commit data...
integer-to-string.js Loading commit data...
invalid-lhs.js Loading commit data...
keyed-ic.js Loading commit data...
keyed-storage-extend.js Loading commit data...
large-object-allocation.js Loading commit data...
large-object-literal.js Loading commit data...
lazy-load.js Loading commit data...
leakcheck.js Loading commit data...
length.js Loading commit data...
local-load-from-eval.js Loading commit data...
math-min-max.js Loading commit data...
megamorphic-callbacks.js Loading commit data...
mirror-array.js Loading commit data...
mirror-boolean.js Loading commit data...
mirror-date.js Loading commit data...
mirror-error.js Loading commit data...
mirror-function.js Loading commit data...
mirror-null.js Loading commit data...
mirror-number.js Loading commit data...
mirror-object.js Loading commit data...
mirror-regexp.js Loading commit data...
mirror-script.js Loading commit data...
mirror-string.js Loading commit data...
mirror-undefined.js Loading commit data...
mirror-unresolved-function.js Loading commit data...
mjsunit.js Loading commit data...
mjsunit.status Loading commit data...
mul-exhaustive.js Loading commit data...
multiple-return.js Loading commit data...
negate-zero.js Loading commit data...
negate.js Loading commit data...
new.js Loading commit data...
newline-in-string.js Loading commit data...
no-branch-elimination.js Loading commit data...
no-octal-constants-above-256.js Loading commit data...
no-semicolon.js Loading commit data...
non-ascii-replace.js Loading commit data...
nul-characters.js Loading commit data...
number-limits.js Loading commit data...
number-string-index-call.js Loading commit data...
number-tostring-small.js Loading commit data...
number-tostring.js Loading commit data...
obj-construct.js Loading commit data...
object-literal-gc.js Loading commit data...
object-literal.js Loading commit data...
parse-int-float.js Loading commit data...
property-load-across-eval.js Loading commit data...
property-object-key.js Loading commit data...
proto.js Loading commit data...
prototype.js Loading commit data...
regexp-UC16.js Loading commit data...
regexp-capture.js Loading commit data...
regexp-indexof.js Loading commit data...
regexp-lookahead.js Loading commit data...
regexp-loop-capture.js Loading commit data...
regexp-multiline-stack-trace.js Loading commit data...
regexp-multiline.js Loading commit data...
regexp-pcre.js Loading commit data...
regexp-standalones.js Loading commit data...
regexp-static.js Loading commit data...
regexp-string-methods.js Loading commit data...
regexp.js Loading commit data...
scanner.js Loading commit data...
short-circuit-boolean.js Loading commit data...
smi-negative-zero.js Loading commit data...
smi-ops.js Loading commit data...
sparse-array-reverse.js Loading commit data...
sparse-array.js Loading commit data...
str-to-num.js Loading commit data...
stress-array-push.js Loading commit data...
strict-equals.js Loading commit data...
string-add.js Loading commit data...
string-case.js Loading commit data...
string-charat.js Loading commit data...
string-charcodeat.js Loading commit data...
string-compare-alignment.js Loading commit data...
string-flatten.js Loading commit data...
string-index.js Loading commit data...
string-indexof.js Loading commit data...
string-lastindexof.js Loading commit data...
string-localecompare.js Loading commit data...
string-match.js Loading commit data...
string-replace-gc.js Loading commit data...
string-replace.js Loading commit data...
string-search.js Loading commit data...
string-split.js Loading commit data...
substr.js Loading commit data...
switch.js Loading commit data...
testcfg.py Loading commit data...
this-in-callbacks.js Loading commit data...
this.js Loading commit data...
throw-and-catch-function.js Loading commit data...
throw-exception-for-null-access.js Loading commit data...
to-precision.js Loading commit data...
tobool.js Loading commit data...
toint32.js Loading commit data...
top-level-assignments.js Loading commit data...
touint32.js Loading commit data...
try-catch-extension-object.js Loading commit data...
try-catch-scopes.js Loading commit data...
try-finally-nested.js Loading commit data...
try.js Loading commit data...
unicode-string-to-number.js Loading commit data...
unicode-test.js Loading commit data...
unusual-constructor.js Loading commit data...
uri.js Loading commit data...
value-callic-prototype-change.js Loading commit data...
var.js Loading commit data...
with-function-expression.js Loading commit data...
with-leave.js Loading commit data...
with-parameter-access.js Loading commit data...
with-prototype.js Loading commit data...
with-value.js Loading commit data...