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

Side by Side Diff: src/ppc/macro-assembler-ppc.cc

Issue 1316943002: Move (uppercase) JS builtins from js builtins object to native context. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: remove Isolate::js_builtins_object Created 5 years, 3 months 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
« no previous file with comments | « src/ppc/macro-assembler-ppc.h ('k') | src/runtime.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #include <assert.h> // For assert 5 #include <assert.h> // For assert
6 #include <limits.h> // For LONG_MIN, LONG_MAX. 6 #include <limits.h> // For LONG_MIN, LONG_MAX.
7 7
8 #if V8_TARGET_ARCH_PPC 8 #if V8_TARGET_ARCH_PPC
9 9
10 #include "src/base/bits.h" 10 #include "src/base/bits.h"
(...skipping 2294 matching lines...) Expand 10 before | Expand all | Expand 10 after
2305 } 2305 }
2306 2306
2307 2307
2308 void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin) { 2308 void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin) {
2309 mov(r4, Operand(builtin)); 2309 mov(r4, Operand(builtin));
2310 CEntryStub stub(isolate(), 1); 2310 CEntryStub stub(isolate(), 1);
2311 Jump(stub.GetCode(), RelocInfo::CODE_TARGET); 2311 Jump(stub.GetCode(), RelocInfo::CODE_TARGET);
2312 } 2312 }
2313 2313
2314 2314
2315 void MacroAssembler::InvokeBuiltin(Builtins::JavaScript id, InvokeFlag flag, 2315 void MacroAssembler::InvokeBuiltin(int native_context_index, InvokeFlag flag,
2316 const CallWrapper& call_wrapper) { 2316 const CallWrapper& call_wrapper) {
2317 // You can't call a builtin without a valid frame. 2317 // You can't call a builtin without a valid frame.
2318 DCHECK(flag == JUMP_FUNCTION || has_frame()); 2318 DCHECK(flag == JUMP_FUNCTION || has_frame());
2319 2319
2320 GetBuiltinEntry(ip, id); 2320 GetBuiltinEntry(ip, native_context_index);
2321 if (flag == CALL_FUNCTION) { 2321 if (flag == CALL_FUNCTION) {
2322 call_wrapper.BeforeCall(CallSize(ip)); 2322 call_wrapper.BeforeCall(CallSize(ip));
2323 CallJSEntry(ip); 2323 CallJSEntry(ip);
2324 call_wrapper.AfterCall(); 2324 call_wrapper.AfterCall();
2325 } else { 2325 } else {
2326 DCHECK(flag == JUMP_FUNCTION); 2326 DCHECK(flag == JUMP_FUNCTION);
2327 JumpToJSEntry(ip); 2327 JumpToJSEntry(ip);
2328 } 2328 }
2329 } 2329 }
2330 2330
2331 2331
2332 void MacroAssembler::GetBuiltinFunction(Register target, 2332 void MacroAssembler::GetBuiltinFunction(Register target,
2333 Builtins::JavaScript id) { 2333 int native_context_index) {
2334 // Load the builtins object into target register. 2334 // Load the builtins object into target register.
2335 LoadP(target, 2335 LoadP(target,
2336 MemOperand(cp, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX))); 2336 MemOperand(cp, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX)));
2337 LoadP(target, FieldMemOperand(target, GlobalObject::kBuiltinsOffset)); 2337 LoadP(target, FieldMemOperand(target, GlobalObject::kNativeContextOffset));
2338 // Load the JavaScript builtin function from the builtins object. 2338 // Load the JavaScript builtin function from the builtins object.
2339 LoadP(target, 2339 LoadP(target, ContextOperand(target, native_context_index), r0);
2340 FieldMemOperand(target, JSBuiltinsObject::OffsetOfFunctionWithId(id)),
2341 r0);
2342 } 2340 }
2343 2341
2344 2342
2345 void MacroAssembler::GetBuiltinEntry(Register target, Builtins::JavaScript id) { 2343 void MacroAssembler::GetBuiltinEntry(Register target,
2344 int native_context_index) {
2346 DCHECK(!target.is(r4)); 2345 DCHECK(!target.is(r4));
2347 GetBuiltinFunction(r4, id); 2346 GetBuiltinFunction(r4, native_context_index);
2348 // Load the code entry point from the builtins object. 2347 // Load the code entry point from the builtins object.
2349 LoadP(target, FieldMemOperand(r4, JSFunction::kCodeEntryOffset)); 2348 LoadP(target, FieldMemOperand(r4, JSFunction::kCodeEntryOffset));
2350 } 2349 }
2351 2350
2352 2351
2353 void MacroAssembler::SetCounter(StatsCounter* counter, int value, 2352 void MacroAssembler::SetCounter(StatsCounter* counter, int value,
2354 Register scratch1, Register scratch2) { 2353 Register scratch1, Register scratch2) {
2355 if (FLAG_native_code_counters && counter->Enabled()) { 2354 if (FLAG_native_code_counters && counter->Enabled()) {
2356 mov(scratch1, Operand(value)); 2355 mov(scratch1, Operand(value));
2357 mov(scratch2, Operand(ExternalReference(counter))); 2356 mov(scratch2, Operand(ExternalReference(counter)));
(...skipping 2289 matching lines...) Expand 10 before | Expand all | Expand 10 after
4647 } 4646 }
4648 if (mag.shift > 0) srawi(result, result, mag.shift); 4647 if (mag.shift > 0) srawi(result, result, mag.shift);
4649 ExtractBit(r0, dividend, 31); 4648 ExtractBit(r0, dividend, 31);
4650 add(result, result, r0); 4649 add(result, result, r0);
4651 } 4650 }
4652 4651
4653 } // namespace internal 4652 } // namespace internal
4654 } // namespace v8 4653 } // namespace v8
4655 4654
4656 #endif // V8_TARGET_ARCH_PPC 4655 #endif // V8_TARGET_ARCH_PPC
OLDNEW
« no previous file with comments | « src/ppc/macro-assembler-ppc.h ('k') | src/runtime.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698