This is an adaptation of test-profile-generator/BailoutReason to when
try-catch statements are optimizable. They will no longer cause any
bailout reason to be reported.
R=yangguo@chromium.org
TEST=cctest/test-profile-generator/BailoutReason
Review URL: https://codereview.chromium.org/1213113007
Cr-Commit-Position: refs/heads/master@{#29440}
The only right way to enable access checks is to install access check callbacks on an object template via v8::ObjectTemplate::SetAccessCheckCallbacks(). It does not make sense to enable access checks on an arbitrary object.
Review URL: https://codereview.chromium.org/1217893012
Cr-Commit-Position: refs/heads/master@{#29439}
Clang warns if there are missing braces around a subobject
initializer. The most common idiom that triggers this is:
STRUCT s = {0};
if the first field of STRUCT is itself a struct. This can
be more simply written as:
STRUCT s = {};
which also prevents the warning from firing.
BUG=chromium:505297
LOG=n
Review URL: https://codereview.chromium.org/1219233003
Cr-Commit-Position: refs/heads/master@{#29437}
This involves:
- Enabling the tail call optimization reducer in all cases.
- Adding an addition flag to CallFunctionParameters to mark call sites
that can be tail-called enabled.
- Only set the tail-call flag for %_CallFunction.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/1216933011
Cr-Commit-Position: refs/heads/master@{#29436}
Support 32-bit cmp with shift/extend by reusing the existing add/sub shift and
extend code.
Review URL: https://codereview.chromium.org/1218103005
Cr-Commit-Position: refs/heads/master@{#29435}
port 7281f80151 (r29384)
Fix a bug in R29384.
original commit message:
Revert "Revert relanded strong property access CL"
Regression issues should be solved. Initial patchset is the original, subsequent patchsets are the fixing modifications.
This reverts commit 4ac7be5656.
BUG=
Review URL: https://codereview.chromium.org/1210873007
Cr-Commit-Position: refs/heads/master@{#29434}
port 7015fd2053 (r29402)
original commit message:
Up until now the context register was listed explicitly in each stub's
CallInterfaceDescriptor. This was problematic, because it was listed
first in the list of register parameters--which is fine for Crankshaft,
which is more or less built to handle the context as the first
parameter-- but not ideal for TurboFan, which adds the context at
the end of all function parameters. Now the context register is no
longer in the register list and can be handled appropriately by both
compilers. Specifically, this allows the FunctionType specified for
each CallInterfaceDescriptor to exactly match the parameter register
list.
BUG=
Review URL: https://codereview.chromium.org/1216543004
Cr-Commit-Position: refs/heads/master@{#29433}
port b4275a70eb (r29378)
original commit message:
This change makes possible to save and restore the FP registers
in the Prologue and Return parts for the CallAddress kind functions.
BUG=
Review URL: https://codereview.chromium.org/1214573006
Cr-Commit-Position: refs/heads/master@{#29432}
Conditionally including Array and TypedArray methods seems to cause
a slowdown in V8 context creation, possibly due to the new code added.
BUG=chromium:504629
R=adamk@chromium.org
LOG=Y
Review URL: https://codereview.chromium.org/1215863003
Cr-Commit-Position: refs/heads/master@{#29430}
This was added in https://chromium.googlesource.com/v8/v8/+/4a709dd65,
but the only check for it that remained in the final patch is inside
a DCHECK. It appears that the approach for checking use of class names
in methods evolved quite a bit over the review of the original patch.
Review URL: https://codereview.chromium.org/1219993002
Cr-Commit-Position: refs/heads/master@{#29428}
This is more consistent with the DOM API, and is clearer w.r.t. which values
are available in the lexical environment of the Worker.
BUG=chromium:497295
R=jarin@chromium.org
LOG=n
Review URL: https://codereview.chromium.org/1218553004
Cr-Commit-Position: refs/heads/master@{#29426}
Disabling rsqrt and recip for mips32r1 in assembler, disassembler and simulator
Review URL: https://codereview.chromium.org/1221663006
Cr-Commit-Position: refs/heads/master@{#29425}
Checking for native context is faster than checking for global object. Additionally it speeds up the case were it actually is the native context, while not slowing down the alternative case. The bootstrapper only needs to access the native context from the native context, so this avoids the expensive fallback.
BUG=
Review URL: https://codereview.chromium.org/1214903017
Cr-Commit-Position: refs/heads/master@{#29423}
Port 7015fd2053
Original commit message:
Up until now the context register was listed explicitly in each stub's
CallInterfaceDescriptor. This was problematic, because it was listed
first in the list of register parameters--which is fine for Crankshaft,
which is more or less built to handle the context as the first
parameter-- but not ideal for TurboFan, which adds the context at
the end of all function parameters. Now the context register is no
longer in the register list and can be handled appropriately by both
compilers. Specifically, this allows the FunctionType specified for
each CallInterfaceDescriptor to exactly match the parameter register
list.
R=danno@chromium.org, dstence@us.ibm.com, michael_dawson@ca.ibm.com
BUG=
Review URL: https://codereview.chromium.org/1218463004
Cr-Commit-Position: refs/heads/master@{#29421}
This makes sure that all pointer fields in an entry in the optimized
code map are considered weak, not just the code object. If just one
field of an entry dies, then the whole entry dies.
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/1217813013
Cr-Commit-Position: refs/heads/master@{#29417}
This extends the existing support for --noflush-optimized-code-cache
mechanism to the newly added context-independent code entry in the
optimized code map. Note that this machanism is still off by default.
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/1220883002
Cr-Commit-Position: refs/heads/master@{#29415}
This change changes bootstrapping semantics for intercepted global objects. Unlike before, we'll now also call into the interceptor during bootstrapping. This affects properties loaded from within the runtime, such as global.Array and global.Symbol. The embedder will need to make sure that those values are the expected values during bootstrapping.
BUG=chromium:505998
LOG=n
Review URL: https://codereview.chromium.org/1220813005
Cr-Commit-Position: refs/heads/master@{#29414}
port 7a63bf77eb (r29358).
original commit message:
This makes new.target work in [[Call]] and [[Construct]] of ordinary
functions.
We achieve this by introducing a new construct stub for functions that
uses the new.target variable. The construct stub pushes the original
constructor just above the receiver in the construct frame.
BUG=
Review URL: https://codereview.chromium.org/1217083004
Cr-Commit-Position: refs/heads/master@{#29413}
port 876ae42598 (r29292).
original commit message:
The stack layout was different for different ports.
BUG=
Review URL: https://codereview.chromium.org/1219823002
Cr-Commit-Position: refs/heads/master@{#29412}
port 9e7af9efc5 (r29280).
original commit message:
It's useful for the megamorphic keyed store case to not require a
vector and slot as input. Analogous to the load case, we have a dummy
one-ic-slot vector to aid. Since the only kind of MISS is for
megamorphic cache stub failures, we don't need the real vector.
The reason is that megamorphic cache stub failures don't result in any
change to the type feedback vector state.
BUG=
Review URL: https://codereview.chromium.org/1212653011
Cr-Commit-Position: refs/heads/master@{#29410}
port c1a4f7477f (r29281).
original commit message:
The idea is that TurboFan can use this information for more intelligent
inlining.
BUG=
Review URL: https://codereview.chromium.org/1213723005
Cr-Commit-Position: refs/heads/master@{#29409}
port a58ba8d801 (r29279).
original commit message:
This introduces some initial building blocks for calling out to
C/C++ functions directly from TurboFan generated code objects.
BUG=
Review URL: https://codereview.chromium.org/1214903007
Cr-Commit-Position: refs/heads/master@{#29408}
This CL fixes the following situations:
1, Operands are -0.0 or 0.0. it always return right value.
1, Operands contains NaN. it always return right value.
BUG=
Review URL: https://codereview.chromium.org/1214893004
Cr-Commit-Position: refs/heads/master@{#29407}
port c019d7f498 (r29248).
original commit message:
Use big-boy Types to annotate interface descriptor parameters
- Thread Type::FunctionType through stubs and the TF pipeline.
- Augment Typer to decorate parameter nodes with types from
a Type::FunctionType associated with interface descriptors.
- Factor interface descriptors into platform-specific and
platform-independent components so that all descriptors share
a common Type::FunctionType for all platforms.
BUG=
Review URL: https://codereview.chromium.org/1210463002
Cr-Commit-Position: refs/heads/master@{#29406}
Up until now the context register was listed explicitly in each stub's
CallInterfaceDescriptor. This was problematic, because it was listed
first in the list of register parameters--which is fine for Crankshaft,
which is more or less built to handle the context as the first
parameter-- but not ideal for TurboFan, which adds the context at
the end of all function parameters. Now the context register is no
longer in the register list and can be handled appropriately by both
compilers. Specifically, this allows the FunctionType specified for
each CallInterfaceDescriptor to exactly match the parameter register
list.
Review URL: https://codereview.chromium.org/1211333003
Cr-Commit-Position: refs/heads/master@{#29402}
This operator< overload is rather dangerous for handles. And we don't
actually need a std::set in the chunk builder, since duplicates are
automatically eliminated later when the code dependencies are committed.
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/1214573004
Cr-Commit-Position: refs/heads/master@{#29401}
We now consistently ignore native and extension scripts for debugging. Only native scripts and extension scripts can disallow lazy compilation. So we can make sure that break points are only set to code that are compiled with debug break slots.
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/1216193002
Cr-Commit-Position: refs/heads/master@{#29400}
port 8196c28a94 (r29238).
original commit message:
JSConstructStub for subclass constructors instead locates new.target in
a known location on the stack.
BUG=
Review URL: https://codereview.chromium.org/1207613003
Cr-Commit-Position: refs/heads/master@{#29398}