OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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 #if V8_TARGET_ARCH_S390 | 5 #if V8_TARGET_ARCH_S390 |
6 | 6 |
7 #include "src/ast/compile-time-value.h" | 7 #include "src/ast/compile-time-value.h" |
8 #include "src/ast/scopes.h" | 8 #include "src/ast/scopes.h" |
9 #include "src/builtins/builtins-constructor.h" | 9 #include "src/builtins/builtins-constructor.h" |
10 #include "src/code-factory.h" | 10 #include "src/code-factory.h" |
(...skipping 1093 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1104 property->kind() == ObjectLiteral::Property::SETTER); | 1104 property->kind() == ObjectLiteral::Property::SETTER); |
1105 int offset = property->kind() == ObjectLiteral::Property::GETTER ? 2 : 3; | 1105 int offset = property->kind() == ObjectLiteral::Property::GETTER ? 2 : 3; |
1106 EmitSetHomeObject(expression, offset, property->GetSlot()); | 1106 EmitSetHomeObject(expression, offset, property->GetSlot()); |
1107 } | 1107 } |
1108 } | 1108 } |
1109 } | 1109 } |
1110 | 1110 |
1111 void FullCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) { | 1111 void FullCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) { |
1112 Comment cmnt(masm_, "[ ObjectLiteral"); | 1112 Comment cmnt(masm_, "[ ObjectLiteral"); |
1113 | 1113 |
1114 Handle<FixedArray> constant_properties = expr->constant_properties(); | 1114 Handle<FixedArray> constant_properties = |
| 1115 expr->GetOrBuildConstantProperties(isolate()); |
1115 __ LoadP(r5, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset)); | 1116 __ LoadP(r5, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset)); |
1116 __ LoadSmiLiteral(r4, Smi::FromInt(expr->literal_index())); | 1117 __ LoadSmiLiteral(r4, Smi::FromInt(expr->literal_index())); |
1117 __ mov(r3, Operand(constant_properties)); | 1118 __ mov(r3, Operand(constant_properties)); |
1118 int flags = expr->ComputeFlags(); | 1119 int flags = expr->ComputeFlags(); |
1119 __ LoadSmiLiteral(r2, Smi::FromInt(flags)); | 1120 __ LoadSmiLiteral(r2, Smi::FromInt(flags)); |
1120 if (MustCreateObjectLiteralWithRuntime(expr)) { | 1121 if (MustCreateObjectLiteralWithRuntime(expr)) { |
1121 __ Push(r5, r4, r3, r2); | 1122 __ Push(r5, r4, r3, r2); |
1122 __ CallRuntime(Runtime::kCreateObjectLiteral); | 1123 __ CallRuntime(Runtime::kCreateObjectLiteral); |
1123 } else { | 1124 } else { |
1124 Callable callable = CodeFactory::FastCloneShallowObject( | 1125 Callable callable = CodeFactory::FastCloneShallowObject( |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1232 if (result_saved) { | 1233 if (result_saved) { |
1233 context()->PlugTOS(); | 1234 context()->PlugTOS(); |
1234 } else { | 1235 } else { |
1235 context()->Plug(r2); | 1236 context()->Plug(r2); |
1236 } | 1237 } |
1237 } | 1238 } |
1238 | 1239 |
1239 void FullCodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) { | 1240 void FullCodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) { |
1240 Comment cmnt(masm_, "[ ArrayLiteral"); | 1241 Comment cmnt(masm_, "[ ArrayLiteral"); |
1241 | 1242 |
1242 Handle<ConstantElementsPair> constant_elements = expr->constant_elements(); | 1243 Handle<ConstantElementsPair> constant_elements = |
| 1244 expr->GetOrBuildConstantElements(isolate()); |
1243 bool has_fast_elements = | 1245 bool has_fast_elements = |
1244 IsFastObjectElementsKind(expr->constant_elements_kind()); | 1246 IsFastObjectElementsKind(expr->constant_elements_kind()); |
1245 | 1247 |
1246 AllocationSiteMode allocation_site_mode = TRACK_ALLOCATION_SITE; | 1248 AllocationSiteMode allocation_site_mode = TRACK_ALLOCATION_SITE; |
1247 if (has_fast_elements && !FLAG_allocation_site_pretenuring) { | 1249 if (has_fast_elements && !FLAG_allocation_site_pretenuring) { |
1248 // If the only customer of allocation sites is transitioning, then | 1250 // If the only customer of allocation sites is transitioning, then |
1249 // we can turn it off if we don't have anywhere else to transition to. | 1251 // we can turn it off if we don't have anywhere else to transition to. |
1250 allocation_site_mode = DONT_TRACK_ALLOCATION_SITE; | 1252 allocation_site_mode = DONT_TRACK_ALLOCATION_SITE; |
1251 } | 1253 } |
1252 | 1254 |
(...skipping 1453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2706 USE(kOSRBranchInstruction); | 2708 USE(kOSRBranchInstruction); |
2707 DCHECK(kOSRBranchInstruction == br_instr); | 2709 DCHECK(kOSRBranchInstruction == br_instr); |
2708 | 2710 |
2709 DCHECK(interrupt_address == | 2711 DCHECK(interrupt_address == |
2710 isolate->builtins()->OnStackReplacement()->entry()); | 2712 isolate->builtins()->OnStackReplacement()->entry()); |
2711 return ON_STACK_REPLACEMENT; | 2713 return ON_STACK_REPLACEMENT; |
2712 } | 2714 } |
2713 } // namespace internal | 2715 } // namespace internal |
2714 } // namespace v8 | 2716 } // namespace v8 |
2715 #endif // V8_TARGET_ARCH_S390 | 2717 #endif // V8_TARGET_ARCH_S390 |
OLD | NEW |