| Index: src/arm/code-stubs-arm.h
|
| ===================================================================
|
| --- src/arm/code-stubs-arm.h (revision 7006)
|
| +++ src/arm/code-stubs-arm.h (working copy)
|
| @@ -288,8 +288,11 @@
|
|
|
| void Generate(MacroAssembler* masm);
|
| void GenerateGeneric(MacroAssembler* masm);
|
| - void GenerateOptimisticSmiOperation(MacroAssembler* masm);
|
| - void GenerateVFPOperation(MacroAssembler* masm);
|
| + void GenerateSmiSmiOperation(MacroAssembler* masm);
|
| + void GenerateFPOperation(MacroAssembler* masm,
|
| + bool smi_operands,
|
| + Label* not_numbers,
|
| + Label* gc_required);
|
| void GenerateSmiCode(MacroAssembler* masm,
|
| Label* gc_required,
|
| SmiCodeGenerateHeapNumberResults heapnumber_results);
|
| @@ -568,6 +571,45 @@
|
| };
|
|
|
|
|
| +// Trampoline stub to call into native code. To call safely into native code
|
| +// in the presence of compacting GC (which can move code objects) we need to
|
| +// keep the code which called into native pinned in the memory. Currently the
|
| +// simplest approach is to generate such stub early enough so it can never be
|
| +// moved by GC
|
| +class DirectCEntryStub: public CodeStub {
|
| + public:
|
| + DirectCEntryStub() {}
|
| + void Generate(MacroAssembler* masm);
|
| + void GenerateCall(MacroAssembler* masm, ApiFunction *function);
|
| +
|
| + private:
|
| + Major MajorKey() { return DirectCEntry; }
|
| + int MinorKey() { return 0; }
|
| + const char* GetName() { return "DirectCEntryStub"; }
|
| +};
|
| +
|
| +
|
| +// Generate code the to load an element from a pixel array. The receiver is
|
| +// assumed to not be a smi and to have elements, the caller must guarantee this
|
| +// precondition. If the receiver does not have elements that are pixel arrays,
|
| +// the generated code jumps to not_pixel_array. If key is not a smi, then the
|
| +// generated code branches to key_not_smi. Callers can specify NULL for
|
| +// key_not_smi to signal that a smi check has already been performed on key so
|
| +// that the smi check is not generated . If key is not a valid index within the
|
| +// bounds of the pixel array, the generated code jumps to out_of_range.
|
| +void GenerateFastPixelArrayLoad(MacroAssembler* masm,
|
| + Register receiver,
|
| + Register key,
|
| + Register elements_map,
|
| + Register elements,
|
| + Register scratch1,
|
| + Register scratch2,
|
| + Register result,
|
| + Label* not_pixel_array,
|
| + Label* key_not_smi,
|
| + Label* out_of_range);
|
| +
|
| +
|
| } } // namespace v8::internal
|
|
|
| #endif // V8_ARM_CODE_STUBS_ARM_H_
|
|
|