| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
| 2 // | 2 // |
| 3 // Use of this source code is governed by a BSD-style license that can be | 3 // Use of this source code is governed by a BSD-style license that can be |
| 4 // found in the LICENSE file. | 4 // found in the LICENSE file. |
| 5 | 5 |
| 6 #include "src/crankshaft/s390/lithium-codegen-s390.h" | 6 #include "src/crankshaft/s390/lithium-codegen-s390.h" |
| 7 | 7 |
| 8 #include "src/base/bits.h" | 8 #include "src/base/bits.h" |
| 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 2550 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2561 // Deoptimize if the object needs to be access checked. | 2561 // Deoptimize if the object needs to be access checked. |
| 2562 __ LoadlB(object_instance_type, | 2562 __ LoadlB(object_instance_type, |
| 2563 FieldMemOperand(object_map, Map::kBitFieldOffset)); | 2563 FieldMemOperand(object_map, Map::kBitFieldOffset)); |
| 2564 __ TestBit(object_instance_type, Map::kIsAccessCheckNeeded, r0); | 2564 __ TestBit(object_instance_type, Map::kIsAccessCheckNeeded, r0); |
| 2565 DeoptimizeIf(ne, instr, Deoptimizer::kAccessCheck, cr0); | 2565 DeoptimizeIf(ne, instr, Deoptimizer::kAccessCheck, cr0); |
| 2566 // Deoptimize for proxies. | 2566 // Deoptimize for proxies. |
| 2567 __ CompareInstanceType(object_map, object_instance_type, JS_PROXY_TYPE); | 2567 __ CompareInstanceType(object_map, object_instance_type, JS_PROXY_TYPE); |
| 2568 DeoptimizeIf(eq, instr, Deoptimizer::kProxy); | 2568 DeoptimizeIf(eq, instr, Deoptimizer::kProxy); |
| 2569 __ LoadP(object_prototype, | 2569 __ LoadP(object_prototype, |
| 2570 FieldMemOperand(object_map, Map::kPrototypeOffset)); | 2570 FieldMemOperand(object_map, Map::kPrototypeOffset)); |
| 2571 __ CompareRoot(object_prototype, Heap::kNullValueRootIndex); |
| 2572 EmitFalseBranch(instr, eq); |
| 2571 __ CmpP(object_prototype, prototype); | 2573 __ CmpP(object_prototype, prototype); |
| 2572 EmitTrueBranch(instr, eq); | 2574 EmitTrueBranch(instr, eq); |
| 2573 __ CompareRoot(object_prototype, Heap::kNullValueRootIndex); | |
| 2574 EmitFalseBranch(instr, eq); | |
| 2575 __ LoadP(object_map, | 2575 __ LoadP(object_map, |
| 2576 FieldMemOperand(object_prototype, HeapObject::kMapOffset)); | 2576 FieldMemOperand(object_prototype, HeapObject::kMapOffset)); |
| 2577 __ b(&loop); | 2577 __ b(&loop); |
| 2578 } | 2578 } |
| 2579 | 2579 |
| 2580 void LCodeGen::DoCmpT(LCmpT* instr) { | 2580 void LCodeGen::DoCmpT(LCmpT* instr) { |
| 2581 DCHECK(ToRegister(instr->context()).is(cp)); | 2581 DCHECK(ToRegister(instr->context()).is(cp)); |
| 2582 Token::Value op = instr->op(); | 2582 Token::Value op = instr->op(); |
| 2583 | 2583 |
| 2584 Handle<Code> ic = CodeFactory::CompareIC(isolate(), op).code(); | 2584 Handle<Code> ic = CodeFactory::CompareIC(isolate(), op).code(); |
| (...skipping 3118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5703 __ LoadP(result, | 5703 __ LoadP(result, |
| 5704 FieldMemOperand(scratch, FixedArray::kHeaderSize - kPointerSize)); | 5704 FieldMemOperand(scratch, FixedArray::kHeaderSize - kPointerSize)); |
| 5705 __ bind(deferred->exit()); | 5705 __ bind(deferred->exit()); |
| 5706 __ bind(&done); | 5706 __ bind(&done); |
| 5707 } | 5707 } |
| 5708 | 5708 |
| 5709 #undef __ | 5709 #undef __ |
| 5710 | 5710 |
| 5711 } // namespace internal | 5711 } // namespace internal |
| 5712 } // namespace v8 | 5712 } // namespace v8 |
| OLD | NEW |