~ubuntu-branches/ubuntu/saucy/libv8/saucy

« back to all changes in this revision

Viewing changes to src/x64/full-codegen-x64.cc

  • Committer: Package Import Robot
  • Author(s): Jérémy Lal
  • Date: 2012-04-07 16:26:13 UTC
  • mfrom: (15.1.27 sid)
  • Revision ID: package-import@ubuntu.com-20120407162613-dqo1m6w9r3fh8tst
Tags: 3.8.9.16-3
* mipsel build fixes :
  + v8_use_mips_abi_hardfloat=false, this lowers EABI requirements.
  + v8_can_use_fpu_instructions=false, detect if FPU is present.
  + set -Wno-unused-but-set-variable only on mipsel.

Show diffs side-by-side

added added

removed removed

Lines of Context:
106
106
// formal parameter count expected by the function.
107
107
//
108
108
// The live registers are:
109
 
//   o rdi: the JS function object being called (ie, ourselves)
 
109
//   o rdi: the JS function object being called (i.e. ourselves)
110
110
//   o rsi: our context
111
111
//   o rbp: our caller's frame pointer
112
112
//   o rsp: stack pointer (pointing to return address)
226
226
    //   function, receiver address, parameter count.
227
227
    // The stub will rewrite receiver and parameter count if the previous
228
228
    // stack frame was an arguments adapter frame.
229
 
    ArgumentsAccessStub stub(
230
 
        is_classic_mode() ? ArgumentsAccessStub::NEW_NON_STRICT_SLOW
231
 
                          : ArgumentsAccessStub::NEW_STRICT);
 
229
    ArgumentsAccessStub::Type type;
 
230
    if (!is_classic_mode()) {
 
231
      type = ArgumentsAccessStub::NEW_STRICT;
 
232
    } else if (function()->has_duplicate_parameters()) {
 
233
      type = ArgumentsAccessStub::NEW_NON_STRICT_SLOW;
 
234
    } else {
 
235
      type = ArgumentsAccessStub::NEW_NON_STRICT_FAST;
 
236
    }
 
237
    ArgumentsAccessStub stub(type);
232
238
    __ CallStub(&stub);
233
239
 
234
240
    SetVar(arguments, rax, rbx, rdx);
967
973
  __ movq(rcx, FieldOperand(rcx, DescriptorArray::kEnumerationIndexOffset));
968
974
  __ movq(rdx, FieldOperand(rcx, DescriptorArray::kEnumCacheBridgeCacheOffset));
969
975
 
970
 
  // Setup the four remaining stack slots.
 
976
  // Set up the four remaining stack slots.
971
977
  __ push(rax);  // Map.
972
978
  __ push(rdx);  // Enumeration cache.
973
979
  __ movq(rax, FieldOperand(rdx, FixedArray::kLengthOffset));
2820
2826
  ASSERT(args->length() == 2);
2821
2827
  VisitForStackValue(args->at(0));
2822
2828
  VisitForStackValue(args->at(1));
2823
 
  MathPowStub stub;
 
2829
  MathPowStub stub(MathPowStub::ON_STACK);
2824
2830
  __ CallStub(&stub);
2825
2831
  context()->Plug(rax);
2826
2832
}
3530
3536
 
3531
3537
  // One-character separator case
3532
3538
  __ bind(&one_char_separator);
3533
 
  // Get the separator ascii character value.
 
3539
  // Get the separator ASCII character value.
3534
3540
  // Register "string" holds the separator.
3535
3541
  __ movzxbl(scratch, FieldOperand(string, SeqAsciiString::kHeaderSize));
3536
3542
  __ Set(index, 0);