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

Side by Side Diff: src/mips/macro-assembler-mips.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/mips/macro-assembler-mips.h ('k') | src/mips64/builtins-mips64.cc » ('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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 <limits.h> // For LONG_MIN, LONG_MAX. 5 #include <limits.h> // For LONG_MIN, LONG_MAX.
6 6
7 #if V8_TARGET_ARCH_MIPS 7 #if V8_TARGET_ARCH_MIPS
8 8
9 #include "src/base/bits.h" 9 #include "src/base/bits.h"
10 #include "src/base/division-by-constant.h" 10 #include "src/base/division-by-constant.h"
(...skipping 4573 matching lines...) Expand 10 before | Expand all | Expand 10 after
4584 CEntryStub stub(isolate(), 1); 4584 CEntryStub stub(isolate(), 1);
4585 Jump(stub.GetCode(), 4585 Jump(stub.GetCode(),
4586 RelocInfo::CODE_TARGET, 4586 RelocInfo::CODE_TARGET,
4587 al, 4587 al,
4588 zero_reg, 4588 zero_reg,
4589 Operand(zero_reg), 4589 Operand(zero_reg),
4590 bd); 4590 bd);
4591 } 4591 }
4592 4592
4593 4593
4594 void MacroAssembler::InvokeBuiltin(Builtins::JavaScript id, 4594 void MacroAssembler::InvokeBuiltin(int native_context_index, InvokeFlag flag,
4595 InvokeFlag flag,
4596 const CallWrapper& call_wrapper) { 4595 const CallWrapper& call_wrapper) {
4597 // You can't call a builtin without a valid frame. 4596 // You can't call a builtin without a valid frame.
4598 DCHECK(flag == JUMP_FUNCTION || has_frame()); 4597 DCHECK(flag == JUMP_FUNCTION || has_frame());
4599 4598
4600 GetBuiltinEntry(t9, id); 4599 GetBuiltinEntry(t9, native_context_index);
4601 if (flag == CALL_FUNCTION) { 4600 if (flag == CALL_FUNCTION) {
4602 call_wrapper.BeforeCall(CallSize(t9)); 4601 call_wrapper.BeforeCall(CallSize(t9));
4603 Call(t9); 4602 Call(t9);
4604 call_wrapper.AfterCall(); 4603 call_wrapper.AfterCall();
4605 } else { 4604 } else {
4606 DCHECK(flag == JUMP_FUNCTION); 4605 DCHECK(flag == JUMP_FUNCTION);
4607 Jump(t9); 4606 Jump(t9);
4608 } 4607 }
4609 } 4608 }
4610 4609
4611 4610
4612 void MacroAssembler::GetBuiltinFunction(Register target, 4611 void MacroAssembler::GetBuiltinFunction(Register target,
4613 Builtins::JavaScript id) { 4612 int native_context_index) {
4614 // Load the builtins object into target register. 4613 // Load the builtins object into target register.
4615 lw(target, MemOperand(cp, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX))); 4614 lw(target, MemOperand(cp, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX)));
4616 lw(target, FieldMemOperand(target, GlobalObject::kBuiltinsOffset)); 4615 lw(target, FieldMemOperand(target, GlobalObject::kNativeContextOffset));
4617 // Load the JavaScript builtin function from the builtins object. 4616 // Load the JavaScript builtin function from the builtins object.
4618 lw(target, FieldMemOperand(target, 4617 lw(target, ContextOperand(target, native_context_index));
4619 JSBuiltinsObject::OffsetOfFunctionWithId(id)));
4620 } 4618 }
4621 4619
4622 4620
4623 void MacroAssembler::GetBuiltinEntry(Register target, Builtins::JavaScript id) { 4621 void MacroAssembler::GetBuiltinEntry(Register target,
4622 int native_context_index) {
4624 DCHECK(!target.is(a1)); 4623 DCHECK(!target.is(a1));
4625 GetBuiltinFunction(a1, id); 4624 GetBuiltinFunction(a1, native_context_index);
4626 // Load the code entry point from the builtins object. 4625 // Load the code entry point from the builtins object.
4627 lw(target, FieldMemOperand(a1, JSFunction::kCodeEntryOffset)); 4626 lw(target, FieldMemOperand(a1, JSFunction::kCodeEntryOffset));
4628 } 4627 }
4629 4628
4630 4629
4631 void MacroAssembler::SetCounter(StatsCounter* counter, int value, 4630 void MacroAssembler::SetCounter(StatsCounter* counter, int value,
4632 Register scratch1, Register scratch2) { 4631 Register scratch1, Register scratch2) {
4633 if (FLAG_native_code_counters && counter->Enabled()) { 4632 if (FLAG_native_code_counters && counter->Enabled()) {
4634 li(scratch1, Operand(value)); 4633 li(scratch1, Operand(value));
4635 li(scratch2, Operand(ExternalReference(counter))); 4634 li(scratch2, Operand(ExternalReference(counter)));
(...skipping 1386 matching lines...) Expand 10 before | Expand all | Expand 10 after
6022 if (mag.shift > 0) sra(result, result, mag.shift); 6021 if (mag.shift > 0) sra(result, result, mag.shift);
6023 srl(at, dividend, 31); 6022 srl(at, dividend, 31);
6024 Addu(result, result, Operand(at)); 6023 Addu(result, result, Operand(at));
6025 } 6024 }
6026 6025
6027 6026
6028 } // namespace internal 6027 } // namespace internal
6029 } // namespace v8 6028 } // namespace v8
6030 6029
6031 #endif // V8_TARGET_ARCH_MIPS 6030 #endif // V8_TARGET_ARCH_MIPS
OLDNEW
« no previous file with comments | « src/mips/macro-assembler-mips.h ('k') | src/mips64/builtins-mips64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698