OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved.7 | 1 // Copyright 2012 the V8 project authors. All rights reserved.7 |
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 1014 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1025 case CodeStub::RegExpExec: { | 1025 case CodeStub::RegExpExec: { |
1026 RegExpExecStub stub(isolate()); | 1026 RegExpExecStub stub(isolate()); |
1027 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); | 1027 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); |
1028 break; | 1028 break; |
1029 } | 1029 } |
1030 case CodeStub::SubString: { | 1030 case CodeStub::SubString: { |
1031 SubStringStub stub(isolate()); | 1031 SubStringStub stub(isolate()); |
1032 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); | 1032 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); |
1033 break; | 1033 break; |
1034 } | 1034 } |
1035 case CodeStub::StringCompare: { | |
1036 StringCompareStub stub(isolate()); | |
1037 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); | |
1038 break; | |
1039 } | |
1040 default: | 1035 default: |
1041 UNREACHABLE(); | 1036 UNREACHABLE(); |
1042 } | 1037 } |
1043 } | 1038 } |
1044 | 1039 |
1045 | 1040 |
1046 void LCodeGen::DoUnknownOSRValue(LUnknownOSRValue* instr) { | 1041 void LCodeGen::DoUnknownOSRValue(LUnknownOSRValue* instr) { |
1047 GenerateOsrPrologue(); | 1042 GenerateOsrPrologue(); |
1048 } | 1043 } |
1049 | 1044 |
(...skipping 1402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2452 return ge; | 2447 return ge; |
2453 default: | 2448 default: |
2454 UNREACHABLE(); | 2449 UNREACHABLE(); |
2455 return kNoCondition; | 2450 return kNoCondition; |
2456 } | 2451 } |
2457 } | 2452 } |
2458 | 2453 |
2459 | 2454 |
2460 void LCodeGen::DoStringCompareAndBranch(LStringCompareAndBranch* instr) { | 2455 void LCodeGen::DoStringCompareAndBranch(LStringCompareAndBranch* instr) { |
2461 DCHECK(ToRegister(instr->context()).is(cp)); | 2456 DCHECK(ToRegister(instr->context()).is(cp)); |
2462 Token::Value op = instr->op(); | 2457 DCHECK(ToRegister(instr->left()).is(a1)); |
| 2458 DCHECK(ToRegister(instr->right()).is(a0)); |
2463 | 2459 |
2464 Handle<Code> ic = | 2460 Handle<Code> code = CodeFactory::StringCompare(isolate()).code(); |
2465 CodeFactory::CompareIC(isolate(), op, Strength::WEAK).code(); | 2461 CallCode(code, RelocInfo::CODE_TARGET, instr); |
2466 CallCode(ic, RelocInfo::CODE_TARGET, instr); | |
2467 | 2462 |
2468 Condition condition = ComputeCompareCondition(op); | 2463 EmitBranch(instr, ComputeCompareCondition(instr->op()), v0, |
2469 | 2464 Operand(zero_reg)); |
2470 EmitBranch(instr, condition, v0, Operand(zero_reg)); | |
2471 } | 2465 } |
2472 | 2466 |
2473 | 2467 |
2474 static InstanceType TestType(HHasInstanceTypeAndBranch* instr) { | 2468 static InstanceType TestType(HHasInstanceTypeAndBranch* instr) { |
2475 InstanceType from = instr->from(); | 2469 InstanceType from = instr->from(); |
2476 InstanceType to = instr->to(); | 2470 InstanceType to = instr->to(); |
2477 if (from == FIRST_TYPE) return to; | 2471 if (from == FIRST_TYPE) return to; |
2478 DCHECK(from == to || to == LAST_TYPE); | 2472 DCHECK(from == to || to == LAST_TYPE); |
2479 return from; | 2473 return from; |
2480 } | 2474 } |
(...skipping 3425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5906 __ Push(at, ToRegister(instr->function())); | 5900 __ Push(at, ToRegister(instr->function())); |
5907 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 5901 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
5908 RecordSafepoint(Safepoint::kNoLazyDeopt); | 5902 RecordSafepoint(Safepoint::kNoLazyDeopt); |
5909 } | 5903 } |
5910 | 5904 |
5911 | 5905 |
5912 #undef __ | 5906 #undef __ |
5913 | 5907 |
5914 } // namespace internal | 5908 } // namespace internal |
5915 } // namespace v8 | 5909 } // namespace v8 |
OLD | NEW |