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

Unified Diff: src/arm/code-stubs-arm.cc

Issue 24792002: Thumb2 Backend: Enable Crankshaft to compile all Optimized Functions in Thumb2 mode Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/arm/builtins-arm.cc ('k') | src/arm/lithium-codegen-arm.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/arm/code-stubs-arm.cc
diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc
index 5858eac6294610656a0df56b7fc5c64d0d739856..f815dca1e815f572089a90456f90db4f954e32fb 100644
--- a/src/arm/code-stubs-arm.cc
+++ b/src/arm/code-stubs-arm.cc
@@ -359,6 +359,7 @@ void FastNewClosureStub::Generate(MacroAssembler* masm) {
__ LoadRoot(r4, Heap::kUndefinedValueRootIndex);
__ str(r4, FieldMemOperand(r0, JSFunction::kNextFunctionLinkOffset));
__ ldr(r3, FieldMemOperand(r3, SharedFunctionInfo::kCodeOffset));
+ __ CheckModeBit(r3);
__ add(r3, r3, Operand(Code::kHeaderSize - kHeapObjectTag));
__ str(r3, FieldMemOperand(r0, JSFunction::kCodeEntryOffset));
@@ -405,6 +406,7 @@ void FastNewClosureStub::Generate(MacroAssembler* masm) {
// TODO(fschneider): Idea: store proper code pointers in the map and either
// unmangle them on marking or do nothing as the whole map is discarded on
// major GC anyway.
+ __ CheckModeBit(r4);
__ add(r4, r4, Operand(Code::kHeaderSize - kHeapObjectTag));
__ str(r4, FieldMemOperand(r0, JSFunction::kCodeEntryOffset));
@@ -3241,6 +3243,8 @@ void InstanceofStub::Generate(MacroAssembler* masm) {
// (See LCodeGen::DoDeferredLInstanceOfKnownGlobal)
__ LoadFromSafepointRegisterSlot(scratch, r4);
__ sub(inline_site, lr, scratch);
+ __ tst(inline_site, Operand(3));
+ __ add(inline_site, inline_site, Operand(4), LeaveCC, ne);
// Get the map location in scratch and patch it.
__ GetRelocatedValueLocation(inline_site, scratch);
__ ldr(scratch, MemOperand(scratch));
@@ -3273,7 +3277,10 @@ void InstanceofStub::Generate(MacroAssembler* masm) {
} else {
// Patch the call site to return true.
__ LoadRoot(r0, Heap::kTrueValueRootIndex);
- __ add(inline_site, inline_site, Operand(kDeltaToLoadBoolResult));
+ __ tst(inline_site, Operand(3));
+ __ add(inline_site, inline_site, Operand(kDeltaToLoadBoolResult),
+ LeaveCC, eq);
+ __ add(inline_site, inline_site, Operand(14), LeaveCC, ne);
// Get the boolean result location in scratch and patch it.
__ GetRelocatedValueLocation(inline_site, scratch);
__ str(r0, MemOperand(scratch));
@@ -3291,7 +3298,10 @@ void InstanceofStub::Generate(MacroAssembler* masm) {
} else {
// Patch the call site to return false.
__ LoadRoot(r0, Heap::kFalseValueRootIndex);
- __ add(inline_site, inline_site, Operand(kDeltaToLoadBoolResult));
+ __ tst(inline_site, Operand(3));
+ __ add(inline_site, inline_site, Operand(kDeltaToLoadBoolResult),
+ LeaveCC, eq);
+ __ add(inline_site, inline_site, Operand(14), LeaveCC, ne);
// Get the boolean result location in scratch and patch it.
__ GetRelocatedValueLocation(inline_site, scratch);
__ str(r0, MemOperand(scratch));
@@ -6847,6 +6857,8 @@ void ProfileEntryHookStub::Generate(MacroAssembler* masm) {
// Save all caller-save registers as this may be called from anywhere.
__ stm(db_w, sp, kSavedRegs | lr.bit());
+ __ tst(lr, Operand(1));
+ __ add(lr, lr, Operand(1), LeaveCC, ne);
// Compute the function's address for the first argument.
__ sub(r0, lr, Operand(kReturnAddressDistanceFromFunctionStart));
« no previous file with comments | « src/arm/builtins-arm.cc ('k') | src/arm/lithium-codegen-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698