Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1069)

Side by Side Diff: src/full-codegen/ppc/full-codegen-ppc.cc

Issue 1406113007: Merge GlobalObject with JSGlobalObject. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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_PPC 5 #if V8_TARGET_ARCH_PPC
6 6
7 #include "src/code-factory.h" 7 #include "src/code-factory.h"
8 #include "src/code-stubs.h" 8 #include "src/code-stubs.h"
9 #include "src/codegen.h" 9 #include "src/codegen.h"
10 #include "src/debug/debug.h" 10 #include "src/debug/debug.h"
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 // global proxy when called as functions (without an explicit receiver 117 // global proxy when called as functions (without an explicit receiver
118 // object). 118 // object).
119 if (info->MustReplaceUndefinedReceiverWithGlobalProxy()) { 119 if (info->MustReplaceUndefinedReceiverWithGlobalProxy()) {
120 Label ok; 120 Label ok;
121 int receiver_offset = info->scope()->num_parameters() * kPointerSize; 121 int receiver_offset = info->scope()->num_parameters() * kPointerSize;
122 __ LoadP(r5, MemOperand(sp, receiver_offset), r0); 122 __ LoadP(r5, MemOperand(sp, receiver_offset), r0);
123 __ CompareRoot(r5, Heap::kUndefinedValueRootIndex); 123 __ CompareRoot(r5, Heap::kUndefinedValueRootIndex);
124 __ bne(&ok); 124 __ bne(&ok);
125 125
126 __ LoadP(r5, GlobalObjectOperand()); 126 __ LoadP(r5, GlobalObjectOperand());
127 __ LoadP(r5, FieldMemOperand(r5, GlobalObject::kGlobalProxyOffset)); 127 __ LoadP(r5, FieldMemOperand(r5, JSGlobalObject::kGlobalProxyOffset));
128 128
129 __ StoreP(r5, MemOperand(sp, receiver_offset), r0); 129 __ StoreP(r5, MemOperand(sp, receiver_offset), r0);
130 130
131 __ bind(&ok); 131 __ bind(&ok);
132 } 132 }
133 133
134 // Open a frame scope to indicate that there is a frame on the stack. The 134 // Open a frame scope to indicate that there is a frame on the stack. The
135 // MANUAL indicates that the scope shouldn't actually generate code to set up 135 // MANUAL indicates that the scope shouldn't actually generate code to set up
136 // the frame (that is done below). 136 // the frame (that is done below).
137 FrameScope frame_scope(masm_, StackFrame::MANUAL); 137 FrameScope frame_scope(masm_, StackFrame::MANUAL);
(...skipping 2091 matching lines...) Expand 10 before | Expand all | Expand 10 after
2229 2229
2230 __ Allocate(JSIteratorResult::kSize, r3, r5, r6, &allocate, TAG_OBJECT); 2230 __ Allocate(JSIteratorResult::kSize, r3, r5, r6, &allocate, TAG_OBJECT);
2231 __ b(&done_allocate); 2231 __ b(&done_allocate);
2232 2232
2233 __ bind(&allocate); 2233 __ bind(&allocate);
2234 __ Push(Smi::FromInt(JSIteratorResult::kSize)); 2234 __ Push(Smi::FromInt(JSIteratorResult::kSize));
2235 __ CallRuntime(Runtime::kAllocateInNewSpace, 1); 2235 __ CallRuntime(Runtime::kAllocateInNewSpace, 1);
2236 2236
2237 __ bind(&done_allocate); 2237 __ bind(&done_allocate);
2238 __ LoadP(r4, ContextOperand(cp, Context::GLOBAL_OBJECT_INDEX)); 2238 __ LoadP(r4, ContextOperand(cp, Context::GLOBAL_OBJECT_INDEX));
2239 __ LoadP(r4, FieldMemOperand(r4, GlobalObject::kNativeContextOffset)); 2239 __ LoadP(r4, FieldMemOperand(r4, JSGlobalObject::kNativeContextOffset));
2240 __ LoadP(r4, ContextOperand(r4, Context::ITERATOR_RESULT_MAP_INDEX)); 2240 __ LoadP(r4, ContextOperand(r4, Context::ITERATOR_RESULT_MAP_INDEX));
2241 __ pop(r5); 2241 __ pop(r5);
2242 __ LoadRoot(r6, 2242 __ LoadRoot(r6,
2243 done ? Heap::kTrueValueRootIndex : Heap::kFalseValueRootIndex); 2243 done ? Heap::kTrueValueRootIndex : Heap::kFalseValueRootIndex);
2244 __ LoadRoot(r7, Heap::kEmptyFixedArrayRootIndex); 2244 __ LoadRoot(r7, Heap::kEmptyFixedArrayRootIndex);
2245 __ StoreP(r4, FieldMemOperand(r3, HeapObject::kMapOffset), r0); 2245 __ StoreP(r4, FieldMemOperand(r3, HeapObject::kMapOffset), r0);
2246 __ StoreP(r7, FieldMemOperand(r3, JSObject::kPropertiesOffset), r0); 2246 __ StoreP(r7, FieldMemOperand(r3, JSObject::kPropertiesOffset), r0);
2247 __ StoreP(r7, FieldMemOperand(r3, JSObject::kElementsOffset), r0); 2247 __ StoreP(r7, FieldMemOperand(r3, JSObject::kElementsOffset), r0);
2248 __ StoreP(r5, FieldMemOperand(r3, JSIteratorResult::kValueOffset), r0); 2248 __ StoreP(r5, FieldMemOperand(r3, JSIteratorResult::kValueOffset), r0);
2249 __ StoreP(r6, FieldMemOperand(r3, JSIteratorResult::kDoneOffset), r0); 2249 __ StoreP(r6, FieldMemOperand(r3, JSIteratorResult::kDoneOffset), r0);
(...skipping 2012 matching lines...) Expand 10 before | Expand all | Expand 10 after
4262 void FullCodeGenerator::EmitCreateIterResultObject(CallRuntime* expr) { 4262 void FullCodeGenerator::EmitCreateIterResultObject(CallRuntime* expr) {
4263 ZoneList<Expression*>* args = expr->arguments(); 4263 ZoneList<Expression*>* args = expr->arguments();
4264 DCHECK_EQ(2, args->length()); 4264 DCHECK_EQ(2, args->length());
4265 VisitForStackValue(args->at(0)); 4265 VisitForStackValue(args->at(0));
4266 VisitForStackValue(args->at(1)); 4266 VisitForStackValue(args->at(1));
4267 4267
4268 Label runtime, done; 4268 Label runtime, done;
4269 4269
4270 __ Allocate(JSIteratorResult::kSize, r3, r5, r6, &runtime, TAG_OBJECT); 4270 __ Allocate(JSIteratorResult::kSize, r3, r5, r6, &runtime, TAG_OBJECT);
4271 __ LoadP(r4, ContextOperand(cp, Context::GLOBAL_OBJECT_INDEX)); 4271 __ LoadP(r4, ContextOperand(cp, Context::GLOBAL_OBJECT_INDEX));
4272 __ LoadP(r4, FieldMemOperand(r4, GlobalObject::kNativeContextOffset)); 4272 __ LoadP(r4, FieldMemOperand(r4, JSGlobalObject::kNativeContextOffset));
4273 __ LoadP(r4, ContextOperand(r4, Context::ITERATOR_RESULT_MAP_INDEX)); 4273 __ LoadP(r4, ContextOperand(r4, Context::ITERATOR_RESULT_MAP_INDEX));
4274 __ Pop(r5, r6); 4274 __ Pop(r5, r6);
4275 __ LoadRoot(r7, Heap::kEmptyFixedArrayRootIndex); 4275 __ LoadRoot(r7, Heap::kEmptyFixedArrayRootIndex);
4276 __ StoreP(r4, FieldMemOperand(r3, HeapObject::kMapOffset), r0); 4276 __ StoreP(r4, FieldMemOperand(r3, HeapObject::kMapOffset), r0);
4277 __ StoreP(r7, FieldMemOperand(r3, JSObject::kPropertiesOffset), r0); 4277 __ StoreP(r7, FieldMemOperand(r3, JSObject::kPropertiesOffset), r0);
4278 __ StoreP(r7, FieldMemOperand(r3, JSObject::kElementsOffset), r0); 4278 __ StoreP(r7, FieldMemOperand(r3, JSObject::kElementsOffset), r0);
4279 __ StoreP(r5, FieldMemOperand(r3, JSIteratorResult::kValueOffset), r0); 4279 __ StoreP(r5, FieldMemOperand(r3, JSIteratorResult::kValueOffset), r0);
4280 __ StoreP(r6, FieldMemOperand(r3, JSIteratorResult::kDoneOffset), r0); 4280 __ StoreP(r6, FieldMemOperand(r3, JSIteratorResult::kDoneOffset), r0);
4281 STATIC_ASSERT(JSIteratorResult::kSize == 5 * kPointerSize); 4281 STATIC_ASSERT(JSIteratorResult::kSize == 5 * kPointerSize);
4282 __ b(&done); 4282 __ b(&done);
4283 4283
4284 __ bind(&runtime); 4284 __ bind(&runtime);
4285 __ CallRuntime(Runtime::kCreateIterResultObject, 2); 4285 __ CallRuntime(Runtime::kCreateIterResultObject, 2);
4286 4286
4287 __ bind(&done); 4287 __ bind(&done);
4288 context()->Plug(r3); 4288 context()->Plug(r3);
4289 } 4289 }
4290 4290
4291 4291
4292 void FullCodeGenerator::EmitLoadJSRuntimeFunction(CallRuntime* expr) { 4292 void FullCodeGenerator::EmitLoadJSRuntimeFunction(CallRuntime* expr) {
4293 // Push undefined as the receiver. 4293 // Push undefined as the receiver.
4294 __ LoadRoot(r3, Heap::kUndefinedValueRootIndex); 4294 __ LoadRoot(r3, Heap::kUndefinedValueRootIndex);
4295 __ push(r3); 4295 __ push(r3);
4296 4296
4297 __ LoadP(r3, GlobalObjectOperand()); 4297 __ LoadP(r3, GlobalObjectOperand());
4298 __ LoadP(r3, FieldMemOperand(r3, GlobalObject::kNativeContextOffset)); 4298 __ LoadP(r3, FieldMemOperand(r3, JSGlobalObject::kNativeContextOffset));
4299 __ LoadP(r3, ContextOperand(r3, expr->context_index())); 4299 __ LoadP(r3, ContextOperand(r3, expr->context_index()));
4300 } 4300 }
4301 4301
4302 4302
4303 void FullCodeGenerator::EmitCallJSRuntimeFunction(CallRuntime* expr) { 4303 void FullCodeGenerator::EmitCallJSRuntimeFunction(CallRuntime* expr) {
4304 ZoneList<Expression*>* args = expr->arguments(); 4304 ZoneList<Expression*>* args = expr->arguments();
4305 int arg_count = args->length(); 4305 int arg_count = args->length();
4306 4306
4307 SetCallPosition(expr, arg_count); 4307 SetCallPosition(expr, arg_count);
4308 CallFunctionStub stub(isolate(), arg_count, NO_CALL_FUNCTION_FLAGS); 4308 CallFunctionStub stub(isolate(), arg_count, NO_CALL_FUNCTION_FLAGS);
(...skipping 786 matching lines...) Expand 10 before | Expand all | Expand 10 after
5095 return ON_STACK_REPLACEMENT; 5095 return ON_STACK_REPLACEMENT;
5096 } 5096 }
5097 5097
5098 DCHECK(interrupt_address == 5098 DCHECK(interrupt_address ==
5099 isolate->builtins()->OsrAfterStackCheck()->entry()); 5099 isolate->builtins()->OsrAfterStackCheck()->entry());
5100 return OSR_AFTER_STACK_CHECK; 5100 return OSR_AFTER_STACK_CHECK;
5101 } 5101 }
5102 } // namespace internal 5102 } // namespace internal
5103 } // namespace v8 5103 } // namespace v8
5104 #endif // V8_TARGET_ARCH_PPC 5104 #endif // V8_TARGET_ARCH_PPC
OLDNEW
« no previous file with comments | « src/full-codegen/mips64/full-codegen-mips64.cc ('k') | src/full-codegen/x64/full-codegen-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698