Hairy stuff. LGTM.
I'm not thrilled with the handle list unwrapping, it seems kind of subtle.
Do
you think we'll eventually be able to handlify the polymorphic code cache
directly, so the unwrapping is not necessary?
http://codereview.chromium.org/8356041/diff/1/src/ic.cc
File src/ic.cc (right):
http://codereview.chromium.org/8356041/diff/1/src/ic.cc#newcode1534
src/ic.cc:1534: return monomorphic_stub;
Could just be
return ComputeMonomorphicStub(...);
http://codereview.chromium.org/8356041/diff/1/src/list-inl.h
File src/list-inl.h (right):
http://codereview.chromium.org/8356041/diff/1/src/list-inl.h#newcode241
src/list-inl.h:241: List<T*>* UnwrapList(List<T*>* destination,
List<Handle<T> >* source) {
Maybe this name needs to be more obvious, like "UnwrapHandleList"....
You could avoid having to fill the destination with NULLs by doing:
ASSERT(destination.is_empty());
int length = source->length();
for (int i = 0; i < length; ++i) {
Handle<T> handle = source->at(i);
destination->Add(handle.is_null() ? NULL : *handle);
}
return destination;
http://codereview.chromium.org/8356041/diff/1/src/objects.cc
File src/objects.cc (right):
http://codereview.chromium.org/8356041/diff/1/src/objects.cc#newcode2199
src/objects.cc:2199: return (result == NULL) ? Handle<Map>() :
Handle<Map>(result);
Handle<Map>::null() a bit better than Handle<Map>().
http://codereview.chromium.org/8356041/diff/1/src/objects.cc#newcode2203
src/objects.cc:2203: Map* Map::FindTransitionedMap(MapList* candidates)
{
This is still needed by the raw pointer code? Will it be possible to
handlify it directly at some point?
http://codereview.chromium.org/8356041/diff/1/src/objects.cc#newcode5160
src/objects.cc:5160: MaybeObject* PolymorphicCodeCache::Update(MapList*
maps,
Likewise, do you think it will be eventually possible to handlify the
PolymorphicCodeCache directly, or will we need to update it from raw
pointer code?
http://codereview.chromium.org/8356041/diff/1/src/stub-cache.cc
File src/stub-cache.cc (right):
http://codereview.chromium.org/8356041/diff/1/src/stub-cache.cc#newcode537
src/stub-cache.cc:537: CALL_HEAP_FUNCTION(isolate(),
CompileLoadElement(*map), Code);
Remember that these need to reset the stub compiler's failure_ field.
http://codereview.chromium.org/8356041/
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev