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

Side by Side Diff: src/mips/macro-assembler-mips.h

Issue 14305011: MIPS: Disallow dereferencing deferred handles when generating optimized code. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « src/mips/lithium-mips.h ('k') | src/mips/macro-assembler-mips.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 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 const Operand& rt = Operand(zero_reg), BranchDelaySlot bd = PROTECT 181 const Operand& rt = Operand(zero_reg), BranchDelaySlot bd = PROTECT
182 182
183 void Jump(Register target, COND_ARGS); 183 void Jump(Register target, COND_ARGS);
184 void Jump(intptr_t target, RelocInfo::Mode rmode, COND_ARGS); 184 void Jump(intptr_t target, RelocInfo::Mode rmode, COND_ARGS);
185 void Jump(Address target, RelocInfo::Mode rmode, COND_ARGS); 185 void Jump(Address target, RelocInfo::Mode rmode, COND_ARGS);
186 void Jump(Handle<Code> code, RelocInfo::Mode rmode, COND_ARGS); 186 void Jump(Handle<Code> code, RelocInfo::Mode rmode, COND_ARGS);
187 static int CallSize(Register target, COND_ARGS); 187 static int CallSize(Register target, COND_ARGS);
188 void Call(Register target, COND_ARGS); 188 void Call(Register target, COND_ARGS);
189 static int CallSize(Address target, RelocInfo::Mode rmode, COND_ARGS); 189 static int CallSize(Address target, RelocInfo::Mode rmode, COND_ARGS);
190 void Call(Address target, RelocInfo::Mode rmode, COND_ARGS); 190 void Call(Address target, RelocInfo::Mode rmode, COND_ARGS);
191 static int CallSize(Handle<Code> code, 191 int CallSize(Handle<Code> code,
192 RelocInfo::Mode rmode = RelocInfo::CODE_TARGET, 192 RelocInfo::Mode rmode = RelocInfo::CODE_TARGET,
193 TypeFeedbackId ast_id = TypeFeedbackId::None(), 193 TypeFeedbackId ast_id = TypeFeedbackId::None(),
194 COND_ARGS); 194 COND_ARGS);
195 void Call(Handle<Code> code, 195 void Call(Handle<Code> code,
196 RelocInfo::Mode rmode = RelocInfo::CODE_TARGET, 196 RelocInfo::Mode rmode = RelocInfo::CODE_TARGET,
197 TypeFeedbackId ast_id = TypeFeedbackId::None(), 197 TypeFeedbackId ast_id = TypeFeedbackId::None(),
198 COND_ARGS); 198 COND_ARGS);
199 void Ret(COND_ARGS); 199 void Ret(COND_ARGS);
200 inline void Ret(BranchDelaySlot bd, Condition cond = al, 200 inline void Ret(BranchDelaySlot bd, Condition cond = al,
201 Register rs = zero_reg, const Operand& rt = Operand(zero_reg)) { 201 Register rs = zero_reg, const Operand& rt = Operand(zero_reg)) {
202 Ret(cond, rs, rt, bd); 202 Ret(cond, rs, rt, bd);
203 } 203 }
204 204
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 // Store an object to the root table. 282 // Store an object to the root table.
283 void StoreRoot(Register source, 283 void StoreRoot(Register source,
284 Heap::RootListIndex index); 284 Heap::RootListIndex index);
285 void StoreRoot(Register source, 285 void StoreRoot(Register source,
286 Heap::RootListIndex index, 286 Heap::RootListIndex index,
287 Condition cond, Register src1, const Operand& src2); 287 Condition cond, Register src1, const Operand& src2);
288 288
289 void LoadHeapObject(Register dst, Handle<HeapObject> object); 289 void LoadHeapObject(Register dst, Handle<HeapObject> object);
290 290
291 void LoadObject(Register result, Handle<Object> object) { 291 void LoadObject(Register result, Handle<Object> object) {
292 ALLOW_HANDLE_DEREF(isolate(), "heap object check");
292 if (object->IsHeapObject()) { 293 if (object->IsHeapObject()) {
293 LoadHeapObject(result, Handle<HeapObject>::cast(object)); 294 LoadHeapObject(result, Handle<HeapObject>::cast(object));
294 } else { 295 } else {
295 li(result, object); 296 li(result, object);
296 } 297 }
297 } 298 }
298 299
299 // --------------------------------------------------------------------------- 300 // ---------------------------------------------------------------------------
300 // GC Support 301 // GC Support
301 302
(...skipping 573 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 876
876 // Invoke the JavaScript function in the given register. Changes the 877 // Invoke the JavaScript function in the given register. Changes the
877 // current context to the context in the function before invoking. 878 // current context to the context in the function before invoking.
878 void InvokeFunction(Register function, 879 void InvokeFunction(Register function,
879 const ParameterCount& actual, 880 const ParameterCount& actual,
880 InvokeFlag flag, 881 InvokeFlag flag,
881 const CallWrapper& call_wrapper, 882 const CallWrapper& call_wrapper,
882 CallKind call_kind); 883 CallKind call_kind);
883 884
884 void InvokeFunction(Handle<JSFunction> function, 885 void InvokeFunction(Handle<JSFunction> function,
886 const ParameterCount& expected,
885 const ParameterCount& actual, 887 const ParameterCount& actual,
886 InvokeFlag flag, 888 InvokeFlag flag,
887 const CallWrapper& call_wrapper, 889 const CallWrapper& call_wrapper,
888 CallKind call_kind); 890 CallKind call_kind);
889 891
890 892
891 void IsObjectJSObjectType(Register heap_object, 893 void IsObjectJSObjectType(Register heap_object,
892 Register map, 894 Register map,
893 Register scratch, 895 Register scratch,
894 Label* fail); 896 Label* fail);
(...skipping 681 matching lines...) Expand 10 before | Expand all | Expand 10 after
1576 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) 1578 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x)
1577 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 1579 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
1578 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 1580 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
1579 #else 1581 #else
1580 #define ACCESS_MASM(masm) masm-> 1582 #define ACCESS_MASM(masm) masm->
1581 #endif 1583 #endif
1582 1584
1583 } } // namespace v8::internal 1585 } } // namespace v8::internal
1584 1586
1585 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ 1587 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_
OLDNEW
« no previous file with comments | « src/mips/lithium-mips.h ('k') | src/mips/macro-assembler-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698