1 /*
2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
379
380
381
382 LIR_OpTypeCheck::LIR_OpTypeCheck(LIR_Code code, LIR_Opr object, LIR_Opr array, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, CodeEmitInfo* info_for_exception)
383 : LIR_Op(code, LIR_OprFact::illegalOpr, NULL)
384 , _object(object)
385 , _array(array)
386 , _klass(NULL)
387 , _tmp1(tmp1)
388 , _tmp2(tmp2)
389 , _tmp3(tmp3)
390 , _fast_check(false)
391 , _stub(NULL)
392 , _info_for_patch(NULL)
393 , _info_for_exception(info_for_exception)
394 , _profiled_method(NULL)
395 , _profiled_bci(-1)
396 , _should_profile(false)
397 {
398 if (code == lir_store_check) {
399 _stub = new ArrayStoreExceptionStub(info_for_exception);
400 assert(info_for_exception != NULL, "store_check throws exceptions");
401 } else {
402 ShouldNotReachHere();
403 }
404 }
405
406
407 LIR_OpArrayCopy::LIR_OpArrayCopy(LIR_Opr src, LIR_Opr src_pos, LIR_Opr dst, LIR_Opr dst_pos, LIR_Opr length,
408 LIR_Opr tmp, ciArrayKlass* expected_type, int flags, CodeEmitInfo* info)
409 : LIR_Op(lir_arraycopy, LIR_OprFact::illegalOpr, info)
410 , _tmp(tmp)
411 , _src(src)
412 , _src_pos(src_pos)
413 , _dst(dst)
414 , _dst_pos(dst_pos)
415 , _flags(flags)
416 , _expected_type(expected_type)
417 , _length(length) {
418 _stub = new ArrayCopyStub(this);
419 }
|
1 /*
2 * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
379
380
381
382 LIR_OpTypeCheck::LIR_OpTypeCheck(LIR_Code code, LIR_Opr object, LIR_Opr array, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, CodeEmitInfo* info_for_exception)
383 : LIR_Op(code, LIR_OprFact::illegalOpr, NULL)
384 , _object(object)
385 , _array(array)
386 , _klass(NULL)
387 , _tmp1(tmp1)
388 , _tmp2(tmp2)
389 , _tmp3(tmp3)
390 , _fast_check(false)
391 , _stub(NULL)
392 , _info_for_patch(NULL)
393 , _info_for_exception(info_for_exception)
394 , _profiled_method(NULL)
395 , _profiled_bci(-1)
396 , _should_profile(false)
397 {
398 if (code == lir_store_check) {
399 _stub = new ArrayStoreExceptionStub(object, info_for_exception);
400 assert(info_for_exception != NULL, "store_check throws exceptions");
401 } else {
402 ShouldNotReachHere();
403 }
404 }
405
406
407 LIR_OpArrayCopy::LIR_OpArrayCopy(LIR_Opr src, LIR_Opr src_pos, LIR_Opr dst, LIR_Opr dst_pos, LIR_Opr length,
408 LIR_Opr tmp, ciArrayKlass* expected_type, int flags, CodeEmitInfo* info)
409 : LIR_Op(lir_arraycopy, LIR_OprFact::illegalOpr, info)
410 , _tmp(tmp)
411 , _src(src)
412 , _src_pos(src_pos)
413 , _dst(dst)
414 , _dst_pos(dst_pos)
415 , _flags(flags)
416 , _expected_type(expected_type)
417 , _length(length) {
418 _stub = new ArrayCopyStub(this);
419 }
|