diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2017-06-11 07:38:05 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2017-06-11 07:38:05 +0000 |
commit | 04a3686acaa3ae6a6042beaa41745c4f6a77e276 (patch) | |
tree | 1df435310690642f8fd4628d6d16462d05ffc797 /src/builtins/builtins-global.cc | |
parent | 4928608426ecd40caa100225c58f94f7a0c17ed6 (diff) | |
parent | a938e3cdb29f70199b4dbf3a5438979f57eda327 (diff) | |
download | v8-oreo-mr1-cuttlefish-testing.tar.gz |
release-request-46bf7ca6-57e7-44b8-8edc-ea8830c1cb3b-for-git_oc-mr1-release-4090244 snap-temp-L07700000073092334android-wear-8.1.0_r1android-vts-8.1_r9android-vts-8.1_r8android-vts-8.1_r7android-vts-8.1_r6android-vts-8.1_r5android-vts-8.1_r4android-vts-8.1_r3android-vts-8.1_r14android-vts-8.1_r13android-vts-8.1_r12android-vts-8.1_r11android-vts-8.1_r10android-cts-8.1_r9android-cts-8.1_r8android-cts-8.1_r7android-cts-8.1_r6android-cts-8.1_r5android-cts-8.1_r4android-cts-8.1_r3android-cts-8.1_r25android-cts-8.1_r24android-cts-8.1_r23android-cts-8.1_r22android-cts-8.1_r21android-cts-8.1_r20android-cts-8.1_r2android-cts-8.1_r19android-cts-8.1_r18android-cts-8.1_r17android-cts-8.1_r16android-cts-8.1_r15android-cts-8.1_r14android-cts-8.1_r13android-cts-8.1_r12android-cts-8.1_r11android-cts-8.1_r10android-cts-8.1_r1android-8.1.0_r9android-8.1.0_r8android-8.1.0_r7android-8.1.0_r6android-8.1.0_r5android-8.1.0_r46android-8.1.0_r45android-8.1.0_r43android-8.1.0_r42android-8.1.0_r41android-8.1.0_r40android-8.1.0_r4android-8.1.0_r39android-8.1.0_r38android-8.1.0_r37android-8.1.0_r36android-8.1.0_r35android-8.1.0_r33android-8.1.0_r32android-8.1.0_r31android-8.1.0_r30android-8.1.0_r3android-8.1.0_r29android-8.1.0_r28android-8.1.0_r27android-8.1.0_r26android-8.1.0_r25android-8.1.0_r23android-8.1.0_r22android-8.1.0_r21android-8.1.0_r20android-8.1.0_r2android-8.1.0_r19android-8.1.0_r18android-8.1.0_r17android-8.1.0_r16android-8.1.0_r15android-8.1.0_r14android-8.1.0_r13android-8.1.0_r12android-8.1.0_r11android-8.1.0_r10android-8.1.0_r1oreo-mr1-wear-releaseoreo-mr1-vts-releaseoreo-mr1-s1-releaseoreo-mr1-releaseoreo-mr1-cuttlefish-testingoreo-mr1-cts-releaseoreo-m6-s4-releaseoreo-m6-s3-releaseoreo-m6-s2-releaseoreo-m5-releaseoreo-m4-s9-releaseoreo-m4-s8-releaseoreo-m4-s7-releaseoreo-m4-s6-releaseoreo-m4-s5-releaseoreo-m4-s4-releaseoreo-m4-s3-releaseoreo-m4-s2-releaseoreo-m4-s12-releaseoreo-m4-s11-releaseoreo-m4-s10-releaseoreo-m4-s1-releaseoreo-m3-releaseoreo-m2-s5-releaseoreo-m2-s4-releaseoreo-m2-s3-releaseoreo-m2-s2-releaseoreo-m2-s1-releaseoreo-m2-release
Change-Id: I584166e536b063d6b3f05eea3157dd0cc656bf51
Diffstat (limited to 'src/builtins/builtins-global.cc')
-rw-r--r-- | src/builtins/builtins-global.cc | 116 |
1 files changed, 59 insertions, 57 deletions
diff --git a/src/builtins/builtins-global.cc b/src/builtins/builtins-global.cc index 1fa0967a..2af6e997 100644 --- a/src/builtins/builtins-global.cc +++ b/src/builtins/builtins-global.cc @@ -2,11 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "src/builtins/builtins.h" #include "src/builtins/builtins-utils.h" - +#include "src/builtins/builtins.h" #include "src/code-factory.h" +#include "src/code-stub-assembler.h" #include "src/compiler.h" +#include "src/counters.h" +#include "src/objects-inl.h" #include "src/uri.h" namespace v8 { @@ -92,120 +94,120 @@ BUILTIN(GlobalEval) { } Handle<JSFunction> function; ASSIGN_RETURN_FAILURE_ON_EXCEPTION( - isolate, function, Compiler::GetFunctionFromString( - handle(target->native_context(), isolate), - Handle<String>::cast(x), NO_PARSE_RESTRICTION)); + isolate, function, + Compiler::GetFunctionFromString(handle(target->native_context(), isolate), + Handle<String>::cast(x), + NO_PARSE_RESTRICTION, kNoSourcePosition)); RETURN_RESULT_OR_FAILURE( isolate, Execution::Call(isolate, function, target_global_proxy, 0, nullptr)); } // ES6 section 18.2.2 isFinite ( number ) -void Builtins::Generate_GlobalIsFinite(CodeStubAssembler* assembler) { +void Builtins::Generate_GlobalIsFinite(compiler::CodeAssemblerState* state) { typedef CodeStubAssembler::Label Label; typedef compiler::Node Node; typedef CodeStubAssembler::Variable Variable; + CodeStubAssembler assembler(state); - Node* context = assembler->Parameter(4); + Node* context = assembler.Parameter(4); - Label return_true(assembler), return_false(assembler); + Label return_true(&assembler), return_false(&assembler); // We might need to loop once for ToNumber conversion. - Variable var_num(assembler, MachineRepresentation::kTagged); - Label loop(assembler, &var_num); - var_num.Bind(assembler->Parameter(1)); - assembler->Goto(&loop); - assembler->Bind(&loop); + Variable var_num(&assembler, MachineRepresentation::kTagged); + Label loop(&assembler, &var_num); + var_num.Bind(assembler.Parameter(1)); + assembler.Goto(&loop); + assembler.Bind(&loop); { // Load the current {num} value. Node* num = var_num.value(); // Check if {num} is a Smi or a HeapObject. - assembler->GotoIf(assembler->TaggedIsSmi(num), &return_true); + assembler.GotoIf(assembler.TaggedIsSmi(num), &return_true); // Check if {num} is a HeapNumber. - Label if_numisheapnumber(assembler), - if_numisnotheapnumber(assembler, Label::kDeferred); - assembler->Branch(assembler->WordEqual(assembler->LoadMap(num), - assembler->HeapNumberMapConstant()), - &if_numisheapnumber, &if_numisnotheapnumber); + Label if_numisheapnumber(&assembler), + if_numisnotheapnumber(&assembler, Label::kDeferred); + assembler.Branch(assembler.IsHeapNumberMap(assembler.LoadMap(num)), + &if_numisheapnumber, &if_numisnotheapnumber); - assembler->Bind(&if_numisheapnumber); + assembler.Bind(&if_numisheapnumber); { // Check if {num} contains a finite, non-NaN value. - Node* num_value = assembler->LoadHeapNumberValue(num); - assembler->BranchIfFloat64IsNaN( - assembler->Float64Sub(num_value, num_value), &return_false, - &return_true); + Node* num_value = assembler.LoadHeapNumberValue(num); + assembler.BranchIfFloat64IsNaN(assembler.Float64Sub(num_value, num_value), + &return_false, &return_true); } - assembler->Bind(&if_numisnotheapnumber); + assembler.Bind(&if_numisnotheapnumber); { // Need to convert {num} to a Number first. - Callable callable = CodeFactory::NonNumberToNumber(assembler->isolate()); - var_num.Bind(assembler->CallStub(callable, context, num)); - assembler->Goto(&loop); + Callable callable = CodeFactory::NonNumberToNumber(assembler.isolate()); + var_num.Bind(assembler.CallStub(callable, context, num)); + assembler.Goto(&loop); } } - assembler->Bind(&return_true); - assembler->Return(assembler->BooleanConstant(true)); + assembler.Bind(&return_true); + assembler.Return(assembler.BooleanConstant(true)); - assembler->Bind(&return_false); - assembler->Return(assembler->BooleanConstant(false)); + assembler.Bind(&return_false); + assembler.Return(assembler.BooleanConstant(false)); } // ES6 section 18.2.3 isNaN ( number ) -void Builtins::Generate_GlobalIsNaN(CodeStubAssembler* assembler) { +void Builtins::Generate_GlobalIsNaN(compiler::CodeAssemblerState* state) { typedef CodeStubAssembler::Label Label; typedef compiler::Node Node; typedef CodeStubAssembler::Variable Variable; + CodeStubAssembler assembler(state); - Node* context = assembler->Parameter(4); + Node* context = assembler.Parameter(4); - Label return_true(assembler), return_false(assembler); + Label return_true(&assembler), return_false(&assembler); // We might need to loop once for ToNumber conversion. - Variable var_num(assembler, MachineRepresentation::kTagged); - Label loop(assembler, &var_num); - var_num.Bind(assembler->Parameter(1)); - assembler->Goto(&loop); - assembler->Bind(&loop); + Variable var_num(&assembler, MachineRepresentation::kTagged); + Label loop(&assembler, &var_num); + var_num.Bind(assembler.Parameter(1)); + assembler.Goto(&loop); + assembler.Bind(&loop); { // Load the current {num} value. Node* num = var_num.value(); // Check if {num} is a Smi or a HeapObject. - assembler->GotoIf(assembler->TaggedIsSmi(num), &return_false); + assembler.GotoIf(assembler.TaggedIsSmi(num), &return_false); // Check if {num} is a HeapNumber. - Label if_numisheapnumber(assembler), - if_numisnotheapnumber(assembler, Label::kDeferred); - assembler->Branch(assembler->WordEqual(assembler->LoadMap(num), - assembler->HeapNumberMapConstant()), - &if_numisheapnumber, &if_numisnotheapnumber); + Label if_numisheapnumber(&assembler), + if_numisnotheapnumber(&assembler, Label::kDeferred); + assembler.Branch(assembler.IsHeapNumberMap(assembler.LoadMap(num)), + &if_numisheapnumber, &if_numisnotheapnumber); - assembler->Bind(&if_numisheapnumber); + assembler.Bind(&if_numisheapnumber); { // Check if {num} contains a NaN. - Node* num_value = assembler->LoadHeapNumberValue(num); - assembler->BranchIfFloat64IsNaN(num_value, &return_true, &return_false); + Node* num_value = assembler.LoadHeapNumberValue(num); + assembler.BranchIfFloat64IsNaN(num_value, &return_true, &return_false); } - assembler->Bind(&if_numisnotheapnumber); + assembler.Bind(&if_numisnotheapnumber); { // Need to convert {num} to a Number first. - Callable callable = CodeFactory::NonNumberToNumber(assembler->isolate()); - var_num.Bind(assembler->CallStub(callable, context, num)); - assembler->Goto(&loop); + Callable callable = CodeFactory::NonNumberToNumber(assembler.isolate()); + var_num.Bind(assembler.CallStub(callable, context, num)); + assembler.Goto(&loop); } } - assembler->Bind(&return_true); - assembler->Return(assembler->BooleanConstant(true)); + assembler.Bind(&return_true); + assembler.Return(assembler.BooleanConstant(true)); - assembler->Bind(&return_false); - assembler->Return(assembler->BooleanConstant(false)); + assembler.Bind(&return_false); + assembler.Return(assembler.BooleanConstant(false)); } } // namespace internal |