| OLD | NEW |
| 1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 the V8 project authors. All rights reserved. |
| 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 2684 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2695 } | 2695 } |
| 2696 | 2696 |
| 2697 default: | 2697 default: |
| 2698 UNREACHABLE(); | 2698 UNREACHABLE(); |
| 2699 } | 2699 } |
| 2700 } | 2700 } |
| 2701 | 2701 |
| 2702 | 2702 |
| 2703 void FullCodeGenerator::VisitCountOperation(CountOperation* expr) { | 2703 void FullCodeGenerator::VisitCountOperation(CountOperation* expr) { |
| 2704 Comment cmnt(masm_, "[ CountOperation"); | 2704 Comment cmnt(masm_, "[ CountOperation"); |
| 2705 SetSourcePosition(expr->position()); |
| 2706 |
| 2705 // Invalid left-hand sides are rewritten to have a 'throw ReferenceError' | 2707 // Invalid left-hand sides are rewritten to have a 'throw ReferenceError' |
| 2706 // as the left-hand side. | 2708 // as the left-hand side. |
| 2707 if (!expr->expression()->IsValidLeftHandSide()) { | 2709 if (!expr->expression()->IsValidLeftHandSide()) { |
| 2708 VisitForEffect(expr->expression()); | 2710 VisitForEffect(expr->expression()); |
| 2709 return; | 2711 return; |
| 2710 } | 2712 } |
| 2711 | 2713 |
| 2712 // Expression can only be a property, a global or a (parameter or local) | 2714 // Expression can only be a property, a global or a (parameter or local) |
| 2713 // slot. Variables with rewrite to .arguments are treated as KEYED_PROPERTY. | 2715 // slot. Variables with rewrite to .arguments are treated as KEYED_PROPERTY. |
| 2714 enum LhsKind { VARIABLE, NAMED_PROPERTY, KEYED_PROPERTY }; | 2716 enum LhsKind { VARIABLE, NAMED_PROPERTY, KEYED_PROPERTY }; |
| (...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2965 } else { | 2967 } else { |
| 2966 if (if_false != fall_through) __ jmp(if_false); | 2968 if (if_false != fall_through) __ jmp(if_false); |
| 2967 } | 2969 } |
| 2968 | 2970 |
| 2969 return true; | 2971 return true; |
| 2970 } | 2972 } |
| 2971 | 2973 |
| 2972 | 2974 |
| 2973 void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) { | 2975 void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) { |
| 2974 Comment cmnt(masm_, "[ CompareOperation"); | 2976 Comment cmnt(masm_, "[ CompareOperation"); |
| 2977 SetSourcePosition(expr->position()); |
| 2975 | 2978 |
| 2976 // Always perform the comparison for its control flow. Pack the result | 2979 // Always perform the comparison for its control flow. Pack the result |
| 2977 // into the expression's context after the comparison is performed. | 2980 // into the expression's context after the comparison is performed. |
| 2978 | 2981 |
| 2979 Label materialize_true, materialize_false; | 2982 Label materialize_true, materialize_false; |
| 2980 Label* if_true = NULL; | 2983 Label* if_true = NULL; |
| 2981 Label* if_false = NULL; | 2984 Label* if_false = NULL; |
| 2982 PrepareTest(&materialize_true, &materialize_false, &if_true, &if_false); | 2985 PrepareTest(&materialize_true, &materialize_false, &if_true, &if_false); |
| 2983 | 2986 |
| 2984 // First we try a fast inlined version of the compare when one of | 2987 // First we try a fast inlined version of the compare when one of |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3151 __ mov(r1, Operand(r1, ASR, 1)); // Un-smi-tag value. | 3154 __ mov(r1, Operand(r1, ASR, 1)); // Un-smi-tag value. |
| 3152 __ add(pc, r1, Operand(masm_->CodeObject())); | 3155 __ add(pc, r1, Operand(masm_->CodeObject())); |
| 3153 } | 3156 } |
| 3154 | 3157 |
| 3155 | 3158 |
| 3156 #undef __ | 3159 #undef __ |
| 3157 | 3160 |
| 3158 } } // namespace v8::internal | 3161 } } // namespace v8::internal |
| 3159 | 3162 |
| 3160 #endif // V8_TARGET_ARCH_ARM | 3163 #endif // V8_TARGET_ARCH_ARM |
| OLD | NEW |