OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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_PPC | 7 #if V8_TARGET_ARCH_PPC |
8 | 8 |
9 #include "src/code-factory.h" | 9 #include "src/code-factory.h" |
10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
(...skipping 4445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4456 Label materialize_true, materialize_false; | 4456 Label materialize_true, materialize_false; |
4457 Label* if_true = NULL; | 4457 Label* if_true = NULL; |
4458 Label* if_false = NULL; | 4458 Label* if_false = NULL; |
4459 Label* fall_through = NULL; | 4459 Label* fall_through = NULL; |
4460 context()->PrepareTest(&materialize_true, &materialize_false, &if_true, | 4460 context()->PrepareTest(&materialize_true, &materialize_false, &if_true, |
4461 &if_false, &fall_through); | 4461 &if_false, &fall_through); |
4462 | 4462 |
4463 __ lwz(r3, FieldMemOperand(r3, String::kHashFieldOffset)); | 4463 __ lwz(r3, FieldMemOperand(r3, String::kHashFieldOffset)); |
4464 // PPC - assume ip is free | 4464 // PPC - assume ip is free |
4465 __ mov(ip, Operand(String::kContainsCachedArrayIndexMask)); | 4465 __ mov(ip, Operand(String::kContainsCachedArrayIndexMask)); |
4466 __ and_(r0, r3, ip); | 4466 __ and_(r0, r3, ip, SetRC); |
4467 __ cmpi(r0, Operand::Zero()); | |
4468 PrepareForBailoutBeforeSplit(expr, true, if_true, if_false); | 4467 PrepareForBailoutBeforeSplit(expr, true, if_true, if_false); |
4469 Split(eq, if_true, if_false, fall_through); | 4468 Split(eq, if_true, if_false, fall_through, cr0); |
4470 | 4469 |
4471 context()->Plug(if_true, if_false); | 4470 context()->Plug(if_true, if_false); |
4472 } | 4471 } |
4473 | 4472 |
4474 | 4473 |
4475 void FullCodeGenerator::EmitGetCachedArrayIndex(CallRuntime* expr) { | 4474 void FullCodeGenerator::EmitGetCachedArrayIndex(CallRuntime* expr) { |
4476 ZoneList<Expression*>* args = expr->arguments(); | 4475 ZoneList<Expression*>* args = expr->arguments(); |
4477 DCHECK(args->length() == 1); | 4476 DCHECK(args->length() == 1); |
4478 VisitForAccumulatorValue(args->at(0)); | 4477 VisitForAccumulatorValue(args->at(0)); |
4479 | 4478 |
(...skipping 1119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5599 return ON_STACK_REPLACEMENT; | 5598 return ON_STACK_REPLACEMENT; |
5600 } | 5599 } |
5601 | 5600 |
5602 DCHECK(interrupt_address == | 5601 DCHECK(interrupt_address == |
5603 isolate->builtins()->OsrAfterStackCheck()->entry()); | 5602 isolate->builtins()->OsrAfterStackCheck()->entry()); |
5604 return OSR_AFTER_STACK_CHECK; | 5603 return OSR_AFTER_STACK_CHECK; |
5605 } | 5604 } |
5606 } // namespace internal | 5605 } // namespace internal |
5607 } // namespace v8 | 5606 } // namespace v8 |
5608 #endif // V8_TARGET_ARCH_PPC | 5607 #endif // V8_TARGET_ARCH_PPC |
OLD | NEW |