Hi Toon,
Here you go. I've removed the x64 optimizations that just aren't worth it at
this moment (so objects.h change is gone). Thanks for good comments,
addressed.
--Michael
https://codereview.chromium.org/988653003/diff/60001/src/code-stubs-hydrogen.cc
File src/code-stubs-hydrogen.cc (right):
https://codereview.chromium.org/988653003/diff/60001/src/code-stubs-hydrogen.cc#newcode117
src/code-stubs-hydrogen.cc:117: void HandleMonoCase(HValue* weak_cell,
HValue* receiver, HValue* name,
On 2015/03/11 17:55:01, Toon Verwaest wrote:
HandleMonomorphicCase
Happily all this code is dead. Removing.
https://codereview.chromium.org/988653003/diff/60001/src/ia32/code-stubs-ia32.cc
File src/ia32/code-stubs-ia32.cc (right):
https://codereview.chromium.org/988653003/diff/60001/src/ia32/code-stubs-ia32.cc#newcode4438
src/ia32/code-stubs-ia32.cc:4438: __ mov(feedback,
FieldOperand(feedback, FixedArray::OffsetOfElementAt(1)));
On 2015/03/11 17:55:02, Toon Verwaest wrote:
feedback -> handler?
Maybe just do Register handler = feedback;
Done.
https://codereview.chromium.org/988653003/diff/60001/src/ia32/code-stubs-ia32.cc#newcode4446
src/ia32/code-stubs-ia32.cc:4446: Immediate(Smi::FromInt(2)));
On 2015/03/11 17:55:01, Toon Verwaest wrote:
This isn't possible for named loads afaict.
I addressed this with a boolean, is_polymorphic.
https://codereview.chromium.org/988653003/diff/60001/src/ia32/code-stubs-ia32.cc#newcode4455
src/ia32/code-stubs-ia32.cc:4455: __ push(key);
On 2015/03/11 17:55:02, Toon Verwaest wrote:
As discussed, you don't need the key for named loads if you store it
the next to
the feedback array on top-level; so you don't need to spill it.
Yeah, I don't want to load it from the array very much I think that
might be more expensive. It would introduce a lot of variations downwind
(like KeyedLoadIC::GenerateMiss(), that has to know about this case).
https://codereview.chromium.org/988653003/diff/60001/src/ia32/code-stubs-ia32.cc#newcode4499
src/ia32/code-stubs-ia32.cc:4499: __ cmp(weak_cell,
FieldOperand(receiver, 0));
On 2015/03/11 17:55:02, Toon Verwaest wrote:
Register receiver_map = weak_cell;
Good idea, but I called it ic_map to indicate it's the map held by the
ic, and not necessary the map of the receiver.
https://codereview.chromium.org/988653003/diff/60001/src/ia32/code-stubs-ia32.cc#newcode4501
src/ia32/code-stubs-ia32.cc:4501: __ mov(weak_cell, FieldOperand(vector,
slot, times_half_pointer_size,
On 2015/03/11 17:55:02, Toon Verwaest wrote:
Register code_object = weak_cell;
Cool, but I called it handler per your good suggestion above.
https://codereview.chromium.org/988653003/diff/60001/src/ia32/code-stubs-ia32.cc#newcode4617
src/ia32/code-stubs-ia32.cc:4617: __ int3(); // We shouldn't get here.
On 2015/03/11 17:55:01, Toon Verwaest wrote:
drop int3(), I presume we can trust __jmp to do the right thing :)
Done.
https://codereview.chromium.org/988653003/diff/60001/src/objects.h
File src/objects.h (right):
https://codereview.chromium.org/988653003/diff/60001/src/objects.h#newcode8804
src/objects.h:8804: static const int kFlagsOffset = Name::kSize;
On 2015/03/11 17:55:02, Toon Verwaest wrote:
Is this still necessary?
[At this point haven't looked at platform specific files yet, but I
seem to
recall that this idea was discarded]
Yes, I still want to do something in here but I'll move it out to a
future CL.
https://codereview.chromium.org/988653003/diff/60001/src/type-feedback-vector.cc
File src/type-feedback-vector.cc (right):
https://codereview.chromium.org/988653003/diff/60001/src/type-feedback-vector.cc#newcode214
src/type-feedback-vector.cc:214:
FixedArray::cast(*feedback_extra)->length() != length) {
On 2015/03/11 17:55:02, Toon Verwaest wrote:
< ?
Hmm, if the array in place is larger, then I'd have to fill the
remaining elements with a sentinel that the polymorphic handler then has
to check for. That's why I'll only reuse an existing array if it's the
right size.
https://codereview.chromium.org/988653003/diff/60001/src/type-feedback-vector.h
File src/type-feedback-vector.h (right):
https://codereview.chromium.org/988653003/diff/60001/src/type-feedback-vector.h#newcode284
src/type-feedback-vector.h:284: int ExtractMapsImpl(MapHandleList* maps)
const;
On 2015/03/11 17:55:02, Toon Verwaest wrote:
Impl?
I'll reorganize this, providing a base implementation of these three
functions which LoadICNexus and KeyedLoadICNexus don't have to override.
https://codereview.chromium.org/988653003/diff/60001/src/x64/code-stubs-x64.cc
File src/x64/code-stubs-x64.cc (right):
https://codereview.chromium.org/988653003/diff/60001/src/x64/code-stubs-x64.cc#newcode4489
src/x64/code-stubs-x64.cc:4489: __ int3(); // We shouldn't get here.
On 2015/03/11 17:55:02, Toon Verwaest wrote:
Same here
Done.
https://codereview.chromium.org/988653003/
--
--
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.