OLD | NEW |
---|---|
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #if V8_TARGET_ARCH_ARM | 7 #if V8_TARGET_ARCH_ARM |
8 | 8 |
9 #include "src/codegen.h" | 9 #include "src/codegen.h" |
10 #include "src/ic-inl.h" | 10 #include "src/ic-inl.h" |
(...skipping 1247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1258 | 1258 |
1259 // Return the generated code. | 1259 // Return the generated code. |
1260 return GetCode(kind(), Code::FAST, name); | 1260 return GetCode(kind(), Code::FAST, name); |
1261 } | 1261 } |
1262 | 1262 |
1263 | 1263 |
1264 Register* LoadStubCompiler::registers() { | 1264 Register* LoadStubCompiler::registers() { |
1265 // receiver, name, scratch1, scratch2, scratch3, scratch4. | 1265 // receiver, name, scratch1, scratch2, scratch3, scratch4. |
1266 Register receiver = LoadIC::ReceiverRegister(); | 1266 Register receiver = LoadIC::ReceiverRegister(); |
1267 Register name = LoadIC::NameRegister(); | 1267 Register name = LoadIC::NameRegister(); |
1268 static Register registers[] = { receiver, name, r3, r1, r4, r5 }; | 1268 static Register registers[] = { receiver, name, r3, r0, r4, r5 }; |
1269 return registers; | 1269 return registers; |
1270 } | 1270 } |
1271 | 1271 |
1272 | 1272 |
1273 Register* KeyedLoadStubCompiler::registers() { | 1273 Register* KeyedLoadStubCompiler::registers() { |
1274 // receiver, name, scratch1, scratch2, scratch3, scratch4. | 1274 // receiver, name, scratch1, scratch2, scratch3, scratch4. |
1275 Register receiver = KeyedLoadIC::ReceiverRegister(); | 1275 Register receiver = LoadIC::ReceiverRegister(); |
1276 Register name = KeyedLoadIC::NameRegister(); | 1276 Register name = LoadIC::NameRegister(); |
1277 static Register registers[] = { receiver, name, r2, r3, r4, r5 }; | 1277 static Register registers[] = { receiver, name, r3, r0, r4, r5 }; |
1278 return registers; | 1278 return registers; |
1279 } | 1279 } |
1280 | 1280 |
1281 | 1281 |
1282 Register StoreStubCompiler::value() { | 1282 Register StoreStubCompiler::value() { |
1283 return r0; | 1283 return r0; |
1284 } | 1284 } |
1285 | 1285 |
1286 | 1286 |
1287 Register* StoreStubCompiler::registers() { | 1287 Register* StoreStubCompiler::registers() { |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1468 } | 1468 } |
1469 | 1469 |
1470 | 1470 |
1471 #undef __ | 1471 #undef __ |
1472 #define __ ACCESS_MASM(masm) | 1472 #define __ ACCESS_MASM(masm) |
1473 | 1473 |
1474 | 1474 |
1475 void KeyedLoadStubCompiler::GenerateLoadDictionaryElement( | 1475 void KeyedLoadStubCompiler::GenerateLoadDictionaryElement( |
1476 MacroAssembler* masm) { | 1476 MacroAssembler* masm) { |
1477 // ---------- S t a t e -------------- | 1477 // ---------- S t a t e -------------- |
1478 // -- lr : return address | 1478 // -- lr : return address |
Jakob Kummerow
2014/06/30 14:12:45
another comment that we an trim to just this line.
mvstanton
2014/06/30 14:59:00
Done.
| |
1479 // -- r0 : key | 1479 // -- r2 : key |
1480 // -- r1 : receiver | 1480 // -- r1 : receiver |
1481 // ----------------------------------- | 1481 // ----------------------------------- |
1482 ASSERT(r1.is(KeyedLoadIC::ReceiverRegister())); | |
1483 ASSERT(r0.is(KeyedLoadIC::NameRegister())); | |
1484 Label slow, miss; | 1482 Label slow, miss; |
1485 | 1483 |
1486 Register key = r0; | 1484 Register key = LoadIC::NameRegister(); |
1487 Register receiver = r1; | 1485 Register receiver = LoadIC::ReceiverRegister(); |
1486 ASSERT(receiver.is(r1)); | |
1487 ASSERT(key.is(r2)); | |
1488 | 1488 |
1489 __ UntagAndJumpIfNotSmi(r2, key, &miss); | 1489 __ UntagAndJumpIfNotSmi(r6, key, &miss); |
1490 __ ldr(r4, FieldMemOperand(receiver, JSObject::kElementsOffset)); | 1490 __ ldr(r4, FieldMemOperand(receiver, JSObject::kElementsOffset)); |
1491 __ LoadFromNumberDictionary(&slow, r4, key, r0, r2, r3, r5); | 1491 __ LoadFromNumberDictionary(&slow, r4, key, r0, r6, r3, r5); |
1492 __ Ret(); | 1492 __ Ret(); |
1493 | 1493 |
1494 __ bind(&slow); | 1494 __ bind(&slow); |
1495 __ IncrementCounter( | 1495 __ IncrementCounter( |
1496 masm->isolate()->counters()->keyed_load_external_array_slow(), | 1496 masm->isolate()->counters()->keyed_load_external_array_slow(), |
1497 1, r2, r3); | 1497 1, r2, r3); |
1498 | 1498 |
1499 // ---------- S t a t e -------------- | 1499 // ---------- S t a t e -------------- |
1500 // -- lr : return address | 1500 // -- lr : return address |
1501 // -- r0 : key | 1501 // -- r0 : key |
Jakob Kummerow
2014/06/30 14:12:45
outdated. Just drop the entire comment.
mvstanton
2014/06/30 14:58:59
Done.
| |
1502 // -- r1 : receiver | 1502 // -- r1 : receiver |
1503 // ----------------------------------- | 1503 // ----------------------------------- |
1504 TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Slow); | 1504 TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Slow); |
1505 | 1505 |
1506 // Miss case, call the runtime. | 1506 // Miss case, call the runtime. |
1507 __ bind(&miss); | 1507 __ bind(&miss); |
1508 | 1508 |
1509 // ---------- S t a t e -------------- | 1509 // ---------- S t a t e -------------- |
1510 // -- lr : return address | 1510 // -- lr : return address |
1511 // -- r0 : key | 1511 // -- r0 : key |
Jakob Kummerow
2014/06/30 14:12:45
again
mvstanton
2014/06/30 14:59:00
Done.
| |
1512 // -- r1 : receiver | 1512 // -- r1 : receiver |
1513 // ----------------------------------- | 1513 // ----------------------------------- |
1514 TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Miss); | 1514 TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Miss); |
1515 } | 1515 } |
1516 | 1516 |
1517 | 1517 |
1518 #undef __ | 1518 #undef __ |
1519 | 1519 |
1520 } } // namespace v8::internal | 1520 } } // namespace v8::internal |
1521 | 1521 |
1522 #endif // V8_TARGET_ARCH_ARM | 1522 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |