diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2010-04-14 10:34:17 -0700 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2010-04-14 10:34:27 -0700 |
commit | 41ef1717e096a9e1761efa0df97c395f59c51f16 (patch) | |
tree | 7e854284ef8ce5189a63074857a408b6eea5a9cb /deps/v8/src/ic.cc | |
parent | 760bba55186eba039ca00e532f7813d2aea450a2 (diff) | |
download | node-new-41ef1717e096a9e1761efa0df97c395f59c51f16.tar.gz |
Upgrade V8 to 2.2.3.1
Diffstat (limited to 'deps/v8/src/ic.cc')
-rw-r--r-- | deps/v8/src/ic.cc | 27 |
1 files changed, 5 insertions, 22 deletions
diff --git a/deps/v8/src/ic.cc b/deps/v8/src/ic.cc index a6d2020b44..b9ca00f829 100644 --- a/deps/v8/src/ic.cc +++ b/deps/v8/src/ic.cc @@ -224,7 +224,8 @@ void IC::Clear(Address address) { case Code::STORE_IC: return StoreIC::Clear(address, target); case Code::KEYED_STORE_IC: return KeyedStoreIC::Clear(address, target); case Code::CALL_IC: return CallIC::Clear(address, target); - case Code::BINARY_OP_IC: return BinaryOpIC::Clear(address, target); + case Code::BINARY_OP_IC: return; // Clearing these is tricky and does not + // make any performance difference. default: UNREACHABLE(); } } @@ -1404,25 +1405,6 @@ void BinaryOpIC::patch(Code* code) { } -void BinaryOpIC::Clear(Address address, Code* target) { - if (target->ic_state() == UNINITIALIZED) return; - - // At the end of a fast case stub there should be a reference to - // a corresponding UNINITIALIZED stub, so look for the last reloc info item. - RelocInfo* rinfo = NULL; - for (RelocIterator it(target, RelocInfo::kCodeTargetMask); - !it.done(); it.next()) { - rinfo = it.rinfo(); - } - - ASSERT(rinfo != NULL); - Code* uninit_stub = Code::GetCodeFromTargetAddress(rinfo->target_address()); - ASSERT(uninit_stub->ic_state() == UNINITIALIZED && - uninit_stub->kind() == Code::BINARY_OP_IC); - SetTargetAtAddress(address, uninit_stub); -} - - const char* BinaryOpIC::GetName(TypeInfo type_info) { switch (type_info) { case DEFAULT: return "Default"; @@ -1451,8 +1433,9 @@ BinaryOpIC::State BinaryOpIC::ToState(TypeInfo type_info) { BinaryOpIC::TypeInfo BinaryOpIC::GetTypeInfo(Object* left, Object* right) { - // Patching is never requested for the two smis. - ASSERT(!left->IsSmi() || !right->IsSmi()); + if (left->IsSmi() && right->IsSmi()) { + return GENERIC; + } if (left->IsNumber() && right->IsNumber()) { return HEAP_NUMBERS; |