OLD | NEW |
1 // Copyright 2006-2009 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2009 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 1482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1493 if (kind == Code::CALL_IC) { | 1493 if (kind == Code::CALL_IC) { |
1494 CallIC::GenerateInitialize(masm(), argc); | 1494 CallIC::GenerateInitialize(masm(), argc); |
1495 } else { | 1495 } else { |
1496 KeyedCallIC::GenerateInitialize(masm(), argc); | 1496 KeyedCallIC::GenerateInitialize(masm(), argc); |
1497 } | 1497 } |
1498 Object* result; | 1498 Object* result; |
1499 { MaybeObject* maybe_result = | 1499 { MaybeObject* maybe_result = |
1500 GetCodeWithFlags(flags, "CompileCallInitialize"); | 1500 GetCodeWithFlags(flags, "CompileCallInitialize"); |
1501 if (!maybe_result->ToObject(&result)) return maybe_result; | 1501 if (!maybe_result->ToObject(&result)) return maybe_result; |
1502 } | 1502 } |
1503 COUNTERS->call_initialize_stubs()->Increment(); | 1503 isolate()->counters()->call_initialize_stubs()->Increment(); |
1504 Code* code = Code::cast(result); | 1504 Code* code = Code::cast(result); |
1505 USE(code); | 1505 USE(code); |
1506 PROFILE(isolate(), | 1506 PROFILE(isolate(), |
1507 CodeCreateEvent(CALL_LOGGER_TAG(kind, CALL_INITIALIZE_TAG), | 1507 CodeCreateEvent(CALL_LOGGER_TAG(kind, CALL_INITIALIZE_TAG), |
1508 code, code->arguments_count())); | 1508 code, code->arguments_count())); |
1509 GDBJIT(AddCode(GDBJITInterface::CALL_INITIALIZE, Code::cast(code))); | 1509 GDBJIT(AddCode(GDBJITInterface::CALL_INITIALIZE, Code::cast(code))); |
1510 return result; | 1510 return result; |
1511 } | 1511 } |
1512 | 1512 |
1513 | 1513 |
1514 MaybeObject* StubCompiler::CompileCallPreMonomorphic(Code::Flags flags) { | 1514 MaybeObject* StubCompiler::CompileCallPreMonomorphic(Code::Flags flags) { |
1515 HandleScope scope(isolate()); | 1515 HandleScope scope(isolate()); |
1516 int argc = Code::ExtractArgumentsCountFromFlags(flags); | 1516 int argc = Code::ExtractArgumentsCountFromFlags(flags); |
1517 // The code of the PreMonomorphic stub is the same as the code | 1517 // The code of the PreMonomorphic stub is the same as the code |
1518 // of the Initialized stub. They just differ on the code object flags. | 1518 // of the Initialized stub. They just differ on the code object flags. |
1519 Code::Kind kind = Code::ExtractKindFromFlags(flags); | 1519 Code::Kind kind = Code::ExtractKindFromFlags(flags); |
1520 if (kind == Code::CALL_IC) { | 1520 if (kind == Code::CALL_IC) { |
1521 CallIC::GenerateInitialize(masm(), argc); | 1521 CallIC::GenerateInitialize(masm(), argc); |
1522 } else { | 1522 } else { |
1523 KeyedCallIC::GenerateInitialize(masm(), argc); | 1523 KeyedCallIC::GenerateInitialize(masm(), argc); |
1524 } | 1524 } |
1525 Object* result; | 1525 Object* result; |
1526 { MaybeObject* maybe_result = | 1526 { MaybeObject* maybe_result = |
1527 GetCodeWithFlags(flags, "CompileCallPreMonomorphic"); | 1527 GetCodeWithFlags(flags, "CompileCallPreMonomorphic"); |
1528 if (!maybe_result->ToObject(&result)) return maybe_result; | 1528 if (!maybe_result->ToObject(&result)) return maybe_result; |
1529 } | 1529 } |
1530 COUNTERS->call_premonomorphic_stubs()->Increment(); | 1530 isolate()->counters()->call_premonomorphic_stubs()->Increment(); |
1531 Code* code = Code::cast(result); | 1531 Code* code = Code::cast(result); |
1532 USE(code); | 1532 USE(code); |
1533 PROFILE(isolate(), | 1533 PROFILE(isolate(), |
1534 CodeCreateEvent(CALL_LOGGER_TAG(kind, CALL_PRE_MONOMORPHIC_TAG), | 1534 CodeCreateEvent(CALL_LOGGER_TAG(kind, CALL_PRE_MONOMORPHIC_TAG), |
1535 code, code->arguments_count())); | 1535 code, code->arguments_count())); |
1536 GDBJIT(AddCode(GDBJITInterface::CALL_PRE_MONOMORPHIC, Code::cast(code))); | 1536 GDBJIT(AddCode(GDBJITInterface::CALL_PRE_MONOMORPHIC, Code::cast(code))); |
1537 return result; | 1537 return result; |
1538 } | 1538 } |
1539 | 1539 |
1540 | 1540 |
1541 MaybeObject* StubCompiler::CompileCallNormal(Code::Flags flags) { | 1541 MaybeObject* StubCompiler::CompileCallNormal(Code::Flags flags) { |
1542 HandleScope scope(isolate()); | 1542 HandleScope scope(isolate()); |
1543 int argc = Code::ExtractArgumentsCountFromFlags(flags); | 1543 int argc = Code::ExtractArgumentsCountFromFlags(flags); |
1544 Code::Kind kind = Code::ExtractKindFromFlags(flags); | 1544 Code::Kind kind = Code::ExtractKindFromFlags(flags); |
1545 if (kind == Code::CALL_IC) { | 1545 if (kind == Code::CALL_IC) { |
1546 CallIC::GenerateNormal(masm(), argc); | 1546 CallIC::GenerateNormal(masm(), argc); |
1547 } else { | 1547 } else { |
1548 KeyedCallIC::GenerateNormal(masm(), argc); | 1548 KeyedCallIC::GenerateNormal(masm(), argc); |
1549 } | 1549 } |
1550 Object* result; | 1550 Object* result; |
1551 { MaybeObject* maybe_result = GetCodeWithFlags(flags, "CompileCallNormal"); | 1551 { MaybeObject* maybe_result = GetCodeWithFlags(flags, "CompileCallNormal"); |
1552 if (!maybe_result->ToObject(&result)) return maybe_result; | 1552 if (!maybe_result->ToObject(&result)) return maybe_result; |
1553 } | 1553 } |
1554 COUNTERS->call_normal_stubs()->Increment(); | 1554 isolate()->counters()->call_normal_stubs()->Increment(); |
1555 Code* code = Code::cast(result); | 1555 Code* code = Code::cast(result); |
1556 USE(code); | 1556 USE(code); |
1557 PROFILE(isolate(), | 1557 PROFILE(isolate(), |
1558 CodeCreateEvent(CALL_LOGGER_TAG(kind, CALL_NORMAL_TAG), | 1558 CodeCreateEvent(CALL_LOGGER_TAG(kind, CALL_NORMAL_TAG), |
1559 code, code->arguments_count())); | 1559 code, code->arguments_count())); |
1560 GDBJIT(AddCode(GDBJITInterface::CALL_NORMAL, Code::cast(code))); | 1560 GDBJIT(AddCode(GDBJITInterface::CALL_NORMAL, Code::cast(code))); |
1561 return result; | 1561 return result; |
1562 } | 1562 } |
1563 | 1563 |
1564 | 1564 |
1565 MaybeObject* StubCompiler::CompileCallMegamorphic(Code::Flags flags) { | 1565 MaybeObject* StubCompiler::CompileCallMegamorphic(Code::Flags flags) { |
1566 HandleScope scope(isolate()); | 1566 HandleScope scope(isolate()); |
1567 int argc = Code::ExtractArgumentsCountFromFlags(flags); | 1567 int argc = Code::ExtractArgumentsCountFromFlags(flags); |
1568 Code::Kind kind = Code::ExtractKindFromFlags(flags); | 1568 Code::Kind kind = Code::ExtractKindFromFlags(flags); |
1569 if (kind == Code::CALL_IC) { | 1569 if (kind == Code::CALL_IC) { |
1570 CallIC::GenerateMegamorphic(masm(), argc); | 1570 CallIC::GenerateMegamorphic(masm(), argc); |
1571 } else { | 1571 } else { |
1572 KeyedCallIC::GenerateMegamorphic(masm(), argc); | 1572 KeyedCallIC::GenerateMegamorphic(masm(), argc); |
1573 } | 1573 } |
1574 Object* result; | 1574 Object* result; |
1575 { MaybeObject* maybe_result = | 1575 { MaybeObject* maybe_result = |
1576 GetCodeWithFlags(flags, "CompileCallMegamorphic"); | 1576 GetCodeWithFlags(flags, "CompileCallMegamorphic"); |
1577 if (!maybe_result->ToObject(&result)) return maybe_result; | 1577 if (!maybe_result->ToObject(&result)) return maybe_result; |
1578 } | 1578 } |
1579 COUNTERS->call_megamorphic_stubs()->Increment(); | 1579 isolate()->counters()->call_megamorphic_stubs()->Increment(); |
1580 Code* code = Code::cast(result); | 1580 Code* code = Code::cast(result); |
1581 USE(code); | 1581 USE(code); |
1582 PROFILE(isolate(), | 1582 PROFILE(isolate(), |
1583 CodeCreateEvent(CALL_LOGGER_TAG(kind, CALL_MEGAMORPHIC_TAG), | 1583 CodeCreateEvent(CALL_LOGGER_TAG(kind, CALL_MEGAMORPHIC_TAG), |
1584 code, code->arguments_count())); | 1584 code, code->arguments_count())); |
1585 GDBJIT(AddCode(GDBJITInterface::CALL_MEGAMORPHIC, Code::cast(code))); | 1585 GDBJIT(AddCode(GDBJITInterface::CALL_MEGAMORPHIC, Code::cast(code))); |
1586 return result; | 1586 return result; |
1587 } | 1587 } |
1588 | 1588 |
1589 | 1589 |
1590 MaybeObject* StubCompiler::CompileCallMiss(Code::Flags flags) { | 1590 MaybeObject* StubCompiler::CompileCallMiss(Code::Flags flags) { |
1591 HandleScope scope(isolate()); | 1591 HandleScope scope(isolate()); |
1592 int argc = Code::ExtractArgumentsCountFromFlags(flags); | 1592 int argc = Code::ExtractArgumentsCountFromFlags(flags); |
1593 Code::Kind kind = Code::ExtractKindFromFlags(flags); | 1593 Code::Kind kind = Code::ExtractKindFromFlags(flags); |
1594 if (kind == Code::CALL_IC) { | 1594 if (kind == Code::CALL_IC) { |
1595 CallIC::GenerateMiss(masm(), argc); | 1595 CallIC::GenerateMiss(masm(), argc); |
1596 } else { | 1596 } else { |
1597 KeyedCallIC::GenerateMiss(masm(), argc); | 1597 KeyedCallIC::GenerateMiss(masm(), argc); |
1598 } | 1598 } |
1599 Object* result; | 1599 Object* result; |
1600 { MaybeObject* maybe_result = GetCodeWithFlags(flags, "CompileCallMiss"); | 1600 { MaybeObject* maybe_result = GetCodeWithFlags(flags, "CompileCallMiss"); |
1601 if (!maybe_result->ToObject(&result)) return maybe_result; | 1601 if (!maybe_result->ToObject(&result)) return maybe_result; |
1602 } | 1602 } |
1603 COUNTERS->call_megamorphic_stubs()->Increment(); | 1603 isolate()->counters()->call_megamorphic_stubs()->Increment(); |
1604 Code* code = Code::cast(result); | 1604 Code* code = Code::cast(result); |
1605 USE(code); | 1605 USE(code); |
1606 PROFILE(isolate(), | 1606 PROFILE(isolate(), |
1607 CodeCreateEvent(CALL_LOGGER_TAG(kind, CALL_MISS_TAG), | 1607 CodeCreateEvent(CALL_LOGGER_TAG(kind, CALL_MISS_TAG), |
1608 code, code->arguments_count())); | 1608 code, code->arguments_count())); |
1609 GDBJIT(AddCode(GDBJITInterface::CALL_MISS, Code::cast(code))); | 1609 GDBJIT(AddCode(GDBJITInterface::CALL_MISS, Code::cast(code))); |
1610 return result; | 1610 return result; |
1611 } | 1611 } |
1612 | 1612 |
1613 | 1613 |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1937 } | 1937 } |
1938 Code* code = Code::cast(result); | 1938 Code* code = Code::cast(result); |
1939 USE(code); | 1939 USE(code); |
1940 PROFILE(isolate(), | 1940 PROFILE(isolate(), |
1941 CodeCreateEvent(Logger::STUB_TAG, code, "ExternalArrayStub")); | 1941 CodeCreateEvent(Logger::STUB_TAG, code, "ExternalArrayStub")); |
1942 return result; | 1942 return result; |
1943 } | 1943 } |
1944 | 1944 |
1945 | 1945 |
1946 } } // namespace v8::internal | 1946 } } // namespace v8::internal |
OLD | NEW |