Reviewers: Toon Verwaest,
Description:
Fix InlineCacheState for ToBoolean and CompareIC
BUG=
Please review this at https://codereview.chromium.org/16613003/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/code-stubs.h
M src/code-stubs.cc
Index: src/code-stubs.cc
diff --git a/src/code-stubs.cc b/src/code-stubs.cc
index
4c6ee86546781122c3fd0a39e20fa567b961b012..b4479da9230d21b357fd716f4b003889a7868469
100644
--- a/src/code-stubs.cc
+++ b/src/code-stubs.cc
@@ -305,6 +305,27 @@ void BinaryOpStub::GenerateStringStub(MacroAssembler*
masm) {
}
+InlineCacheState ICCompareStub::GetICState() {
+ CompareIC::State state = Max(left_, right_);
+ switch (state) {
+ case CompareIC::UNINITIALIZED:
+ return ::v8::internal::UNINITIALIZED;
+ case CompareIC::SMI:
+ case CompareIC::NUMBER:
+ case CompareIC::INTERNALIZED_STRING:
+ case CompareIC::STRING:
+ case CompareIC::UNIQUE_NAME:
+ case CompareIC::OBJECT:
+ case CompareIC::KNOWN_OBJECT:
+ return MONOMORPHIC;
+ case CompareIC::GENERIC:
+ return ::v8::internal::GENERIC;
+ }
+ UNREACHABLE();
+ return ::v8::internal::UNINITIALIZED;
+}
+
+
void ICCompareStub::AddToSpecialCache(Handle<Code> new_object) {
ASSERT(*known_map_ != NULL);
Isolate* isolate = new_object->GetIsolate();
Index: src/code-stubs.h
diff --git a/src/code-stubs.h b/src/code-stubs.h
index
ad1f09be1140ed894228582f732713d7818d193d..013086e1f1586c4197bb890e766dae4e88daf7bd
100644
--- a/src/code-stubs.h
+++ b/src/code-stubs.h
@@ -1080,6 +1080,8 @@ class ICCompareStub: public PlatformCodeStub {
return
static_cast<CompareIC::State>(HandlerStateField::decode(minor_key));
}
+ virtual InlineCacheState GetICState();
+
private:
class OpField: public BitField<int, 0, 3> { };
class LeftStateField: public BitField<int, 3, 4> { };
@@ -2027,6 +2029,13 @@ class ToBooleanStub: public HydrogenCodeStub {
return types_.ToIntegral();
}
+ virtual InlineCacheState GetICState() {
+ if (types_.IsEmpty()) {
+ return ::v8::internal::UNINITIALIZED;
+ } else {
+ return MONOMORPHIC;
+ }
+ }
private:
Major MajorKey() { return ToBoolean; }
--
--
v8-dev mailing list
v8-dev@googlegroups.com
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 v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.