v8/test/mjsunit
Georg Neis 57512786a4 [turbofan] Install code dependencies atomically.
Split the Install methods into PrepareInstall and Install, such that
all heap mutations (besides the actual installation) are done in
PrepareInstall and only the actual installation in Install. This
ensures that the code object in question doesn't get deoptimized while
we're still installing its dependencies.

Bug: chromium:903697
Change-Id: I4da97d89d0707fa3c00c97c092af0d0faa7a4946
Reviewed-on: https://chromium-review.googlesource.com/c/1329162
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57419}
2018-11-12 08:27:51 +00:00
..
asm
async-hooks
bugs
compiler
d8
es6
es7
es8
es9
harmony
ignition
lithium
regress
third_party
tools
type-profile
wasm
accessor-map-sharing.js
accessors-no-prototype.js
accessors-on-global-object.js
allocation-folding.js
allocation-site-info.js
api-call-after-bypassed-exception.js
apply-arguments-gc-safepoint.js
apply.js
argument-assigned.js
argument-named-arguments.js
arguments-apply-deopt.js
arguments-apply.js
arguments-call-apply.js
arguments-deopt.js
arguments-enum.js
arguments-escape.js
arguments-indirect.js
arguments-lazy.js
arguments-load-across-eval.js
arguments-read-and-assignment.js
arguments.js
array-bounds-check-removal.js
array-concat.js
array-construct-transition.js
array-constructor-feedback.js
array-constructor.js
array-elements-from-array-prototype-chain.js
array-elements-from-array-prototype.js
array-elements-from-object-prototype.js
array-feedback.js
array-foreach.js
array-from-large-set.js
array-functions-prototype-misc.js
array-functions-prototype.js
array-indexing-receiver.js
array-indexing.js
array-isarray.js
array-iteration.js
array-iterator-prototype-next.js
array-join-element-tostring-prototype-side-effects.js
array-join-element-tostring-side-effects.js
array-join-index-getter-side-effects.js
array-join-invalid-string-length.js
array-join-nesting.js
array-join-nonarray-length-getter-side-effects.js
array-join-separator-tostring-side-effects.js
array-join.js
array-lastindexof.js
array-length-number-conversion.js
array-length.js
array-literal-feedback.js
array-literal-transitions.js
array-methods-read-only-length.js
array-natives-elements.js
array-non-smi-length.js
array-pop.js
array-prototype-every.js
array-prototype-filter.js
array-prototype-find.js
array-prototype-findindex.js
array-prototype-foreach.js
array-prototype-includes.js
array-prototype-indexof.js
array-prototype-lastindexof.js
array-prototype-map.js
array-prototype-pop.js
array-prototype-reduce.js
array-prototype-slice.js
array-prototype-some.js
array-push2.js
array-push3.js
array-push4.js
array-push5.js
array-push6.js
array-push8.js
array-push9.js
array-push10.js
array-push11.js
array-push12.js
array-push13.js
array-push14.js
array-push-hole-double.js
array-push-non-smi-value.js
array-push.js
array-reduce.js
array-reverse.js
array-shift2.js
array-shift3.js
array-shift4.js
array-shift5.js
array-shift.js
array-slice.js
array-sort.js
array-splice.js
array-store-and-grow.js
array-tolocalestring.js
array-tostring.js
array-unshift.js
arrow-with.js
ascii-regexp-subject.js
asm-directive.js
async-stack-traces-prepare-stacktrace-1.js
async-stack-traces-prepare-stacktrace-2.js
async-stack-traces-prepare-stacktrace-3.js
async-stack-traces-prepare-stacktrace-4.js
async-stack-traces-promise-all.js
async-stack-traces.js
basic-promise.js
big-array-literal.js
big-object-literal.js
binary-op-newspace.js
binary-operation-overwrite.js
bit-not.js
bitops-info.js
bitwise-operations-bools.js
bitwise-operations-undefined.js
body-not-visible.js
bool-concat.js
boolean.js
bounds-checks-elimination.js
break.js
BUILD.gn
call-cross-realm.js
call-intrinsic-type-error.js
call-non-function-call.js
call-non-function.js
call-stub.js
call.js
char-escape.js
class-of-builtins.js
closure.js
closures.js
code-comments.js
code-coverage-ad-hoc.js
code-coverage-block-noopt.js
code-coverage-block-opt.js
code-coverage-block.js
code-coverage-class-fields.js
code-coverage-precise.js
code-coverage-utils.js
codegen-coverage.js
compare-character.js
compare-known-objects-slow.js
compare-known-objects-tostringtag.js
compare-known-objects.js
compare-nan.js
compare-nil.js
compare-objects.js
compare-table-eq.js
compare-table-gt.js
compare-table-gteq.js
compare-table-lt.js
compare-table-lteq.js
compare-table-ne.js
compare-table-seq.js
compare-table-sne.js
comparison-ops-and-undefined.js
compiler-regress-787301.js
concurrent-initial-prototype-change.js
console.js
const-field-tracking.js
constant-compare-nil-value.js
constant-fold-control-instructions.js
constant-folding-2.js
constant-folding.js
context-calls-maintained.js
context-variable-assignments.js
contextual-calls.js
copy-on-write-assert.js
cross-realm-filtering.js
cross-realm-global-prototype.js
cyclic-array-to-string.js
cyrillic.js
date-parse.js
date.js
debugPrint.js
declare-locally.js
deep-recursion.js
default-nospec.js
define-property-gc.js
dehoisted-array-index.js
delay-syntax-error.js
delete-global-properties.js
delete-in-eval.js
delete-in-with.js
delete-non-configurable.js
delete-vars-from-eval.js
delete.js
deopt-global-accessor.js
deopt-minus-zero.js
deopt-recursive-eager-once.js
deopt-recursive-lazy-once.js
deopt-recursive-soft-once.js
deopt-unlinked.js
deopt-with-fp-regs.js
deopt-with-outer-context.js
deserialize-optimize-inner.js
deserialize-reference.js
dictionary-properties.js
dictionary-prototypes.js
disallow-codegen-from-strings.js
div-mod.js
div-mul-minus-one.js
do-not-strip-fc.js
dont-enum-array-holes.js
dont-reinit-global-var.js
double-equals.js
double-truncation.js
dtoa.js
duplicate-parameters.js
eagerly-parsed-lazily-compiled-functions.js
element-accessor.js
element-read-only.js
elements-kind-depends.js
elements-kind.js
elements-length-no-holey.js
elements-transition-and-store.js
elements-transition-hoisting.js
elements-transition.js
elide-double-hole-check-1.js
elide-double-hole-check-2.js
elide-double-hole-check-3.js
elide-double-hole-check-4.js
elide-double-hole-check-5.js
elide-double-hole-check-6.js
elide-double-hole-check-7.js
elide-double-hole-check-8.js
elide-double-hole-check-9.js
elide-double-hole-check-10.js
elide-double-hole-check-11.js
elide-double-hole-check-12.js
empirical_max_arraybuffer.js
ensure-growing-store-learns.js
enumeration-order.js
error-accessors.js
error-constructors.js
error-tostring-omit.js
error-tostring.js
escape.js
eval-enclosing-function-name.js
eval-origin.js
eval-stack-trace.js
eval-typeof-non-existing.js
eval.js
external-array.js
external-backing-store-gc.js
extra-arguments.js
extra-commas.js
fast-array-length.js
fast-element-smi-check.js
fast-literal.js
fast-non-keyed.js
fast-prototype.js
field-type-tracking.js
filter-element-kinds.js
fixed-context-shapes-when-recompiling.js
for-in-delete.js
for-in-null-or-undefined.js
for-in-special-cases.js
for-in.js
for.js
fun-as-prototype.js
fun-name.js
function-arguments-duplicate.js
function-arguments-null.js
function-bind-name.js
function-bind.js
function-call.js
function-caller.js
function-length-accessor.js
function-name-eval-shadowed.js
function-named-self-reference.js
function-names.js
function-property.js
function-prototype.js
function-var.js
function-without-prototype.js
function.js
fuzz-accessors.js
generated-transition-stub.js
get-own-property-descriptor-non-objects.js
get-own-property-descriptor.js
get-prototype-of.js
getter-in-prototype.js
getter-in-value-prototype.js
getters-on-elements.js
global-accessors.js
global-arrow-delete-this.js
global-deleted-property-ic.js
global-hash.js
global-ic.js
global-infinity-strict.js
global-infinity.js
global-load-from-eval-in-with.js
global-load-from-eval.js
global-load-from-nested-eval.js
global-nan-strict.js
global-nan.js
global-properties.js
global-prototypes.js
global-undefined-strict.js
global-undefined.js
global-vars-eval.js
global-vars-with.js
handle-count-ast.js
handle-count-runtime-literals.js
has-own-property-evaluation-order.js
has-own-property.js
hash-code.js
heapObjectVerify.js
hex-parsing.js
holy-double-no-arg-array.js
html-comments.js
html-string-funcs.js
ic-lookup-on-receiver.js
icu-date-lord-howe.js
icu-date-to-string.js
if-in-undefined.js
immutable-context-slot-inlining.js
in.js
indexed-accessors.js
indexed-value-properties.js
induction-variable-turbofan.js
instanceof-2.js
instanceof.js
int32-ops.js
integer-to-string.js
intl-numberformat-formattoparts.js
intl-pluralrules-select.js
invalid-lhs.js
invalid-source-element.js
json2.js
json-errors.js
json-parser-recursive.js
json-replacer-number-wrapper-tostring.js
json-replacer-order.js
json-stringify-holder.js
json-stringify-recursive.js
json-stringify-stack.js
json.js
keyed-array-call.js
keyed-call-generic.js
keyed-call-ic.js
keyed-ic.js
keyed-load-dictionary-stub.js
keyed-load-generic.js
keyed-load-hole-to-undefined.js
keyed-load-with-string-key.js
keyed-load-with-symbol-key.js
keyed-named-access.js
keyed-storage-extend.js
keyed-store-array-literal.js
keyed-store-generic.js
keywords-and-reserved_words.js
large-object-allocation.js
large-object-literal-2.js
large-object-literal-slow-elements.js
large-object-literal.js
lazy-inner-functions.js
lazy-load.js
lea-add.js
leakcheck.js
length.js
linecontinuation.js
load_poly_effect.js
load-callback-from-value-classic.js
local-load-from-eval.js
logical.js
lookup-behind-property.js
math-abs.js
math-ceil.js
math-deopt.js
math-exp-precision.js
math-floor-negative.js
math-floor-of-div-minus-zero.js
math-floor-of-div-nosudiv.js
math-floor-of-div.js
math-floor-part1.js
math-floor-part2.js
math-floor-part3.js
math-floor-part4.js
math-imul.js
math-min-max.js
math-pow.js
math-round.js
math-sqrt.js
md5.js
megamorphic-callbacks.js
messages.js
migrations.js
mjsunit_suppressions.js
mjsunit-assertion-error.js
mjsunit.js
mjsunit.status
mod-range.js
mod.js
modules-circular-valid.js
modules-cycle.js
modules-default-name1.js
modules-default-name2.js
modules-default-name3.js
modules-default-name4.js
modules-default-name5.js
modules-default-name6.js
modules-default-name7.js
modules-default-name8.js
modules-default-name9.js
modules-default.js
modules-empty-import1.js
modules-empty-import2.js
modules-empty-import3.js
modules-empty-import4.js
modules-error-trace.js
modules-export-star-as1.js
modules-export-star-as2.js
modules-export-star-as3.js
modules-exports1.js
modules-exports2.js
modules-exports3.js
modules-imports1.js
modules-imports2.js
modules-imports3.js
modules-imports4.js
modules-imports5.js
modules-imports6.js
modules-imports7.js
modules-imports8.js
modules-init1.js
modules-init2.js
modules-init3.js
modules-init4.js
modules-namespace1.js
modules-namespace2.js
modules-namespace3.js
modules-namespace4.js
modules-namespace-getownproperty1.js
modules-namespace-getownproperty2.js
modules-preparse.js
modules-relative-path.js
modules-skip-1.js
modules-skip-2.js
modules-skip-3.js
modules-skip-4.js
modules-skip-5.js
modules-skip-6.js
modules-skip-7.js
modules-skip-8.js
modules-skip-9.js
modules-skip-circular-valid.js
modules-skip-cycle.js
modules-skip-default-name1.js
modules-skip-default-name2.js
modules-skip-default-name3.js
modules-skip-default-name4.js
modules-skip-default-name5.js
modules-skip-default-name6.js
modules-skip-default-name7.js
modules-skip-default-name8.js
modules-skip-default-name9.js
modules-skip-empty-import-aux.js
modules-skip-empty-import.js
modules-skip-init1.js
modules-skip-init3.js
modules-skip-init4a.js
modules-skip-init4b.js
modules-skip-namespace.js
modules-skip-star-exports-conflict.js
modules-skip-star-exports-cycle.js
modules-star-exports-cycle.js
modules-this.js
modules-turbo1.js
modules-turbo2.js
mul-exhaustive-part1.js
mul-exhaustive-part2.js
mul-exhaustive-part3.js
mul-exhaustive-part4.js
mul-exhaustive-part5.js
mul-exhaustive-part6.js
mul-exhaustive-part7.js
mul-exhaustive-part8.js
mul-exhaustive-part9.js
mul-exhaustive-part10.js
multiline.js
multiple-return.js
nans.js
negate-zero.js
negate.js
neuter-twice.js
never-optimize.js
new-function.js
new.js
newline-in-string.js
no-branch-elimination.js
no-octal-constants-above-256.js
no-semicolon.js
non-ascii-replace.js
noopt.js
not.js
nul-characters.js
number-is.js
number-isnan-opt.js
number-limits.js
number-literal.js
number-string-index-call.js
number-tostring-add.js
number-tostring-big-integer.js
number-tostring-func.js
number-tostring-small.js
number-tostring.js
numops-fuzz-part1.js
numops-fuzz-part2.js
numops-fuzz-part3.js
numops-fuzz-part4.js
obj-construct.js
object-create.js
object-define-properties.js
object-define-property.js
object-freeze-global.js
object-freeze.js
object-get-own-property-names.js
object-is.js
object-keys.js
object-literal-conversions.js
object-literal-gc.js
object-literal-modified-object-prototype.js
object-literal-multiple-fields.js
object-literal-multiple-proto-fields.js
object-literal-overwrite.js
object-literal.js
object-prevent-extensions.js
object-seal-global.js
object-seal.js
object-toprimitive.js
omit-constant-mapcheck.js
opt-elements-kind.js
optimized-array-every.js
optimized-array-find.js
optimized-array-findindex.js
optimized-array-some.js
optimized-filter.js
optimized-foreach-holey-2.js
optimized-foreach-holey-3.js
optimized-foreach-holey.js
optimized-foreach-polymorph.js
optimized-foreach.js
optimized-map.js
optimized-reduce.js
optimized-reduceright.js
optimized-typeof.js
osr-elements-kind.js
outobject-double-for-in.js
override-read-only-property.js
packed-elements.js
parallel-compile-tasks.js
parallel-optimize-disabled.js
parse-int-float.js
parse-surrogates.js
pixel-array-rounding.js
polymorph-arrays.js
preparse-toplevel-strict-eval.js
primitive-keyed-access.js
print.js
property-load-across-eval.js
property-name-eval-arguments.js
property-object-key.js
proto-accessor.js
proto-elements-add-during-foreach.js
proto.js
prototype-changes.js
prototype-non-existing.js
prototype.js
random-bit-correlations.js
readonly-accessor.js
readonly.js
realm-property-access.js
receiver-in-with-calls.js
recursive-store-opt.js
regexp-cache-replace.js
regexp-call-as-function.js
regexp-capture-3.js
regexp-capture.js
regexp-captures.js
regexp-compile.js
regexp-global.js
regexp-indexof.js
regexp-lastIndex.js
regexp-lookahead.js
regexp-loop-capture.js
regexp-modifiers-autogenerated-i18n.js
regexp-modifiers-autogenerated.js
regexp-modifiers-dotall.js
regexp-modifiers-i18n.js
regexp-modifiers.js
regexp-multiline.js
regexp-regexpexec.js
regexp-results-cache.js
regexp-sort.js
regexp-stack-overflow.js
regexp-standalones.js
regexp-static.js
regexp-string-methods.js
regexp-UC16.js
regexp.js
result-table-max.js
result-table-min.js
samevalue.js
scanner.js
scope-calls-eval.js
search-string-multiple.js
serialize-after-execute.js
serialize-embedded-error.js
serialize-ic.js
setter-on-constructor-prototype.js
setters-on-elements.js
shared-function-tier-up-turbo.js
shift-for-integer-div.js
shifts.js
short-circuit-boolean.js
simple-constructor.js
sin-cos.js
skipping-inner-functions-bailout.js
skipping-inner-functions.js
smi-mul-const.js
smi-mul.js
smi-negative-zero.js
smi-ops-inlined.js
smi-ops.js
smi-representation.js
sparse-array.js
splice-proxy.js
spread-large-array.js
spread-large-map.js
spread-large-set.js
spread-large-string.js
stack-overflow-arity-catch-noinline.js
stack-traces-2.js
stack-traces-class-fields.js
stack-traces-custom-lazy.js
stack-traces-custom.js
stack-traces-overflow.js
stack-traces.js
store-dictionary.js
str-to-num.js
stress-array-push.js
strict-equals.js
strict-mode-eval.js
strict-mode-implicit-receiver.js
strict-mode-opt.js
strict-mode.js
string-add.js
string-case.js
string-charat.js
string-charcodeat-external.js
string-charcodeat.js
string-compare-alignment.js
string-concat.js
string-deopt.js
string-equal.js
string-external-cached.js
string-externalize.js
string-flatten.js
string-fromcharcode.js
string-index.js
string-indexof-1.js
string-indexof-2.js
string-lastindexof.js
string-localecompare.js
string-match.js
string-normalize.js
string-oom-array-join.js
string-oom-concat.js
string-oom-replace-global-regexp-with-string.js
string-oom-replace-regexp-global-with-function.js
string-pad.js
string-replace-gc.js
string-replace-one-char.js
string-replace-with-empty.js
string-replace.js
string-search.js
string-slices-regexp.js
string-slices.js
string-split-cache.js
string-split.js
string-trim.js
string-wrapper.js
strong-rooted-literals.js
substr.js
sum-0-plus-undefined-is-NaN.js
switch-opt.js
switch.js
test-async.js
test-builtins-setup.js
testcfg.py
thin-strings.js
this-dynamic-lookup.js
this-in-callbacks.js
this-property-assignment.js
this.js
throw-and-catch-function.js
throw-exception-for-null-access.js
to_number_order.js
to-precision.js
tobool.js
toint32.js
top-level-assignments.js
touint32.js
track-fields.js
transcendentals.js
transition-elements-kind.js
try-catch-extension-object.js
try-catch-scopes.js
try-finally-continue.js
try-finally-nested.js
try.js
typed-array-slice.js
typeof.js
tzoffset-seoul-noi18n.js
tzoffset-seoul.js
tzoffset-transition-apia.js
tzoffset-transition-lord-howe.js
tzoffset-transition-moscow.js
tzoffset-transition-new-york-noi18n.js
tzoffset-transition-new-york.js
unary-minus-deopt.js
unbox-double-arrays.js
unbox-double-field-indexed.js
unbox-double-field.js
unbox-smi-field-indexed.js
unbox-smi-field.js
undeletable-functions.js
undetectable-compare.js
undetectable.js
unicode-case-overoptimization.js
unicode-string-to-number.js
unicode-test.js
unicodelctest-no-optimization.js
unicodelctest.js
unused-context-in-with.js
unusual-constructor.js
uri.js
value-callic-prototype-change.js
value-of.js
value-wrapper-accessor.js
value-wrapper.js
var.js
verify-assert-false.js
verify-check-false.js
whitespaces0.js
whitespaces1.js
whitespaces2.js
whitespaces3.js
whitespaces4.js
whitespaces5.js
whitespaces6.js
whitespaces7.js
whitespaces8.js
whitespaces9.js
whitespaces.js
with-function-expression.js
with-leave.js
with-parameter-access.js
with-prototype.js
with-readonly.js
with-value.js