| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 #include "src/arm64/frames-arm64.h" | 7 #include "src/arm64/frames-arm64.h" |
| 8 #include "src/arm64/lithium-codegen-arm64.h" | 8 #include "src/arm64/lithium-codegen-arm64.h" |
| 9 #include "src/arm64/lithium-gap-resolver-arm64.h" | 9 #include "src/arm64/lithium-gap-resolver-arm64.h" |
| 10 #include "src/base/bits.h" | 10 #include "src/base/bits.h" |
| (...skipping 5921 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5932 __ B(chunk_->GetAssemblyLabel(false_block)); | 5932 __ B(chunk_->GetAssemblyLabel(false_block)); |
| 5933 } | 5933 } |
| 5934 } | 5934 } |
| 5935 | 5935 |
| 5936 } else if (String::Equals(type_name, factory->string_string())) { | 5936 } else if (String::Equals(type_name, factory->string_string())) { |
| 5937 DCHECK((instr->temp1() != NULL) && (instr->temp2() != NULL)); | 5937 DCHECK((instr->temp1() != NULL) && (instr->temp2() != NULL)); |
| 5938 Register map = ToRegister(instr->temp1()); | 5938 Register map = ToRegister(instr->temp1()); |
| 5939 Register scratch = ToRegister(instr->temp2()); | 5939 Register scratch = ToRegister(instr->temp2()); |
| 5940 | 5940 |
| 5941 __ JumpIfSmi(value, false_label); | 5941 __ JumpIfSmi(value, false_label); |
| 5942 __ JumpIfObjectType( | 5942 __ CompareObjectType(value, map, scratch, FIRST_NONSTRING_TYPE); |
| 5943 value, map, scratch, FIRST_NONSTRING_TYPE, false_label, ge); | 5943 EmitBranch(instr, lt); |
| 5944 __ Ldrb(scratch, FieldMemOperand(map, Map::kBitFieldOffset)); | |
| 5945 EmitTestAndBranch(instr, eq, scratch, 1 << Map::kIsUndetectable); | |
| 5946 | 5944 |
| 5947 } else if (String::Equals(type_name, factory->symbol_string())) { | 5945 } else if (String::Equals(type_name, factory->symbol_string())) { |
| 5948 DCHECK((instr->temp1() != NULL) && (instr->temp2() != NULL)); | 5946 DCHECK((instr->temp1() != NULL) && (instr->temp2() != NULL)); |
| 5949 Register map = ToRegister(instr->temp1()); | 5947 Register map = ToRegister(instr->temp1()); |
| 5950 Register scratch = ToRegister(instr->temp2()); | 5948 Register scratch = ToRegister(instr->temp2()); |
| 5951 | 5949 |
| 5952 __ JumpIfSmi(value, false_label); | 5950 __ JumpIfSmi(value, false_label); |
| 5953 __ CompareObjectType(value, map, scratch, SYMBOL_TYPE); | 5951 __ CompareObjectType(value, map, scratch, SYMBOL_TYPE); |
| 5954 EmitBranch(instr, eq); | 5952 EmitBranch(instr, eq); |
| 5955 | 5953 |
| (...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6162 Handle<ScopeInfo> scope_info = instr->scope_info(); | 6160 Handle<ScopeInfo> scope_info = instr->scope_info(); |
| 6163 __ Push(scope_info); | 6161 __ Push(scope_info); |
| 6164 __ Push(ToRegister(instr->function())); | 6162 __ Push(ToRegister(instr->function())); |
| 6165 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 6163 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
| 6166 RecordSafepoint(Safepoint::kNoLazyDeopt); | 6164 RecordSafepoint(Safepoint::kNoLazyDeopt); |
| 6167 } | 6165 } |
| 6168 | 6166 |
| 6169 | 6167 |
| 6170 } // namespace internal | 6168 } // namespace internal |
| 6171 } // namespace v8 | 6169 } // namespace v8 |
| OLD | NEW |