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 5506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5517 Label* false_label, | 5517 Label* false_label, |
5518 Register input, | 5518 Register input, |
5519 Handle<String> type_name, | 5519 Handle<String> type_name, |
5520 Register& cmp1, | 5520 Register& cmp1, |
5521 Operand& cmp2) { | 5521 Operand& cmp2) { |
5522 // This function utilizes the delay slot heavily. This is used to load | 5522 // This function utilizes the delay slot heavily. This is used to load |
5523 // values that are always usable without depending on the type of the input | 5523 // values that are always usable without depending on the type of the input |
5524 // register. | 5524 // register. |
5525 Condition final_branch_condition = kNoCondition; | 5525 Condition final_branch_condition = kNoCondition; |
5526 Register scratch = scratch0(); | 5526 Register scratch = scratch0(); |
5527 Factory* factory = isolate()->factory();facto | 5527 Factory* factory = isolate()->factory(); |
5528 if (String::Equals(type_name, factory->number_string())) { | 5528 if (String::Equals(type_name, factory->number_string())) { |
5529 __ JumpIfSmi(input, true_label); | 5529 __ JumpIfSmi(input, true_label); |
5530 __ lw(input, FieldMemOperand(input, HeapObject::kMapOffset)); | 5530 __ lw(input, FieldMemOperand(input, HeapObject::kMapOffset)); |
5531 __ LoadRoot(at, Heap::kHeapNumberMapRootIndex); | 5531 __ LoadRoot(at, Heap::kHeapNumberMapRootIndex); |
5532 cmp1 = input; | 5532 cmp1 = input; |
5533 cmp2 = Operand(at); | 5533 cmp2 = Operand(at); |
5534 final_branch_condition = eq; | 5534 final_branch_condition = eq; |
5535 | 5535 |
5536 } else if (String::Equals(type_name, factory->string_string())) { | 5536 } else if (String::Equals(type_name, factory->string_string())) { |
5537 __ JumpIfSmi(input, false_label); | 5537 __ JumpIfSmi(input, false_label); |
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5910 __ lw(result, FieldMemOperand(scratch, | 5910 __ lw(result, FieldMemOperand(scratch, |
5911 FixedArray::kHeaderSize - kPointerSize)); | 5911 FixedArray::kHeaderSize - kPointerSize)); |
5912 __ bind(deferred->exit()); | 5912 __ bind(deferred->exit()); |
5913 __ bind(&done); | 5913 __ bind(&done); |
5914 } | 5914 } |
5915 | 5915 |
5916 | 5916 |
5917 #undef __ | 5917 #undef __ |
5918 | 5918 |
5919 } } // namespace v8::internal | 5919 } } // namespace v8::internal |
OLD | NEW |