Thanks for the comments! I uploaded new patch set.

https://codereview.chromium.org/736043002/diff/1/src/hydrogen.cc
File src/hydrogen.cc (right):

https://codereview.chromium.org/736043002/diff/1/src/hydrogen.cc#newcode9282
src/hydrogen.cc:9282: if (CanBeFunctionApplyArguments(expr, false)) {
On 2014/11/20 09:59:15, Jakob wrote:
> I don't see a good alternative right now ("expr->IsUninitialized()"
doesn't
> appear to be useful here); maybe we can find something tomorrow.

I've talked to mvstanton@, he suggested to implement something like:

bool TypeFeedbackOracle::CallIsUninitialized(FeedbackVectorICSlot
slot) {
   return GetInfo(slot)->IsUndefined();
}

which can be queried with the slot returned by Call's
CallFeedbackSlot().

Done.

https://codereview.chromium.org/736043002/diff/1/src/hydrogen.cc#newcode9282
src/hydrogen.cc:9282: if (CanBeFunctionApplyArguments(expr, false)) {
On 2014/11/19 20:46:16, Jakob wrote:
I'm not too happy with this condition. It lacks a check for not having
type
feedback. As it is, *any* call of the form "some_function(something,
arguments)"
will emit the deopt, as long as "some_function" isn't an HConstant.
That's safe
in terms of functionality, but could hurt performance when it's part
of a big,
expensive-to-optimize function where we'd try 10 times before giving
up, rather
than disabling optimization immediately.

I don't see a good alternative right now ("expr->IsUninitialized()"
doesn't
appear to be useful here); maybe we can find something tomorrow.

Acknowledged.

https://codereview.chromium.org/736043002/diff/1/src/hydrogen.cc#newcode9284
src/hydrogen.cc:9284: Deoptimizer::EAGER);
On 2014/11/19 20:46:16, Jakob wrote:
If we find an appropriate check for "no type feedback yet", this
should be
Deoptimizer::SOFT; otherwise it deserves a comment why it's EAGER.

Done.

https://codereview.chromium.org/736043002/diff/1/src/hydrogen.h
File src/hydrogen.h (right):

https://codereview.chromium.org/736043002/diff/1/src/hydrogen.h#newcode2265
src/hydrogen.h:2265: HValue* Lookup(Variable* var) {
On 2014/11/19 20:46:16, Jakob wrote:
Why do you need this variant? The "!value->IsArgumentsObject()" check
in
IsEligibleForEnvironmentLivenessAnalysis() should do the trick, no?

Indeed, node.

https://codereview.chromium.org/736043002/diff/1/test/mjsunit/regress/regress-3709.js
File test/mjsunit/regress/regress-3709.js (right):

https://codereview.chromium.org/736043002/diff/1/test/mjsunit/regress/regress-3709.js#newcode25
test/mjsunit/regress/regress-3709.js:25: if (%GetOptimizationStatus(foo)
!= 4) {
On 2014/11/19 20:46:16, Jakob wrote:
Just use assertOptimized(foo) / assertUnoptimized(foo), it'll do all
the
required magic.

Done.

https://codereview.chromium.org/736043002/

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to