diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2010-08-10 09:17:11 -0700 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2010-08-10 09:17:11 -0700 |
commit | a5be730906be67b3daf6650e84570ec60a9eac25 (patch) | |
tree | ec9a650a8f8aadc5d50cfe3fc09d78e85d994693 /deps/v8/src/arm/ic-arm.cc | |
parent | 1c5d5e0b72aefe6ca6b380d1b0a8c927e2e362e8 (diff) | |
download | node-a5be730906be67b3daf6650e84570ec60a9eac25.tar.gz |
Upgrade V8 to 2.3.6
Diffstat (limited to 'deps/v8/src/arm/ic-arm.cc')
-rw-r--r-- | deps/v8/src/arm/ic-arm.cc | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/deps/v8/src/arm/ic-arm.cc b/deps/v8/src/arm/ic-arm.cc index e7e3de3cd..1fd709825 100644 --- a/deps/v8/src/arm/ic-arm.cc +++ b/deps/v8/src/arm/ic-arm.cc @@ -1105,7 +1105,7 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) { // -- r0 : key // -- r1 : receiver // ----------------------------------- - Label slow, check_string, index_smi, index_string; + Label slow, check_string, index_smi, index_string, property_array_property; Label check_pixel_array, probe_dictionary, check_number_dictionary; Register key = r0; @@ -1193,7 +1193,7 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) { __ cmp(r0, r5); __ b(ne, &slow); - // Get field offset and check that it is an in-object property. + // Get field offset. // r0 : key // r1 : receiver // r2 : receiver's map @@ -1203,11 +1203,10 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) { __ mov(r4, Operand(cache_field_offsets)); __ ldr(r5, MemOperand(r4, r3, LSL, kPointerSizeLog2)); __ ldrb(r6, FieldMemOperand(r2, Map::kInObjectPropertiesOffset)); - __ cmp(r5, r6); - __ b(ge, &slow); + __ sub(r5, r5, r6, SetCC); + __ b(ge, &property_array_property); // Load in-object property. - __ sub(r5, r5, r6); // Index from end of object. __ ldrb(r6, FieldMemOperand(r2, Map::kInstanceSizeOffset)); __ add(r6, r6, r5); // Index from start of object. __ sub(r1, r1, Operand(kHeapObjectTag)); // Remove the heap tag. @@ -1215,6 +1214,14 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) { __ IncrementCounter(&Counters::keyed_load_generic_lookup_cache, 1, r2, r3); __ Ret(); + // Load property array property. + __ bind(&property_array_property); + __ ldr(r1, FieldMemOperand(r1, JSObject::kPropertiesOffset)); + __ add(r1, r1, Operand(FixedArray::kHeaderSize - kHeapObjectTag)); + __ ldr(r0, MemOperand(r1, r5, LSL, kPointerSizeLog2)); + __ IncrementCounter(&Counters::keyed_load_generic_lookup_cache, 1, r2, r3); + __ Ret(); + // Do a quick inline probe of the receiver's dictionary, if it // exists. __ bind(&probe_dictionary); |